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.

General Comments

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:

Coursework

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:

Segway Robot Climber Robot

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.

Extracurriculars

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.

TAing

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.

FOCUS

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.

Regrets

Some things I planned on doing as an incoming freshman never panned out. This is a list of some of those things:

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.

Copyright William Ganucheau 2014-2017