Is CS 121 a good fit for you?¶
If you are thinking about taking CS 121, we want to make sure you make an informed decision before registering for this class. We have prepared this page to give you a better sense of what to expect in CS 121, as well as a few thing to consider depending on your background and interests.
The pace and workload of CS 121
Since CS 121 is intended for non-CS majors, a lot of people assume it is a watered-down version of the introductory sequence for CS majors, or that it moves through the material at a leisurely pace.
Instead, CS 121 is designed to be an accelerated introduction to computational thinking and computer programming for non-CS majors. CS 121 moves very fast and covers a lot of ground in ten weeks. It also involves doing programming assignments that can be very time-consuming.
For some students, this approach is a great fit: after just one quarter, you’ll gain a very useful set of skills that most students are able to start using immediately after completing CS 121. However, if you are looking for a more low-key introduction to programming or to computer science, other classes may be a better fit for you (we include a list of such classes at the end of this page).
Caveats for students without any programming experience
CS 121 does not assume any prior knowledge of programming, and the course materials are designed to introduce programming concepts from scratch. So, you are welcome in CS 121 even if you have absolutely no prior programming experience. However, as noted earlier, the class moves at a very fast pace, so the learning curve can be pretty steep if this is your first time doing any programming.
Even so, we firmly believe you can succeed in this class and we will do everything we can to get you to the finish line. However, if you are coming into CS 121 with no prior programming experience, we do recommend that you do not take more than two other courses along with it, to make sure you have plenty of time for CS 121’s coursework. It is also important that you ask for help whenever you get stuck or have trouble understanding anything we cover in class.
We do realize some students come to this class with some prior exposure to programming and, if you are a complete beginner, it can be frustrating to see those students breeze through assignments that you are struggling with mightily. You may also end up asking for help more often than those more experienced students, but that doesn’t mean that there is anything wrong with you or that you cannot learn how to program: those other students are just playing the CS 121 videogame on easy mode! When you get stuck, we encourage you to always ask for assistance (at office hours, through Piazza, at discussion sessions, etc.) All questions, no matter how basic, will always be answered respectfully.
Computational thinking
As we will stress in the first lecture of the quarter, CS 121 is not a “Python class”. The primary goal of this class is not to teach you programming, but rather for you to learn how to think computationally. To be clear, this class does involve a lot of programming but, to be able to solve problems computationally, you will need to learn about a completely different way of thinking about those problems, which can be challenging. It also means that you are going to be evaluated on aspects of your code you may not expect to be evaluated on: whether your solution is efficient, whether the design of your solution is adequate, whether your code follows a specific coding style, etc.
So, if you are someone who just wants to learn a bit of Python, CS 121 might be overkill for you. If, on the other hand, you want to build solid computational problem solving skills, where we happen to use Python as a convenient language to teach those skills, then CS 121 may be a good fit for you.
Alternate classes to consider
If you think CS 121 might not be a good fit for you, here are a couple of other classes you may want to consider taking:
CMSC 11111 – Creative Coding: This course is an introduction to programming, using exercises in graphic design and digital art to motivate and employ basic tools of computation (such as variables, conditional logic, and procedural abstraction). The class involves writing code in JavaScript and related technologies, and working with a variety of digital media, including vector graphics, raster images, animations, and web applications.
CMSC 11800 – Introduction to Data Science I: If you are taking CS 121 because you are interested in working with data computationally in your own field, CS 118 may be a better fit for you.
While CS 121 can certainly be useful to someone who wants to work with data, our goal is to provide you with a much more general set of concepts and skills: those related to solving problems computationally. On the other hand, the primary focus of CS 118 is working with data, and specifically by using computation. So, CS 118 goes into data analysis topics, toolkits, etc. in much more detail than CS 121 (but you still walk away from CS 118 with some Python skills, even though that is not the primary focus of that class)
Another way to think about this is the following: in CS 121, computational thinking comes first, and data comes second; in CS 118, data comes first, and computational thinking comes second.
BUSN 20550 – Application Development: If you are interested in learning how to program specifically to develop apps, this Business Economics class may be a much better fit for you. In this skills-focused class, students learn the basics of programming while developing their own web app using Ruby on Rails.
Please note that, if you are planning to pursue a CS major, you should be taking CS 151 instead. While CS 151 is not taught in Python, and may feel like a less applied class, it is much more effective at laying the foundations you will need to take more CS classes. If you are planning to do a CS minor, either CS 121 or CS 151 can be taken as your first intro class.