How to Succeed in CS251

As the CS251 course staff, we try our best to deliver a special learning experience to the students. And an important part of this is to maximize learning outcomes while keeping the time-on-task at a reasonable amount. You do not need to spend an enormous amount of time and display a herculean effort to do well in the course. And such heroic efforts do not always translate into success. The key is to work and manage your time wisely. We expect you to follow certain good habits that will significantly improve the quality of your experience in the course, and in particular, help you achieve more in less amount of time.

The purpose of this document is to lay out what these good habits are. The suggestions you will find in this document don’t just reflect the opinions of the course staff, but also the opinions of hundreds of students who have taken the course before you. We will work with you throughout the semester to help you follow these suggestions and do well in the course. And we hope that you will work with us, as well as each other, to create a strong and productive community of learners.

Understand the Structure of the Course

It can be easy to both overstate and understate the importance of lectures in your learning experience.

First, do not expect to learn and digest everything you need to know about a topic during the lectures. Lectures have limitations. With well over a hundred students with different backgrounds and learning styles, and with only 160 minutes of lecture time each week, we cannot, and do not try to, present every detail you need to know during lectures.

On the other hand, lectures serve an important purpose. During lectures, we introduce you to a new topic by setting the stage and providing the appropriate background and motivation. One of our main goals is to try to give you our insights and present an angle that is not easily found anywhere else. The focus is on the intuition and the big picture rather than the details.

Course notes

In a sense, the course notes are opposite of the lectures. They do not contain much motivation and they don’t try to provide intuitive explanations. The notes collect all the definitions, theorems and proofs, written formally and in detail. The information that was skipped or glossed over in lectures is presented in the course notes. And the level of detail found in the proofs in the notes is the level of detail that we expect from you in the homework assignments and exams.

In addition to collecting the main definitions and results that you are responsible for, the notes contain exercise problems and solutions to help you understand the material better and prepare you for the homework.


Recitations try to address some of the shortcomings of lectures by providing a more personalized learning experience. In order to achieve this, we keep the recitation sizes as small as we can and offer three different options of recitation style. Furthermore, one of your recitation TAs will be your mentor, which allows them to keep track of your progress more closely and offer personalized help if needed.

Homework assignments

Arguably, homework assignments are the most important component of the course. You are most engaged with the material when you are trying to solve the problems. You will hit walls, and trying to overcome them will lead to a deeper level of understanding and learning that cannot be achieved through lectures or recitations. In addition to learning the content and developing your problem solving skills, the homework assignments will teach you how to cooperate with others as well as how to express yourself clearly.

An interesting aspect of the homework assignments is that they will contain questions that are not similar to any other question that you have seen before. This is by design, because it is important that you learn how to deal with problems that are completely new. And the only way to improve this skill is to actually have practice with it. Even though you may not be used to this style of learning from your pre-college education, it is (or at least should be) pretty typical in higher education.

How to Allocate Your Time
Focus in lecture

As discussed above, lectures are important. However, they are not perfect and have some disadvantages. It is extremely hard to keep focused for 80 minutes, especially if you are listening passively. Therefore you should do whatever you can to help you concentrate for that period of time. Remove all distractions. It is well known that humans are terrible at multitasking, so please don’t try it. And to keep you active during lectures and maintain your focus, take notes! To assist you in taking notes, we will distribute handouts.

Come prepared for recitation

Recitations can really be useful and productive, if you come prepared for them. This means that you should be studying the course notes before you come to recitation. Otherwise, you may not follow the discussion during recitation and an hour of your time will be wasted. Not only that, it is not clear if you’ll be able to make up for what you have missed later on by yourself. Recitations form a bridge between the technical content presented in lectures/notes and the homework problems.

Review the notes

The course notes are an absolutely essential component of the course. Everything is laid out for you formally and at the level of detail that you are expected to know them. We cannot overstate how important it is to have a good grasp of the definitions, theorems and proofs. Let’s try to explain through an analogy.

Consider playing a game like chess that has a strict set of rules specifying exactly what the allowed moves are. If you do not know the rules, not only will you not understand what is going on when others play the game, but you will be in a completely hopeless situation if you tried to play the game yourself against an opponent.

Similar to chess, math has strict set of rules that are specified by logic and the definitions that are given to you. If you do not understand exactly what a definition says, then it will be like trying to play chess without knowing all of its rules. Every now and then you may get lucky and win against a weak opponent, but you will have no chance against a serious challenger.

Carrying the analogy further, every time you read and understand a theorem and its proof, it is like learning how a master chess player is able to beat their opponent in a game. Learning about the strategies and the techniques involved allows you to employ the same or similar methods to beat your opponent in a future game.

When you are studying the course notes, first make sure that you fully understand every definition. Second, when you are going over a proof, make a note of the one or two important ideas that make the proof work. You do not need to remember all the details of a proof, but you should know the main ideas so that they are in your arsenal if you ever need them.

How well you study the notes on a weekly basis will have a major impact on how much you learn, how much time you spend on the homework, how well you do in the homework, and how well you do in the exams!

There is another extremely important point that we need to make here. “Studying/understanding the material” is subjective and will mean different things to different people. Being able to regurgitate definitions and proof templates is far from sufficient to succeed in the course. Our expectations for what it means to understand a topic go much further than that. We highly recommend the Feynman technique to learn a topic:

  1. Pretend that you are teaching the topic to a classmate who has never been exposed to it before. (You can also pretend that you are teaching to a much younger person. This will force you to explain things in much simpler terms and help you understand things even better.)

  2. As you are explaining the topic, make a note of things that you are unsure about and things you feel you did not do a good job explaining. Anticipate questions from the other person and make a note if you are not sure about the answers to those questions.

  3. Go back to the source material and/or go to office hours to close the gaps in your knowledge that you have identified in the previous step.

If you are not able to comfortably explain a topic in simple terms, that is a clear indicator that you do not understand it well enough and that you need to spend more time reading and thinking about it.

Approaching the homework the right way

There are 4 mistakes you can do when approaching the homework.

  1. Starting the homework before reviewing the notes: If you start the homework before you complete reviewing the notes, you will have gaps in your knowledge, and this will result in loss of time, frustration, headaches, and low grades. Furthermore, you will not be able to contribute to group discussions in meaningful ways and may confuse your group-mates.

  2. Putting quantity over quality: When it comes to solving the homework problems, quality trumps quantity. It is important that when you solve a problem, that it is completely solved and that you get 10 out 10 on the question. It is better (both in terms of your learning experience and your overall grade) to do this and leave a question in the homework completely untouched than half-solve all the questions in the homework.

  3. Not learning from your mistakes: After the homework is due, in a couple of days, you will get your homework back with feedback from the TAs. If you do not learn from your mistakes, you are likely to repeat them in future homeworks and exams. So do learn from your mistakes. Discuss them with your mentor if you would like to get more detailed feedback as well as suggestions on what you can do better next time around.

Know when to get help

Always keep in mind that as the course staff, we are dedicated to support you and help you do well in the course. So do not hesitate to reach out to us with any questions or concerns. If you are stuck on a homework problem, ask for help. If you do not understand what is covered in lectures and notes, ask for help. If you feel like you are falling behind, ask for help. If you need suggestions on managing your time, or anything else, ask for help. We are here to help!

Know when to figure things out on your own

The antithesis of knowing when to get help is knowing when to stop getting help and figure things out on your own. Ultimately our hope is for you to stand on your own feet without relying on others.

To give some specific suggestions, first, make sure that you have a good group dynamic and you are not letting your group-mates do all or most of the work. Second, in the context of getting help from the course staff regarding a homework problem, keep in mind that we are happy to help you out when you are stuck, but as long as there is space for you to explore on your own (or with your group), you should do that exploration yourself and see where it leads you. See the section on “How to ask questions” in the course syllabus for more details on when and how we suggest you ask questions.

Know when to let go

It is important to have a good sense of when it is time to move on after spending a reasonable amount of time on a problem. For instance, do not burn 10 hours on a single question of the homework. This is not the most productive way to spend your time. If you are stuck and are not making progress, that is the time to get help. Go to office hours, and we’ll help you get unstuck. And if you have not been able to solve a problem even with the help you have gotten, that is OK! Just put it aside and make sure to learn how to solve it later in a solution session or office hours. We do not necessarily expect you to solve every single question in every homework. Some questions are going to be hard, and as long as you have given an honest effort, you have done your part and have learned a lot in the process.

Find a group that suits you

You will be spending a lot of time with your group, and our hope is that you will be learning a lot from the interactions with your group members. Therefore it is really important that you have a good relationship with your group-mates and you feel you are getting the most out of working with others. Don’t hesitate to break up with your group if it is not working for you. At CMU, we are a community built around education, and everyone in the community has a responsibility to contribute to others’ education. In CS251, you have a responsibility towards your group-mates. Just like you depend on your group members to do well in the course, your group members depend on you to do well. Be considerate, patient and understanding, and try your best to make your interactions productive and fun.

Here are some concrete suggestions for group work:

  • Set up times you can all meet and set some expectations about the duration of the meetings. You should commit to attending all the meetings. Your group depends on you just like you depend on your group.

  • Start by reviewing Check Your Understanding questions from the textbook. Be open about the things you don’t understand well. And try your best to help your friends understand things better.

  • Group meetings need not be limited to homework discussion. Consider meeting with your group to go over topics conceptually and help each other out in filling in the gaps.

  • Brainstorm ideas for each GROUP problem in the homework together. You are meant to solve these problems together.

  • After you believe a problem is solved, write up your solutions individually. If there are bugs, they will likely emerge in this phase.

  • Attend office hours together.

  • Find a good collaboration platform that works best for your group.

Prepare for the exams the right way

How well you perform on the exams largely depends on the studying you do on a weekly basis rather than the cramming you do a few days before the exam. So if you follow the advice in this document, there won’t be much else that you need to do to prepare yourself for the midterm exams and the final. As an added bonus, you can treat the weeks corresponding to the midterm exams as some time off from the course as you won’t be getting a homework assignment those weeks.

That being said, when it is time to do some review for an exam, we recommend doing the following, in the given order:

  1. Go over the definitions, theorems, proofs and exercise solutions in the notes. Make sure you have a strong conceptual understanding of the material that you are responsible for and there are not any gaps in your knowledge.

  2. Go over the homework and recitation problem solutions. Remember the techniques involved in these solutions.

  3. We will be posting practice exam problems before the exam. Try to do as many of them as you can. This is a good way to see if there are still gaps in your knowledge. Even if you do not have the time to solve every problem, make sure you know what the solutions are by going to solution sessions and asking us in office hours.

Keep at it

The semester is long and the CS251 train keeps moving. Things accumulate fast. If you slack off one week, you will find it hard to pick up the slack the following week. Therefore, it is important to be on top of things every single week. If you ever feel like you are falling behind, immediately contact us so we can help you get back on track.

Embrace the Challenge

Math is hard! Our brains did not evolve to be good at math and abstract thinking. We all struggle with it. The great mathematician and scientist John von Neumann said: “In mathematics you don’t understand things. You just get used to them.”

The computer science curriculum at CMU is also hard! It is designed to be challenging. True learning happens when you are challenged and your mind is stretched in ways it has never been before. Our hope is to propel you to greatness. And greatness can only be achieved through hard work.

Understanding the challenge is the first important step. Embracing the challenge and getting pleasure from growing intellectually and socially comes next. Adopt a growth mindset (see figure at the end of the document). Your intelligence and abilities can grow through hard work, and grit will be the most important factor in your success.

Focus on Your Own Growth

Everyone has different backgrounds, different interests, different strengths and different weaknesses. Comparing yourself superficially to others will neither be accurate, fair, nor meaningful in any way.

Since you are here at CMU, that means we believe that you have something valuable to offer to the world and have the potential to do great things. On the other hand, that does not mean that you are all the same, with the same strengths and interests.

When a student comes to us with doubts about their abilities to do math, it is similar to someone telling us that they think they cannot play basketball because there seems to be others who are taller than them. First, you are taller than you think you are! Second, sure, height is a factor in playing basketball, but if you think it is the only thing that matters, you clearly have not seen the two-time NBA MVP Steve Nash play the game. Just like basketball, math and sciences are complex fields. People with wide-ranging skills can make significant contributions to these areas. All the famous scientists and mathematicians in the world have different strengths and styles that make them great in their own unique way.

If you do fall in the trap of comparing yourself to others, know that you can never be truly objective about yourself. So instead of superficially and inaccurately comparing yourself to others, work hard to be the best version of yourself, and work hard to make everyone around you better. Success is a team sport, and we are all on the same team here.


The details are important, but lectures are not the appropriate place to discuss them.
Even though the course notes do not contain intuitive explanations, it is usually better if your proofs include some level of intuition and motivation on top of the formal argument. See the “Guidelines for Writing Proofs” document for more details.
Pre-college education tends to focus on teaching you algorithms to solve specific problems, and tests you on how well you can follow those algorithms.
Note the difference between helping you get unstuck, and giving you hints. We will not rob you from the experience of figuring things out yourself and the learning and satisfaction that comes from that.
Steve Nash is 6ft 3in, which is higher than the average of the population, but most NBA players are taller than him, and many are significantly taller. Plus, Nash is not very athletic either.