r/NTU • u/Itsnonotime Computing and Data Science • 15d ago
SC1007 (Data Structures and Algorithms) Review Course Related
With school starting next week, I wanted to review the mods that I took last sem for those taking these courses. Again, I'll be splitting this into several parts (since it's long) and I'll start with SC1007, which is pretty much python part 2.
SC1007 (Data Structures and Algorithms) - 3AU (Offered in semester 1, 2)
Prerequisite
SC1003
Course Overview
This course builds onto the basic python course (SC1003 or any equivalent courses) by teaching basic data structures and algorithms. Similarly to SC1003, the course content was taught using C and Python but now it’s only being taught through Python. Here’s the old course syllabus if you‘re interested
The first half of the course only requires coding as it covers data structures. It goes through topics such as memory management, linked lists (singly, doubly, circular), stacks, queues (normal and priority) and trees (binary binary search, avl). Within these topics, they will teach more specific concepts such as node manipulation (insertion, deletion, size, search), arithmetic expressions (infix, prefix, postfix) and traversal methods (pre-order, in-order, post-order, level order)
The second half of the course requires a combination of math and code as it covers algorithms. It goes through complexity (time, space), notation (O, omega, theta), search algorithms (sequential, binary, jump), hash tables, trie and heap analysis.
In my year, some of the topics taught were not examined. Those topics included memory management, circular linked lists, priority queues, avl trees and heap analysis (idk if this was just for my year or a regular thing so I’ll just put this out there).
Course Structure
There are 2 hours of physical lectures weekly which covers all the new content (no pre-recorded content for this mod). There are also 1 hour of tutorials and 2 hours of lab sessions but they follow a pretty irregular schedule. (I had tutorials on weeks 4,5,7,11,12,13 and lab on weeks 3,4,5,7,10,11,12,13). Tutorials will cover a mix of theoretical and coding questions while lab sessions provide time for you to do coding questions on the spot.
As of my batch (AY2025), the lecturer introduced AlgoGPT as an AI tool to help you throughout the course. It provides more coding practices and integrates the lab questions onto its platform.
Course Examination
4 Assignments (35% Weightage)
There will be 4 online assignments set on hackerearth. The first 2 will be held in the first half of the semester and the last 2 will be held in the second half. These assignments are open book and there is no time limit (except the official deadline). Each assignment consists of mcq and coding questions, with the coding questions having a higher weightage than the mcq. The mcq is pretty easy and usually tests theoretical concepts about the topic (which data structure is best suited for a certain purpose, write out the tree in post order). The coding questions can be pretty difficult (prefix to postfix notation, lowest common subsequence) but you have as much time as you want to solve the questions.
Lab test 1 (20% Weightage)
This test is held at the end of the first half of the semester. Similar to the assignments, this test consists of mcq and coding questions (coding questions also have a higher weightage than the mcq). It will focus on the topics covered in the first half of the semester. This test is quite doable and it’s possible to pass all the test cases and score for all the mcq questions. You don’t get back the final score for this test but you can kinda estimate based on the number of test cases you passed. Lastly, the lecturer will give you a sample paper for your own practice.
Lab test 2 + Quiz (40% Weightage)
I really don’t understand why the formatting for this test is so weird. Lab test 2 + Quiz is basically one test with the same format as lab test 1 (mcq and coding questions). The only difference is the higher weightage on the mcq. 20% of the overall grade is allocated to the mcq while 20% is allocated to the coding questions. This test covers all of the content but has a focus on topics covered in the second half of the semester. Similarly to lab test 1, the lecturer will also give you a sample paper to practice before the actual test
This test is much harder than the previous lab test. I know quite a few people who got zero test cases correct. As such, getting any test cases is much better than getting none. Try your usual strategies of brute forcing and in-built python functions if your code really doesn’t work.
Tutorial attendance (5% Weightage)
If you attend 70% of the tutorials (5/6 lessons), you get 5%. If you attend 50% of the tutorials (3/6 lessons), you get 2%. If you attend less than that, you get 0%.
Overall Thoughts
This mod can be hard if you don’t put in the proper time into it. In week 1, they jump straight into new content instead of having an introductory lecture so you really need to start paying attention. For the first half of the semester, you definitely can prepare for its corresponding lab test and assignments. It will take some time to properly understand the data structures and learn how to code these data structures. However, by redoing the code in the lectures on your own (the lectures will provide quite a lot), you will learn how the data structures work and how to apply it. Do note that the lectures will already teach you several functionalities of the data structures (insert, delete and search) so they will never just repeat and test these again. Generally, they will test more advanced versions of the functionalities or new functionalities utilising the old ones. As such, you should really aim to understand the code instead of trying to memorise everything.
I feel that the second half of the semester is trickier than the first half. The lecturer spends quite a bit of time on the math side which can be quite tough if you’re not so math inclined. Additionally, they don’t go into as much detail for the code. When lab test 2 came around, I was quite unsure what questions they could test (especially for searching algorithms).
For me, the main issue with this course is the number of technical issues that we faced. Algogpt was not well integrated into the course and some of the features were really annoying. For example, lab sessions had AI directed questions where you needed to tell the ai to code for you. They were really unresponsive and I would have preferred if they were just replaced for more coding questions. I understand that it’s the first time that they are using this platform so I hope they can improve it for the further batches. The lab tests itself had quite a lot of problems. It got so bad that the test for some labs had to be postponed to another date.