--- permalink: "/posts/{{categories}}/{{slug}}" title: Why Computer Science at W&M categories: - life tags: - william - and - mary - computer - science excerpt_separator: "\n\n\n" published_date: "2020-07-11 14:58:18 +0000" layout: post.liquid is_draft: false --- Recently a rising high-school senior asked for input on what going to the College of William and Mary was like for a Computer Science degree. They were asking about the program itself as well as what it's like on and off campus. Here's what I sent to them. # Quick Intro I graduated with a Bachelor's in Computer Science from W&M in 2018. I'm a couple years in the workforce now but can still remember my experiences well enough to hopefully add my honest opinion on my time there as well as how it prepared me for my career. I will also add a little bit about my time on campus in a dorm and off-campus in Colonial Williamsburg. # Courses and Curriculum I felt very positively about the array of courses that were offered while I was a student. I took a variety of core prerequisites, just like everyone else, and a good mix of electives. The courses I took include Data Structures and Algorithms, Software Development/Engineering, Computer Organization/Architecture, UNIX Systems Programming, Computer Graphics/Animation, and Computer and Network Security. This list is not exhaustive and I'm sure they aren't all offered anymore. I was also required to take a few math classes (Calc I, II, Discrete Math, Linear Algebra, and Finite Automata). It is true that the courses listed at `cs.wm.edu` aren't all offered at the same time. And it is also true that the higher-level electives pretty much all required my core prerequisites to be completed. The result is that the electives all came in my final two years. My understanding is the curriculum is designed to give someone the best possible background in computing as a whole. A lot of the topics may seem like they would never be useful in the "real world" but I have found the opposite is true. I am an application developer at a three-letter company. My day-to-day work is building and debugging web apps, but there's been a lot more to it than that. My first assignment on the job was scraping bytes off a remote shell and writing a parser to sift through them. The level of understanding I gathered from my core classes helped more than I expected they would. I think as a whole they give me an edge at work and help me teach my colleagues about algorithms, performance, and systems administration. That being said, course registration was always nightmarish. It was very difficult to get into the limited seats in the classes I was most interested in. Eventually the heads of the department had to pass around a sign up sheet and organize every student into courses, classrooms, and professors so that seniors would graduate on time and we could all get _something_ on our schedules. I hope the shortage of teachers has caught up since I graduated. I learned from a long-time faculty member that this is largely a result of the exponential growth of incoming CS degree-seekers. The program has grown very popular in the last ten years and I like to think grads are catching on to that. # Teaching CS@W&M had neutral to good instructors for me. Some were far worse than others, as with all subjects. When I was there, lots of the older faculty were retiring and quickly being replaced with younger, newer instructors, which added to the growing pains of the program. The most important thing again was making sure there were enough teachers to teach all of the students. I know a few of my peers were very upset about what they described as a lack of communication or availability from their professors. Some have also mentioned they didn't like having to learn material on their own and wanted more to come from instruction. I don't deny that the material itself was difficult and there was a lot of hard work I had to do on my own to understand very involved concepts in intense, fast-paced courses. I think that hard work has paid off. I don't think there's realistically anywhere someone can learn about computing where they won't do any learning on their own. I am also a very visual, and hands-on learner so I suppose your mileage may vary. The most important takeaway from this for me was the ability to pick up new concepts and technologies quickly and apply them productively. The majority of professors had project-driven courses. Lots of due dates meant learning how to transform what I read or learned in class into practical applications in short amounts of time. This has become, according to those I work with, one of my greater assets. I am constantly learning new things in my career and I don't have a lecturer to explain things to me. It's very powerful to have that and I am thankful for it. It also helps me teach that knowledge to my colleagues so we can move faster as a team. # Campus I agree with my peers about the conditions of classrooms and buildings on campus. Some are old. I guess that comes with an old university but there are a choice few that haven't been kept up as best they could. Since CS is growing so fast it's also long outgrown its own offices. Classrooms are scattered throughout every academic building on campus and I probably had a CS course in at least 80% of them. That meant jumping from one side of campus to another and back again in between periods. The College itself isn't too sprawling. I am long-legged and I found I could get from one end of campus to another in fifteen minutes on foot. I rode bike a lot to get to classes where I only had ten minutes to do it. It's also pretty marshy and woodsy in a lot of areas, so during the rainy season some walking paths got muddy or flooded. Good boots required. I have never been in as good shape as when I had to do all that walking but I definitely got soaked and winded making those transitions. I appreciate history and architecture and was drawn in by the look and feel of William and Mary as a result. Without getting too romantic, it's definitely a beautiful place to attend classes. The ancient Wren building still holds classes and it's a monument to the College's tradition. However, I really appreciated the modern academic buildings on the other side of campus where all of the new construction was taking place. Modern lab equipment and the library lived there. The dorms were nothing to write home about. Lots of them were nested in the woods and built ages ago so they were a little tired and even dingy. Others are brand new and well maintained; ask around and get opinions on which ones to go for first chance you get. I made do with what I got for the first couple of years by keeping it clean and decorated. My last two years I lived in a couple of off-campus apartments. It was well worth the switch. Depending on where you are on campus you may need at least a bike to access local restaurants, shops, and the grocery store. A bike is a good idea anyway but it's not necessary for every dorm. # Colonial Williamsburg Lots of my peers didn't appreciate CW as a "college town" but I enjoyed my time there. I can't speak about parties or clubbing, I was boring and didn't do any of that. I made a great group of friends and we would walk into town to get ice cream, see historical attractions (most of which are free as a student, IIRC), and see movies or plays when we weren't studying or playing video games in the dorm. There are some good, sort-of-affordable restaurants but they're kind of driving distance. The best part about living there was meeting my wife. We would go on long walks to get away from studying and wound up seeing horse-and-carriages and the Governor's Palace and things like that. We would also escape with her car to go to some of the surrounding towns to get away to nice grocery stores and fun places to eat and explore on the weekends. I also have family in the area so it was easy for me to stop by home and say hi, although I know lots of students wanted to get as far away from home as possible. # Parting Words I don't consider myself a gung ho alumnus. There are lots of things I think could be improved, both in CS and at W&M as a whole but I do not regret my going there. There is no such thing as "everything is great" or "everything is terrible". It's not so definitive. I had my fair share of gripes and at times it strained me. There were pros and cons but I think I have a lot to be thankful for (I landed my job through W&M recruiting and the career center as well, which are fantastic resources). I cannot say "do this instead of that." I haven't gone to any other colleges and don't know enough about them to recommend them as better or worse. What I can recommend is the same path I took for folks who want to pursue a degree in Computer Science. I think you'll come away from it all the more knowledgable, resourceful, and dedicated.