🏫
Module Reviews
  • Welcome
  • School of Computing
    • CP2106 Independent Software Development Project (Orbital)
    • CS1010J Programming Methodology
    • CS1231 Discrete Structures
    • CS2030 Programming Methodology II
    • CS2040 Data Structures and Algorithms
    • CS2100 Computer Organisation
    • CS2102 Database Systems
    • CS2103 Software Engineering
    • CS2105 Introduction to Computer Networks
    • CS2106 Introduction to Operating Systems
    • CS3103 Computer Networks Practice
    • CS3223 Database Systems Implementation
    • CS3230 Design and Analysis of Algorithms
    • ES2660 Communicating in the Information Age
    • IS1103 IS Innovations in Organisations and Society
  • NUS Business School
    • ACC1701 / ACC1002 Accounting for Decision Makers
    • BSP1702 / BSP1004 Legal Environment Of Business
    • BSP1703 / BSP1005 Managerial Economics
    • BSP2701 Global Economy
    • DAO1704 / DSC1007 Decision Analytics using Spreadsheets
    • DAO2702 / DSC2008 Programming for Business Analytics
    • DAO2703 / DSC2006 Operations and Technology Management
    • DBA3701 / DSC3214 Introduction To Optimisation
    • DBA3712 / DSC3224 Dynamic Pricing & Revenue Management
    • DOS3701 / DSC3201 Supply Chain Management
    • DOS3703 / DSC3203 Service Operations Management
    • ES2002 Business Communication for Leaders
    • FIN2704 / FIN2004 Finance
    • FSP4003 Field Service Project
    • MKT1705 / MKT1003 Principles of Marketing
    • MNO1706 / MNO1001 Organisational Behavior
    • MNO2705 / MNO2007 Leadership and Decision Making under Uncertainty
  • Other faculties
    • GEH1035 Phy’cal Qns from Everyday Life
    • GEQ1000 Asking Questions
    • GER1000 Quantitative Reasoning
    • GESS1025 / GES1035 Singapore: Imagining the Next 50 Years
    • GET1004 / GEK1531 Cyber Security
    • LAM1201 Malay 1
    • LAM2201 Malay 2
    • MA2001 / MA1101R Linear Algebra I
    • MA1521 Calculus for Computing
    • PC1141 Introduction to Classical Mechanics
Powered by GitBook
On this page
  • What it is about
  • Assessment components
  • Comments
  • Tutorials
  • Laboratory
  • Mid-terms and Finals
  • Other information

Was this helpful?

  1. School of Computing

CS2040 Data Structures and Algorithms

Module: CS2040 Data Structures and Algorithms

Semester taken: AY 2018/19 Special Term 2

Lecturer: Dr Chong Ket Fah

Tutor: Mr Ng Tzer Bin

Textbook: CP3: Competitive Programming

What it is about

This module is all about tackling problems and the tools that you can use. You will learn to analyse algorithms, understand its efficiency and be exposed to the different contexts in which you have to tweak certain algorithms to achieve what is desired.

Assessment components

  • Tutorial attendance/participation: 3%

  • Lab attendance: 2%

  • In-lab Assignments: 20% (2.5%/problem)

  • Take Home Assignments: 12% (2%/problem)

  • Online Quiz: 8% (4% each)

  • Midterm: 15%

  • Final Exam: 40%

Comments

Moving away from learning the language of Java as taught in CS1010J and in CS2030, this module focuses more on the discussion of the tools that you can use to solve problems. Perhaps up till this point, most of the problems that I have encountered can mostly be solved with a couple of loops, maybe recursion. However, this module is the one that exposes you to the wide array (pun intended) of ways to approach a certain problem, and even evaluate if the way that you are solving the problem is the most efficient.

As I took this module during the special term (plus I was also interning at NUS IT), the workload is rather intensive as they had to squeeze the usual 2 weeks into 1 teaching week here. However, this also meant that the lecturer is forced to cut back on some assessment components, although overall the content matches (if not exceeds) those that were taught in the usual semesters.

There are about 4 hours of lecture, 2 hours of tutorial and 4 hours of labs per week (concentrated on Tuesdays and Thursday). You essentially spend the whole day in NUS reading 1 module. Accompany that with the take home assignments and you will have a pretty busy week ahead.

To me, this module was rather eye-opening as you get to approach problems from a different perspective. However, there are some math involved in this, especially when you come to graphs, so watch out, though some parts of this module should have been covered in CS1231.

Tutorials

The tutorials are 2 hours per week split into 2 1-hour slots, which most of the time will be spent on going through the tutorial questions. However, the tutorial questions are worded such that it encourages some form of discussion about the topic, especially regarding the efficiency of the algorithm used. I did not really expect much, but after we had a replacement tutor for 1 or 2 lessons, I was quite glad that I had this tutor.

There is also an online test component, but it is just the Visualgo-generated questions. Before the test, just grind as much as possible and make a small cheatsheet for some of the more tedious questions that you encounter, and you will be fine. Most, if not all, students get full marks for the online test.

Laboratory

For labs, we will be given 1 or 2 questions on Kattis to solve for the session, and you must get all test cases to pass within the specified time frame before the end of the lab session. Most of the questions are easy and I usually get to leave within the first half hour. There are times, however, that you just don’t get it, and seeing your classmates leave one by one can be a rather stressful thing. I do pity the girl that cried for the last lab session, hope you did alright.

There is also a take-home lab assignment that you have to complete over the week, also on Kattis. These questions are much harder to complete and for me personally, I spent almost the whole weekend getting them done. Some of the answers are available online if you know how to Google for them, which definitely saved a lot of time since Kattis does not provide you with feedback on why you have failed a particular test case.

Mid-terms and Finals

The mid-terms and finals were all written questions and were of similar format. The first part requires you to prove if the given statement is true or false (recall how to prove such statements in CS1231), whereas the second part will give you scenarios and to devise out an algorithm to solve the problem. Writing actual code is not necessary (though it might help in your thought process, if you are more of a coder), and it is definitely possible to score by writing point form, as long as you articulate the steps of your algorithm clearly to the examiner.

The tests are open book and I would advise you to come up with a cheatsheet which lists out all the algorithms that you have learnt in the module and the different situations that such algorithms can be applied to. It would also be beneficial to know which parts of the algorithm can be tweaked so that you can adapt it for the given problem.

I didn’t get to see how other people performed for this module, but mid-terms I got 26/40 and for finals I felt that it was a very easy paper (which was also admitted by the prof prior to the exam). I am guessing it is because most of the students taking this module are not from Computing, so they had to make the module easier after the mid-terms.

Other information

Assignment workload: There are 10 in-lab assignments (best 8 of 10), 4 take-home lab assignments and 3 online quizzes (best 2 of 3)

Project workload: There were no projects.

Readings: None

Recommended if: A compulsory module for some computing majors and is a good module for those that are interested in analysing algorithms and their efficiency, which is not usually a concern in day-to-day practice.

Rating: 4.0/5. Interesting module but the workload killed me a little inside.

Expected grade: A (was a little worried about mid-terms but the rest were good)

Actual grade: A

PreviousCS2030 Programming Methodology IINextCS2100 Computer Organisation

Last updated 3 years ago

Was this helpful?