Tips for Success in CS 2110
Many students feel daunted coming into CS 2110. It can be a challenging class because it covers a large amount of material at a consistent pace. Once the semester gets going, we keep going, moving from topic to topic every few lectures. In addition:
- The course is very cumulative, later material continues to revisit and build on earlier material. Topics at the start of the course like memory diagramming, invariants, asymptotic analysis, and object-oriented design principles play a central role in the development and analysis of data structures. Data structures that we learn about earlier in the course are used as building blocks for more complicated data structures that we will see later in the course.
- The course is designed around building higher-order thinking. While memorization may be sufficient to meet some of our learning outcomes, others require more advanced reasoning like applying techniques to develop new programs and data structures, evaluating trade-offs of different design decisions by comparing and contrasting different aspects of their performance, and developing new invariants that can help write a piece of code.
All this underscores the importance of truly understanding the material that is introduced in the course. Below, we’ve collected some advice, both from our thoughts and opinions as well as those from past TAs and students, on how to be successful in the course. As with most advice, it may not perfectly apply to you, as we all learn best a bit differently. Rather than following all of the advice exactly, use it as a guideline to reflect on how you can get the most out of the course.
Know Your Support Resources
CS 2110 has a strong network of staff who are here to help you succeed in the course! In the age of generative AI, it is all too easy to let our interpersonal connections erode. Computer Science remains a collaborative discipline, so we need to put in conscious effort to keep up those connections with people! If you're used to getting help online, you might need to go out of your comfort zone to get help from people, but it will pay off! We are here for you.- Peers – We encourage you to get to know your peers! Talk with each other about your struggles in the class. You may be surprised to find that many peers are going through the same things you are. We encourage you to collaborate on studying and practice exercises within the bounds of the academic integrity policies.
- Engaging in Lecture and Discussion Section – Even in cases where participation is not graded, there are huge learning benefits to attending all your class meetings. Get involved in collaborative, active learning exercises during class meeting times to solidify your learning gains from the readings and lectures.
- Discussion Board – The easiest way to ask a question is via the Ed discussion board. Find it under Links in the navigation bar. Ed is great for questions that have a straightforward answer. If you need help debugging, we recommend an in-person option.
- TA Office Hours – To ask a question in person, or just find a warm, supportive place to study, go to TA office hours. You can find them under About in the navigation bar.
- Instructor Office Hours – Like TA office hours, this is YOUR TIME to get help on any course content. We’d love for you to drop by and say hi and introduce yourself, even if you don’t yet have a question. You can also chat with your professors about topics outside the course, though we may prioritize course-related questions. Some students are shy to get one-on-one time with the prof of a 400 person class, but rest assured that we (your professors) are offering this time because we crave personal interaction with you beyond our time spent delivering content to an auditorium!
- Individual Tutoring – Did you know that the Cornell Office of Inclusive Excellence offers individual one-on-one tutoring at no additional cost to you? CS 2110 is one of the classes supported by this program. Request a tutor here!
- Academic Excellence Workshops – The Office of Inclusive Excellence offers a workshop to help you succeed in CS 2110. Led by peer facilitators, this is an opportunity for active learning and community building to complement the course content. It starts in the third week of the semester and counts as a one-credit course. Everyone in CS 2110 is welcome to enroll. More information here!
- Reach out if you are struggling! – Is this list of help resources overwhelming? Are you working hard and just not seeing progress? Or perhaps you have been disengaged from the course for a while and want to re-engage productively? Reach out in person or via email to your instructors, course coordinator, or TA. There’s no shame in it. We want you to succeed, and would love to talk with you to help you get on track in the course and navigate the resources available. Don’t delay. We are here for you!
Lectures
In programming courses like this one, lectures can become quite involved, including written material on slides, spoken information, demo code, polling questions, and other in-class exercises. It is easy to get lost when all this is coming at you, so it’s important to have a plan for how you’ll engage with the lecture.
- All of the lecture slides and lecture code will be posted after the lecture, so it is not critical to focus on copying all of it down (at the expense of listening). Rather, it’s better to listen along and take notes of connections or big ideas that are said or emphasized during the lecture, as this adds “color” and context to the other “drier” written materials.
- Research has shown that the act of physically writing things down (on paper, as opposed to typing) helps us recall this information better, so taking some notes during lecture is encouraged. During lecture, write down points of confusion or questions that you can look back at later. During coding demos, focus on taking notes of “why” certain design decisions were made, as this will help guide your thinking when you have to write code. During polling questions, make a note of which you got correct/incorrect and what any misconceptions may have been.
- Our lectures will largely follow the typeset lecture notes available on this website. Often, the notes will go into more detail than we can squeeze into a 75-minute lecture. Conversely, lectures afford the opportunity to ask questions and engage with the material in ways that written text cannot, so they will often include additional activities and examples. Many students ask whether it is better to read lecture notes before or after the lecture; there isn’t really a “correct” answer. We tend to prefer at least a quick skimming of the material before lecture so you will be oriented with what will be covered. Some students prefer to see the lecture material with “fresh eyes”, as the pacing of a lecture can expose the ideas more organically. In either case, we recommend carefully reading through the lecture notes after the lecture. Compare with your notes to check which topics made sense during the lecture and which will require more review. If there’s anything that seems contradictory between your notes and the website, seek clarification. If you jotted down any questions or confusion during the lecture, take some time looking at notes to address these.
- After the lecture, make sure to download the lecture code and read through it carefully. Ask yourself “Why was this part written like it was?” Can you think of alternate design choices that may have different behaviors, efficiency, etc.? Try making small modifications to the code to see what happens. Add extra print statements in the code to trace through parts of its execution you are unsure of. Try deleting portions of the code and rewriting them yourself, comparing what you wrote to the provided implementation.
Lecture Exercises
- Each set of lecture notes includes additional exercises to practice and reinforce the material. This adds up to hundreds of practice questions over the semester.
- Form a small study group to work through some exercises, comparing your answers as you go (no academic integrity concerns for these exercises, since they are not graded work). If you need help forming a group, you can use this form from the Learning Strategy Center.
- Ask about lecture exercises during office hours and on Ed discussion. This is a great way to expand your learning.
- Doing all of the lecture exercises is not a good use of time. Instead, skim over the exercises and choose the ones that will be most useful (Which skills do you need the most practice on?). Earlier exercises tend to be easier conceptual questions whereas later exercises may involve deeper thinking or larger programming tasks. Do a mix of some written and some coding exercises.
Assignments
Assignments are meant to be one of the more challenging aspects of the course, as they have the most amount of course time allotted to them. The intention is that the “struggling” (or said better, “critical thinking”) that you do on assignments strengthens your understanding of the tools that we learn in the course and makes it easier to tackle similar questions in the future (e.g., on exams).
- Many homework problems require you to expand on the ideas that you saw in lecture or discussion to solve a new problem that you haven’t considered before. If you don’t see the solution right away, don’t get frustrated. Take some time to think about the problem. Write down the ideas you’ve tried, concepts from the course that you think might apply, and areas where you got stuck. Often, we find that working on a problem in the “back of our mind” can spark ideas that didn’t come when we were actively thinking about it. Therefore, it’s important to start assignments early to budget time for this slower, more methodical thinking.
- As noted above, the value from homework assignments comes not from their solutions, but from the process of reaching the solutions. Take time to work on homework problems on your own or with your partner before turning to your notes (you won’t have these for exams), and then to office hours. While it may take less effort to go straight to office hours, this will short-circuit the learning process.
- On the flip side, it can be easy to get stuck or “think yourself in circles” when you get stuck on an assignment. Don’t be afraid to ask for help.
- After you finish part of a programming question or a written solution, the learning process from homework is not over. Step back and look at your solution, reflecting on the following questions. What tools did you use to get there? Why were those tools useful? How did you know (or would you know) that these tools would be helpful? If you were given a similar problem, would you feel comfortable solving it?
Exams
Most Cornell students are very busy and many feel a time crunch when preparing for exams. These tips can help you to study “smarter”, emphasizing the quality of your review over the quantity.
- Start your studying by “triaging” the topics. For each lecture, determine whether you feel completely confident (in which, reviewing won’t help much), fairly confident (in which some light review will be useful), or not confident (where more attention is necessary). Are there particular topics or definitions that you need help understanding?
- Take a practice exam as soon as it is released under exam conditions (on your own without any resources). This will help give a sense of what you need to review.
- Don’t read the practice exam solutions without attempting the questions first. Reading solutions can give a false sense of confidence and can be detrimental to studying. Instead, compare your answers to the solutions. Did you solve the problem in a different (but also correct way)? What did you miss or misunderstand? How would you come up with the intended solution? Do you feel comfortable attempting a similar problem?
- While practice exams give a good sense of what the real exam will be like, they are not exact replicas. Don’t focus too specifically on the practice exam problems. Rather, focus on the concepts and techniques that are used.
- Research has shown that one of the best ways to review for an exam is to take some time to write your own exam questions. This forces you to think about the content at a higher level, drawing connections between different topics and thinking about how the course learning outcomes can be assessed in a testing environment. This activity can be even better in a study group, where each person writes questions for everyone else and you come together to compare answers.
- Another effective study strategy can be writing a study guide (even when “cheat sheets” are not allowed on exams). Similar to the previous bullet, the opportunity to synthesize the material offers a new perspective, and physically writing things down on the guide engages your memory and improves recall.
- Our brains have a limited capacity to store information in our short-term memories, meaning that we can only absorb a few ideas in a single sitting, regardless of how many we encounter. It is during our down-times (i.e., sleeping) that these ideas make their way to our long-term memories, freeing up space for a couple more ideas. Under this model, doing small amounts of studying over a long period of time will be far more effective than “cramming” a large amount of studying into the period just before the exam. A couple of weeks before an exam is the best time to come up with a study schedule.
Other Advice
Ask questions
- The time in lectures and discussions is meant for your learning. If something is unclear, don’t be afraid to ask for clarification. Other students likely have the same concern, and they will appreciate that you asked.
- Come to office hours for more than just homework help. The course staff loves to chat about any of the topics from the course, and we want to hear your thoughts about them. We do not prioritize homework questions during office hours, even close to assignment deadlines.
- Ed is a great tool to continue the conversation beyond the classroom. Ask questions about things you’re confused or curious about. Feel free to respond to other students’ questions. Often, explaining things to others is one of the best ways to further your learning.
Don’t get discouraged
- Everyone comes into the course from a different starting point, but that doesn’t limit who can be successful in the end. Focus on what you can do to get the most out of the course rather than on comparing yourself to other students.
- If you feel that you are struggling, don’t hesitate to reach out for help. Addressing concerns early is the best way to stay on track in this fast-paced course. Also, if there’s something that the course staff can do to improve the course, let us know. We appreciate your feedback.