CSCI2100 Course Review
Term Taken: 2024 Spring
Instructor: Prof. Irwin King
Grading Scheme
- Written Assignments (5%)
- Programming Assignments (20%)
- Written Midterm (20%)
- Programming Midterm (30%)
- Final Exam (25%)
Textbook
- Mark Weiss, Data Structures and Algorithm Analysis in C, Addison Wesley, 1997.
- Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, Introduction to Algorithms, The MIT Press, 1990.
Review
Well, I gotta say, this is the most interesting and important course I’ve taken in my first two years of study.
The content is quite solid, like other data structures courses—abstract data types, stacks, queues, trees, graphs, etc. For the topic of graphs, most of the material actually overlaps with ENGG2440. Other than that, everything taught in this course is essential for CS students to learn and understand.
The content is quite straightforward—not exactly easy, but not too difficult to grasp either. There are many sessions for this course, and the one I took is CSCI2100A, taught by Prof. Irwin King. That’s what makes the difference. In this session, we were asked not only to learn the concepts but also to implement different data structures ourselves. As a result, programming plays a significant role in the course. The only language allowed is C, which I think is fine for most CS students since we had already learned it before.
In terms of programming, we had both programming assignments and midterms. For both, there’s a leaderboard that ranks students based on completion time and accuracy. For assignments, you have a week to prepare and are expected to submit by Monday, but the actual deadline is a week later. CSCI students are required to complete only two questions. I wouldn’t say they’re too hard, but they definitely gave me a bit of a heart attack during submission. Still, they were pretty fun overall.
The programming midterm takes place on a nice Friday night—you have three hours to solve around eight questions. If you’ve completed the programming assignments on your own, it’s not too difficult. It’s open-book, but typically all you need is your implementation code.
As for the workload, I wouldn’t say it’s overwhelming, but it definitely keeps your semester busy. There are five programming assignments and five written assignments in total, given every two weeks. The written ones are very simple—you just need to submit something and you’ll get 1 mark. So most of the time, you’ll be like, “Okay, I’ve finished the written one—time to start programming.”
More about the midterm and final: the written midterm and final are very similar to past papers, so just head to the library and find the materials. The questions aren’t that hard, but it’s easy to make mistakes with drawing tables and graphs. I remember the median for the written midterm was around 82, so it’s really not bad. The only part you need to worry about is the programming midterm. If you’ve tried LeetCode before, you’ll know what it’s like. There are three parts—A–C, D–F, and G–H—representing three levels of difficulty. Solve one, and you pass. Sounds easy, right? But still, some people can’t solve even one. The median this year was two questions, so you can imagine how tough it is. And with generative AI, some students may have used it to complete assignments without actually learning to code. But for CS students, this course is very important, because you’ll need to write these data structures yourself one day in the workplace.
The professor is really nice and funny—one of the best instructors I’ve had so far. During Wednesday lectures, he gave us brain teasers related to data structures. By the way, while I was applying for internships and taking technical quizzes, a couple of the questions were exactly the same as the ones from Wednesday lectures. Sadly, I didn’t pay much attention at the time, but what I subconsciously remembered helped me pass that quiz and get the offer (though I declined it). So this course is really helpful—not just for its content, but also for those warm-up questions.
Overall, I’d say the time you spend on this course is totally worth it. Take the course—even though the professor might jokingly ask you to drop it in the first few lectures!
Resource
I have something else that I think I can share with you.
Programming assignment solutions
Due to copyright, I cannot provide the questions here.
Some Midterm Questions
These are just the programming midterm questions for this semester.
- Clap at 7
- Binary Queue Operations
- Reverse String
- Path in ZigZag Labelled Binary Tree
- Merge Intervals
- Ugly Number
- Burst Balloons
- The Skyline Problem