Let’s talk classes! Here’s what I took my first semester and *approximately* what classes you can expect to take as a first semester freshman at Carnegie Mellon’s School of Computer Science.
07-128 Freshman Immigration Course
Every fall, Carnegie Mellon SCS welcomes in approximately 200+ incoming freshman into their program and every one of them is required to be registered for the Freshman Immigration Course (FIC). This class meets once a week every week and introduces freshmen within the School of Computer Science to the different areas and departments within the school in hopes of helping students get a better idea of what Computer Science as a field looks like and what areas within Computer Science one might want to pursue. It’s also a class where you are quite actually required to socialize and meet up with fellow freshmen within SCS to complete scavenger hunts, ice-breakers, and take selfies. Aside from this, there is practically no additional homework required for this class so it is pretty relaxing. Also, showing up for the weeks they pass out SCS swag to everyone is probably a good idea 😉
07-131 Great Practical Ideas for Computer Scientists
Great Practical Ideas for Computer Scientists (GPI) is a student taught class that nearly every SCS freshman takes their first semester to learn about basic tools, environments, and commands that they should become familiar with during their time studying CS at Carnegie Mellon. Some of the topics include Vim, Bash, and Git. It’s highly recommended that all freshman take this class because later on in the industry and more advanced classes students will very likely be expected to already be comfortable using a lot of these tools. This class has one lecture each week. The weekly lab homework is typically intended to be completed within 30 minutes, usually directly following the presentation of that week’s material. The organization of the class is also quite fun and lighthearted so it’s a relatively enjoyable time.
15-151 Mathematical Foundations for Computer Science
Mathematical Foundations for Computer Science, more commonly referred to as “Concepts” is a discrete mathematics course that almost every SCS freshman is placed into their first semester. If you’re familiar with math competitions like the AMC 10, AMC 12, AIME, etc. you’ll likely have been exposed to a significant portion of what this class covers. If you’ve never heard of these math competitions, then this class will be your first encounter with topics like induction, number theory, combinatorics, sets, functions, proofs, etc. Overall, this class served to teach SCS students some of the fundamental topics and ideas that you’ll continuously call back on in further CS classes at CMU. Every week this class meets for three lectures, two recitations, and you have one problem set due with about 6-7 problems to complete and write up formal proofs for. There definitely tends to be an imbalance of skill level and math experience in this class because there is so much overlap with math competition content, but Professor Mackey and the rest of the TA staff are all amazing and inspiring and distinctly make it their priority to get everyone up to speed and help them succeed in the class. My recommendation for this class is to always start on the homework early. You may have been able to get away with doing homework the night before in high school but it’s very unlikely this will be possible in SCS. Starting early also means that if you get stuck you can go to OH to ask questions earlier when it’s typically less crowded.
15-122 Principles of Imperative Computation
Sooo, the fancy course names end here. 122, most commonly referred to as “one-twenty-two” (don’t let anyone who says “one-two-two” tell you otherwise 😆) is an introductory data structures class primarily taught in C that covers content such as stack, queues, linked lists, graphs, runtime complexity, and more. For nearly all incoming freshman, they have the option of taking 15-112 or 15-122 if they scored a 5 on the AP Computer Science A exam. Since I was among those that received a 5 on the AP test, I opted to take 122. Although, I do have friends who took 112, which is taught in Python, who rave about what a wonderful class it was and how happy they were with gaining a solid programming background from 112 before moving on to 122. For me personally, 122 was by far my favorite class first semester, and possibly freshman year overall. Every week, there were two lectures, one lab, and one recitation. We also had a weekly written homework, that tested our conceptual knowledge of the content, coupled with a tricky programming homework that demanded us to put our skills into actual use. Debugging for this class was definitely the most time draining thing for me my first semester. One thing I definitely regret not learning earlier in the semester was to start both assignments early and split up my time working on both of them. The way due dates are spaced out, it can be tempting to plan to finish one written assignment completely before starting on the second programming one, but it is actually much more optimal to have a couple of days of working on both written and programming together so you have ample amount of time looking at the problems and finishing them. Nonetheless, I really enjoyed the course content and the challenges of the written and programming assignment. Even though I definitely did struggle somewhat in the class, I still really liked it. And I’ll be a TA for it next semester so I’m probably bias 👀
21-241 Matrices and Linear Transformations
Another class required of all Computer Science majors at Carnegie Mellon (unless you’re invited to take 242 the harder version of it), 241 is approximately equivalent to a Linear Algebra course taught at the college level. Every week there were three lectures and one recitation. We had a problem set of about 6 to 8 questions due that we had to show our work and proof for. Of all my freshman fall classes, this was definitely my least favorite. I just felt like the content and proofs that were required of us seemed somewhat dry and unintuitive compared to some of my other classes. Maybe that’s why I wasn’t destined to be a Math major? Again, this is my personal experience during my first semester. I definitely know of some people who did in fact quite enjoy the class.
16-161 Artificial Intelligence and Humanity
This was a more of an unconventional wildcard choice of a class for my first semester. I initially signed up for it thinking that I might want to be an Artificial Intelligence major at CMU within the School of Computer Science, and this class, AI and Humanity counted as one of the ethics requirements for the AI degree. This class was also a non-technical, humanities class in a much smaller sized class setting with 30 students, half of whom were from the Computer Science Department and another half from the Dietrich College for Humanities and Social Sciences. It was a very refreshing structure since this was also my only class that didn’t have almost all SCS freshmen in it. In this small class environment with two wonderful professors, we were able to have really engaging and thought-provoking conversations and discussions in class about the ethics of artificial intelligence in our community that would not have been possible in any other bigger lecture style class. The workload for this class was also quite light and predominately reading and project based, meeting only twice a week. Although I didn’t end up choosing to be an AI major, I definitely don’t regret signing up for this class, because it served as a really nice break from my more Math and CS heavy classes while still maintaining relevance on a bigger ethical scale to my field.
Overall, I only considered myself only having taken four “actual full classes” since FIC and GPI were more orientation intro type classes. I think for my first semester this was the perfect amount for me just with getting used to college-style classes and adjusting to my new living environment and community my first semester at college. I think I also learned that I greatly value having a non-technical class to help balance out my technical classes during the semester and this is something I’m keeping in mind when I plan out my schedule for future semesters.
Hopefully, if you’re a prospective CMU student, you found this slightly helpful. I will say that the courses required of first semester students within Carnegie Mellon’s School of Computer Science are definitely on the inflexible side. But, on the bright side, you get to be in all these classes with your fellow SCS freshmen and you are quite literally being required to take CS and Math courses relevant to your major and not other more miscellaneous courses!