My Time at CMU
This weekend I will walk across the stage to receive my diploma for completion of my Bachelor’s degree in Computer Science from Carnegie Mellon University. In light of this, I thought I’d take some time to share my experiences, to give a taste of what the past three years of my life have looked like, for anyone who may be interested.
It’s hard to compare CMU to other universities, mainly because I haven’t attended any other universities. Instead, I’ll avoid comparisons and just list some observations:
- The campus is great. This was actually a major factor in my college decision making process. The campus is small, self contained, super well maintained, and beautiful. Of course, I benefitted from the fact that the CS buildings are some of the nicest on campus, but it really does apply to the campus as a whole. I loved the fact that I could just about walk between any two of my classes without having to be outside for more than 30 seconds, max. This was especially useful during Pittsburgh winters.
- There is a culture of interdisciplinarity (I may have made that word up). I think just about everyone I’ve met is deeply interested in some subject in addition to the one they’re majoring in. The founder of Mellonheads, the club for just about anyone interested in hackathons, is a cognitive psychology major. There’s a whole degree program for a combination of arts and technology. I think this is one of the things that makes CMU so interesting
- It is stressful. These past three years have, by far, been the most stressful years of my life, though I haven’t lived many years. Many people will say that CMU has a “stress culture.” I don’t know if I agree with that; maybe it was true once, but in my experience, I’ve never met anyone who encouraged others to be stressed out. It’s not an accomplishment to pull an all-nighter, even though they definitely happen. Instead, what I will say is CMU teaches you how to deal with the stress. Or at least, it taught me. Though I’m proud to say that I made it without ever pulling an all-nighter (for school work), and fairly consistently getting 7+ hours of sleep per night. That said, I didn’t have much of a life outside school.
I’ve taken so many interesting classes at CMU. I’ve invented a languge, I’ve written an operating system from scratch, and I’ve built super cool robots. To avoid going on for too long, I’ve chosen a few particularly interesting/difficult courses that I feel are representative of the coursework here at CMU.
Principles of Imperative Computation (Freshman Fall)
This was my very first CS class at CMU. I took it with Tom Cortina, who is an absolutely wonderful professor and human in general. This class is basically an intro to “C” (In quotes because most of the class is taught with a safer derivative of C called C0) with the very Carnegie Mellon-twist of focusing on proving correctness of programs. The class introduces the concepts of preconditions, postconditions, loop invariants, and basic data structures like stacks and queues. It’s probably equivalent to most colleges’ intro CS courses, but with a greater focus on correctness and proofs. I ended up TAing this course for a year which was a lot of fun.
Great Theoretical Ideas in Computer Science (Freshman Spring)
HERE WE GO. This is that course. The hard course. The one where exam averages are in the 50s and no one except that one kid that sits in the front actually knows what the hell is going on. I took this class with Ada and O’Donnell (also really great professors). The bulk of this course is CS theory: Turing machines, finite automata, graph theory, etc. It doesn’t go too deep into any one topic, but given that most of the people in the class have no experience with any of it it feels like being thrown into the deep end. The problem sets consistently took 12+ hours a week. It sucked. Coincidentally, this class is also how I met the person who would become my roommate for the next 2 years. The shared misery brought us closer together.
Operating System Design and Implementation (Junior Fall)
This is widely touted as one of the most difficult CS courses at CMU. It is one of several that fulfills the Systems Elective requirement of the curriculum, so many people don’t take it. I couldn’t resist, however, and I regret nothing. The semester I took it, the course was taught by Dave Eckhardt and Dave O’Halleron. This course is composed of roughly 4 major projects, the largest of which being the design and development of a multi-threaded Unix-like operating system from scratch. I think I learned more in thise course than I did in any other CS course at CMU. The biggest takeaway for me was that nothing is magic under the hood of operating systems. I won’t claim to know how everything works, but I have a much better understanding of how it could work, because I did it. Another great benefit of taking this course is that my debugging skills are easily 10x better than they would have been without it. For anyone at CMU reading this and trying to decide if they should take this course, you should. It will make you a better programmer.
Introduction to Robotics (Junior Spring)
This is one of the required courses to graduate with a minor or additional major in robotics (I did the minor). It is taught by Howie Choset. I have many negative things to say about this class. For one, I think it tries to do too much and therefore accomplishes very little. The scope of the class is broad: path planning, computer vision, localization, mechanical design, kinematics, and more are all covered in the semester. As a result, you only get a very high level overview of any particular topic, and don’t really learn as much as I’d like. In addition to the theory portion of the course, there are weekly labs that involve building robots to accomplish various tasks using the Lego NXT kits. Some of my group’s robots are shown below:
Most of the difficulty of this class comes from the short deadlines caused by the extreme breadth of the course. It is a time consuming and very frustrating class but not a particularly intellectually stimulating one. That said, the TAs do an excellent job at making the course a little bit less miserable and are perhaps the course’s single redeeming quality. Playing with Lego is also fun, but not for 15 hours a week.
Planetary Robotics Lab
One of my main reasons for attending CMU in the first place was because it boasted a high number of undergraduates involved in cutting edge research, and I wanted to be a part of that. Just a couple of weeks into my freshman year, I started reaching out to professors about potentially working in their labs. I was lucky enough to get a response from Red Whittaker who is famous for many things, such as leading the CMU team to victory in the DARPA Urban Challenge. When I met Red, he invited me to participate in the Planetary Robotics Lab, which was working on an extremely small lunar rover in pursuit of the Google Lunar XPrize. During my three years working with Red, I went from a novice just trying to wrap my head around all the work being done to leading the Avionics/Software team on three iterations of the rover. This was perhaps my most rewarding experience at CMU. I learned so much, and now, when some iteration of the rover lands on the moon in a few years time, I can say that I was a part of it, which I think is pretty cool. Below is a video showcasing Tetramorph, the first rover I worked on. It’s not shown in the video, but it can actually fold up and fit inside a 30cm cube and then deploy itself to the form shown in the video.
Something else that is unique at CMU (at least based on what I’ve heard about other universities) is that students make up the majority of the course staff for core courses. I was a Teaching Assistant for Principles of Imperative Computation for two semesters, along with about 15 of my peers. As a TA, I held regular office hours and lead recitations along with hands-on labs. This was super rewarding for a multitude of reasons.
- I had the opportunity to make a serious impact on others’ experience at CMU. I would often have students come in to office hours frustrated by a bug they’ve been working on for hours or not quite grasping a lecture concept, and I got to help them work through it until it clicked. That alone is an awesome feeling. I was able to encourage them and help them deal with the stress, and I’d like to think that I was able to significantly improve at least once person’s experience in the course.
- I got an inside look into how a typical course is run, and what the hiccups or difficulties are. This made me appreciate all the courses and teachers I’ve had in my life because now I know that grading, and teaching in general, isn’t as easy as I thought.
- You don’t really understand something until you have to teach it. When I took the class, I passed with an A, but I learned so much more from teaching than I did from taking the course. Being the first class on data sturctures and algorithms, increasing my mastery of those topics will definitely help me in the long run.
FOCUS is the Fellowship of Catholic University Students. I’ve been Catholic my whole life and immediately sought other like-minded students on campus. What I found were 4 dedicated missionaries who invited me to join bible studies, participate in discipleship, and just hang out with other Catholic students at Carnegie Mellon. I think without this connection, I could have had a rough time not just in my faith life, but in my every day life. The Catholic community at CMU provided a solid group of friends and a sense of community that I don’t think I would have had otherwise.
Recruiting and Internships
One thing I didn’t really expect going into CMU was the extent to which major companies recruit on campus. The moment that sticks out the most to me was during finals week my freshman fall when Microsoft hired professional masseuses to give free massages to CS students. This is an extreme example, but almost every other week there is some company set up in the CS building offering T-shirts or cookies or coffee, or other random swag in exchange for resumes or conversation with a recruiter. After my freshman year, I applied to several companies including some bigger ones (Google, Microsoft) and some smaller random startups, but didn’t get any offers (I got interviews for about half). After my sophomore year, I applied to fewer companies, but got an offer from every company that gave me an interview: Google, JPL, and Narrative Science. I ended up accepting JPLs offer and spent the summer working on path planning algorithms for the Mars 2020 mission.
Some things I planned on doing as an incoming freshman never panned out. This is a list of some of those things:
- I never attended PennApps. Hackathon culture at CMU is huge, and I was really involved for a year or so, serving on the board of Mellonheads, the primary club for all things hackathon. Despite this, I never made it to PennApps, the world’s largest collegiate hackathon. The reason for this is mainly that I could never convince myself I had the time to go. My weekends were precious for getting work done, and it was hard to give them up. I did make it to a hackathon hosted by CMU on campus, which I’ve written about, but I never made it to “the big leagues”
- I never painted The Fence. The Fence is a tradition at Carnegie Mellon. In the heart of campus, The Fence has been painted hundreds of times by the students. On campus organizations “take the fence” to promote upcoming events or just for fun, completely covering the structure in a layer of paint between the hours of midnight and 6am. Unfortunately, this was a tradition that I never got to be a part of.
- I never participated in Buggy/Booth. Carnival is pretty much the only “party weekend” for CMU. THe weekend is filled with fun including Buggy, in which teams race their aerodynamic vehicles at high speeds around campus, and Booth, in which campus orgnanizations build large, often multistory structures for viewers to walk through and admire. It’s a fun weekend, but participating in either event is a huge time commitemnt and my time was precious.
All in all, most of these come down to me not wanting to give up my time. I’d urge those who come after me to be less of a Scrooge and have a little fun. You’ll regret it if you don’t.
Life After College
I graduated from CMU in 3 years and acquired about $90,000 in student loan debt. I accepted a job at ASV Global where I’ll be working as a software developer for their autonomous boats. I ended up with ASV for a variety of reasons, not least of which being that they have an office back in my home town of Lafayette, Louisiana. I’ve been wanting to go home for a while now to be around family, and the cost of living is also much, much lower compared to Silicon Valley. The downside is, of course, my salary is lower compared to what I’d be getting in Silicon Valley, but that’s a small price to pay for the comfort of being at home.
All in all, I’ve enjoyed my time at Carnegie Mellon. I hope this has given some insight into what life is like there for prospective students or others. With this chapter of my life closed out, I look forward to the many adventures that lie ahead, knowing that Carnegie Mellon has prepared me well.