Your guide to surviving CS 251, Data Structures. A UIC computer science student gives 7 helpful tips.
It’s no secret that CS 251, Data Structures, is likely one of the most challenging CS courses you will encounter at UIC. At the same time, data structures are the building blocks of CS. Almost every technical interview will test you on the fundamentals you will learn in this course. Without prior knowledge of data structures, it’s hard to land internships, as most require understanding of structures like arrays, vectors, maps, hash maps, trees, and graphs.
Some higher-level courses may be less challenging than this one, but they require a strong understanding of the material in this course. So, how do you get the most out of this challenging course? Here are 7 tips:
1. Get help outside of class.
Throughout CS 251, you will typically complete 7 biweekly projects, biweekly quizzes, ZyBooks homework, weekly labs, 3 oral exams, and a final exam. Projects can be challenging, but they’re not impossible. Figuring out where to start is always the hardest part, and that’s why I would encourage you to go to office hours.
But before you show up to office hours, make sure you understand your code. Many TAs will begin sessions by asking you what you’ve done so far to debug. The more you have already tried, the more help they will be willing to give.
2. Take advantage of jumpstarts.
Projects are usually assigned at the beginning of the week. You’ll receive a PDF explaining all required milestones and a “jumpstart”. These jumpstarts give incredibly helpful hints. The slides usually give you a timeframe of what will be required of you each day and how to start each milestone.
Some students might argue that jumpstarts encourage laziness when it comes to strategizing a starting point. But I think it’s always best to try it yourself first, without any hints, and then turn back to the jumpstarts if you get stumped. As I mentioned, milestones can be tricky to start, but the jumpstarts always give you something to start with (i.e. code snippets, recommended structures, or algorithms).
3. Use videos.
Zybooks is a useful tool. The animations break each algorithm into steps. If you like videos, I strongly recommend checking out Professor Reckinger’s lectures. Regardless of who is teaching your section, her videos can be a great supplement to the course, and some students have even found them more useful than in-person lectures.
4.Don’t rush through quizzes.
Quizzes are usually on topics from the slides explained in class or Professors Reckinger’s videos. They are mostly on theory rather than coding and can be worth a big chunk of your grade. These quizzes can be challenging, but don’t panic. There’s no need to rush through them, as they are not timed.
5. Form a lab group.
Labs usually consist of a set of coding problems that should be completed within an hour, but they sometimes involve algorithms such as Dijkstra’s algorithm or tree traversals.
I strongly recommend finding a lab group. Labs get more difficult throughout the semester and are meant to be a team effort. So, if you think you’re better on your own, think again. It never hurts to talk through your thought process with a group of classmates.
6.Do LeetCode problems outside of class.
The oral exams are similar to midterms, but they test your skills orally. You will be given a LeetCode question and asked to explain your thought process. Getting the right answer is never the goal. It’s all about successfully explaining how you would approach the problem. To prepare for oral exams, I recommend doing LeetCode practice problems throughout the semester. Always start with the easy ones so that you don’t get discouraged and then move onto the harder ones.
7. Don’t neglect your final exam.
The final exam is essentially a longer version of the quizzes. It is usually given during finals week online or in person, depending on your professor’s preference and the university’s current guidelines.
To prepare for this exam, I recommend reviewing slides and resolving any mistakes you made on previous quizzes. If you still don’t understand a particular quiz problem, I encourage you to go to office hours, as these concepts not only are going to be repeated in the final but also in almost every technical interview you will have.