CS2040C - Data Structures and Algorithms (C++)

Introduction

This module introduces students to the design and implementation of fundamental data structures and algorithms. The module covers basic data structures (linked lists, stacks, queues, binary heaps, hash tables, binary search trees, and graphs), searching and sorting algorithms, basic analysis of algorithms, and very basic object-oriented programming concepts (more details of OOP are in CS2030).

The programming language used for this module is C++ (as of 2022, we still use C++17, pick up as much as possibly via self-learn from this site: learncpp.com).

Note: This introductory message will not be prominent the next time you visit this URL again. This behavior is normal. You can view it again by scrolling to the top of this page.

Course Registration

Steven teaches CS2040C (NOT CS2040 — contact Prof Roger Zimmermann and A/Prof Tan Sun Teck — nor CS2040S — contact Dr Chong Ket Fah) in S1 AY 2022/23 (Aug-Nov 2023). Steven already had enough experiences teaching CS2040/C/S module in previous half decade (many times, all module ratings are above NUS SoC average). This S1, there is a major change where the majority of 200-about 50 pax = 150 other pax of Computer Engineering (CEG) students will take CS2040C in their sem 3 (S1 AY 2022/23 - this coming semester; and true, 139 CEG students appear at Canvas LMS on 23 June 2022).

There should also be a few exchange students as exchange programme has restarted in 2022.

Some other facts:

  1. Steven uses flipped classroom, machine-teach-(and-auto-test)-students-on-basic-stuffs, and in-class live discussion of (hard)er problems in his CS2040/C/S classes many times in recent AYs (AY 2017/18 - present). His teaching feedback ratings for those offerings vary in [4.2 (just slightly above average)..4.8 (v good)] bracket out of maximum 5.0.
  2. On top of teaching CS2040/C/S many times so far (2017-present), Steven has also taught other similar modules: CS2020 once (2011), CS2010 six times (2011-2016), and CS1020E once (2016).
  3. Teaching staffs:
    (Senior) Lecturer: Dr Steven Halim, the key man behind VisuAlgo that will be used very extensively in this module.
    The main target for this semester is to have many onsite components (see below for the details).
    Rating
    (out of 5.0)
    (SoC avg ~4.1)
    Aug-Nov 22
    (n≥100+/200+)
    ≥ 50%
    Jan-May 22
    (n=101/131)
    77%
    Aug-Dec 21
    (n=49/69)
    71%
    Jan-May 21
    (n=158/253)
    62%
    Aug-Dec 20
    (n=60/115)
    52%
    Aug-Dec 19
    (n=56/96)
    58%
    Module feedback ≥ 4.1 (at least this) 4.2 == (target achieved) 4.2 == 4.2 (+Alan) 3.8 (C-19+IOI 20) 4.0 ==
    Module difficulty ≤ 4.0 (lower diff a bit) 4.2 == (hm, still high) 4.2 3.9 (easiest) 4.6 (C-19+IOI 20) 4.2
    Steven's teaching ≥ 4.3 (at least this) 4.3 (as per target :O) 4.5 4.4 (+Alan) 4.3 (C-19+IOI 20) 4.4
    Date, Time Live or Zoom Session (#Stu/#Cap) No Tutor
    1/Mon, 1000-1200 [F2F or e-Learn TBC] (??/25) 02 TBA
    1/Mon, 1200-1400 [F2F or e-Learn TBC] (??/25) 03 TBA
    1/Mon, 1400-1600 [F2F or e-Learn TBC] (??/25) 04 TBA
    2/Tue, 1000-1200 [F2F or e-Learn TBC] (??/25) 06 TBA
    2/Tue, 1200-1400 [F2F or e-Learn TBC] (??/25) 07 TBA
    2/Tue, 1400-1600 [F2F or e-Learn TBC] (??/25) 08 TBA
    5/Fri, ????-????
    (1h consultation slot)
    Recurring Link (free and easy, TBA) - TBA

    List of TAs:

    1. Ammar Fathin Sabili (full-time TA and PhD student)
    2. Others TBA
  4. Have you passed (or exempted from) CS1010 (or its variants)? You have to...
  5. Have you taken CS1020/CS1020E/CS2010/CS2020? You cannot take CS2040/C/S if you have taken similar/older module(s) that have huge degree of overlap with this module.

Syllabus

This is what you will learn if you take CS2040/C/S taught by Steven:

Course Registration Additional FAQ

If you have any important questions regarding this module, email stevenhalim at gmail dot com. Relevant answers will be posted here to reach wider audiences.

Q: Will CS2040C S1 AY 2022/23 has onsite components?
A: Yes. For the lecture component, we will have onsite sessions on Wednesdays at LT15 (venue booked) but online sessions on Thursday (venue clash). For the Tut+Lab combo, we will run at least 2 (out of X) F2F lab sessions (all these TBC). All formal assessments of this course: Midterm Test + VisuAlgo Online Quiz 1 on Wed of Week 06, Practical Exam on Week 11 (likely at night, venue TBC), VisuAlgo Online Quiz 2 on Wed of Week 13, and Final Assessment will all be F2F.
Q: Will there be a Practical Exam (PE) for your version of CS2040/C/S?
A: Yes, once only, on Week 11 (everything up to just before graph data structure).
We will do the scary-sounding Open Internet PE but with onsite proctoring. This time, students who are still overseas will be deemed as absent, so plan accordingly.
Q: Open Internet PE sounds scary... Will there be a make up PE if I am sick/underperform...?
A: Yes. Steven is aware that many students are still at learning stage. Those who are absent from the official ones for valid reason (clash with another official NUS module, MC, Bereavement of immediate family member, representing NUS for official event — some events are resuming...) and a few bottom X (TBC) students will be invited for the make up PE sometime during study week.
Q: Will this module be graded using Bell curve?
A: CS2040C has much more than 30 students each semester. Bell curve system will obviously be used.
Q: I am from CS1101S (subset of JavaScript)/CS1010S or CS1010E (Python)/other modules that do not use C/C++, should I pick up C++ on my own during this May-June-July 2022 University Holiday?
A: Yes, that is a very good idea. We will only review basic C++ in the first few weeks of this module and then Steven will encourage you to self-learn C++ along the way. One very good resource is learncpp.com. A few early admin emails will be sent to students who are already enrolled from 23 June 2022 onwards to start this process early.
Q: What Integrated Development Environment (IDE) that we will use in your version of CS2040/C/S?
A: The choice of IDE is "up to you but" we recommend Visual Studio that is confirmed available in various PLs in NUS SoC. But since PE for this semester is likely using the same BYOB (Bring Your Own Device) style, then you are free to use any C++ IDE that you are most comfortable with.
Q: Do I have to buy any textbook for this course?
A: Generally, no. But my CS3233 textbook: Competitive Programming book: CP4, Book 1 (get a physical or e-Book (TBC) copy legally from @ lulu.com) should be a good book to have. The answers for many of my test questions may be inside that book. The problem is... I discuss over ~3600+ problems in that book, near impossible to solve them all in just one semester.
Q: Can I S/U this module if I am a freshman when I take this module?
A: No, as this is a level-2 core module. CS2040/C has CS1010 as pre-requisite and according to Registrar's Office: "The S/U option will apply to all Level 1000 modules (with or without pre-requisites) and Level 2000 modules without other NUS modules as pre-requisites, unless otherwise stipulated by the Faculties/Departments". So factor this information when taking this module.
Q: I heard from my friend/senior that your version of CS2040/C/S is a flipped classroom module?
A: You heard that correctly. This AY 2022/23, Steven and his two FYP students are working hard at the background to continuously improve his 24/7 electronic clone, VisuAlgo, to be able to explain basic data structures and algorithms concepts covered in CS2040/C/S as clear as possible to first timer (and to automatically test students about these basic concepts). This will free the precious 2+1h (effective 95+45m = 140m per week to discuss the harder/deeper part of the syllabus and to do live demonstration of how those data structures and algorithms can be used to solve (real life, but sometimes fictional) programming problem. This will also help Steven to scale himself (one person) to handle much larger algorithm class (CS2040/C/S are projected to be as big as of now (over 1500 students per batch) in future AYs as NUS SoC freshmen intake remains at high level).
Q: What are the potential changes that you will apply to CS2040/C/S in S1 AY 2022/23 compared to your nine earlier runs of this module?
A: NUS @ Kattis is still used and the PE difficulty level of S1 AY 2021/22 + S2 AY 2021/22 are 'good enough', so the standard will be kept at those levels. However, these are the potential changes:
  1. More onsite components, especially assessment related, as Singapore moves towards COVID-19 endemicity.
  2. Another iterative enhancement to various VA e-Lecture slides with the aim to 'make this a printed (or an e-) book' sometime within this AY 2022/23.
  3. Steven will balance the discussion of detailed data structures/algorithms with its C++ STL counterpart.
  4. There is a need to transition from LumiNUS to Canvas this semester... Steven is learning along with most students.
  5. All others are planned to be kept roughly constant.

Note: This course registration section will not be prominent from Week 1 of S1 AY 2022/23 onwards. This behavior is normal. You can view it again by scrolling to the top of this page.

News

Date News

Lesson Plan

The 4MC CS2040/C syllabus will be delivered over 13 weeks.
The weekly lesson plan of Week X is typically as follows (2+1+2+1+1+3 = 10 hours/week):

  1. Give yourself about 2-hours/week to self-study as much as you can from various C++ references, e.g., learncpp.com, and VisuAlgo about the designated topic and attempt the e-Lecture/Online Quiz questions first (flipped classroom),
  2. On Tutorial+Lab day, attempt and then actively participate on 1-hour/week (effective 45 minutes) tutorial slot of past week X-1 topic to improve student's understanding of CS2040/C/S material, short break, then for the second half, students will practice solve a "simple" problem (guided by Lab TA) during the next 1-hour/week (effective 45 minutes) lab session of past week X-1 topic to improve student's coding skills.
    We have the following options starting from Wk03 (F2F vs e-Learn setup TBC):
    1. Mondays (3+ sessions),
    2. Tuesdays (3+ sessions)
  3. During the 2-hour/week (effective 95m) in-class lecture 1 on Wed, 10am-12nn @ LT15 (start on time at 10.00am and end by around 11.35am), we will roughly do: 5m (buffer) + 5m (admins) + 35m (fast in class review of the more difficult parts of the designated VisuAlgo e-Lecture topics) + 7m (break) + 30m (application 1 - solving at least 1 Online Judge problem live) + 13m (buffer),
  4. During the 1-hour/week (effective 45m) in-class lecture 2 on Thu, 5-6pm (online), we will roughly do: 5m (buffer) + 5m (admins) + 30m (application 2 - solving at least another 1 Online Judge problem live) + 5m (buffer),
  5. Attempt a ~two-weeks Problem Set (PS) @ home, approximately 3 hours of work per week on average or (~6++ hours/set), starting from Wk01,
  6. TOTALLY OPTIONAL: (Re-)solve some Kattis demo problems (or more) that are related to CS2040/C using Steven's Methods to Solve page. WARNING: Doing this will significantly increases your study time per week for this module.

Then, repeat this throughout the semester :).

The S1 AY 2022/23 timetable below is still tentative, especially those that are highlighted with pink color.

Week Tutorial+Lab Combo Lecture Interesting Problem Set
Cells with course material that have not been updated are highlighted with pink color, past classes more than one week ago are hidden so that we can focus on the current and future classes, but you can restore them by clicking 'Show Past' button above, future classes are not highlighted
-02/-01,
Bef Mon,
08 Aug
Not Started Not started, but please revise your CS1010
(Steven assumes that all? of you have taken
or exempted from this module/its variants)

Register at Kattis (use full name as in Matric card),
read C++ specific instructions @ Kattis,
pick up basic C++ by yourself via learncpp.com,
and solve the selected optional Online Judge (OJ)
Problem Set 0 (PS0) by yourself (CS1010 level):
(solving many 'trivial problems' from this set
---trackable by Steven, indirectly tells Steven
about your CS1010 rough grade)
PS0: Easy C++/coding challenges
(18 Jul-10 Aug)
obviously not graded
01,
08-12 Aug
Not Started Singapore National Day on Tue, 09 August 2022
CS2040C first lecture is not affected

But Steven will be in Yogyakarta, Indonesia, for IOI 2022
The two e-Lectures on Week 01 will be online


01a. Course Admin, (Re-)Introduction to C++
Setting the tone for a flipped classroom plus mostly ONSITE module
VisuAlgo + this Private LumiNUS + Kattis (NUS) + Kattis (open)
Basic C/C++ review/new feature introduction
Kattis problem(s) discussed today:
TBA

01b. (Re-)Introduction to C++ (continued)
Kattis problem(s) discussed today:
TBA

Reminder: Read summary on algorithm analysis (Slide 6 to 6-11)
before Lecture 02a
PS0
Due: Wed, 10 Aug 22, 11.59am
(0%)

PS1: Basic C++
This is now graded
Out: Wed, 10 Aug 22, 12.00nn
Mentioned at the end of the first lecture
02,
15-19 Aug
Not Started

But there will be one optional session
for official PS1 Discussion (algorithmic)
02a. Analysis of Algorithms (Slide 6 to 6-11)
Live SpeedTest.cpp | py | java demo (measure runtime, count # of operations, vs asymptotic analysis)
Kattis problem(s) discussed today:
TBA

Reminder: Read sorting e-Lecture slides (Slide 1 to 9-3)
before Lecture 02b

02b. Sorting (Slide 1 to 9-3)
C++ STL algorithm: std::sort, std::stable_sort
Kattis problem(s) discussed today:
TBA

Last flipped classroom reminder: Read ALL sorting e-Lecture slides
before Lecture 03a
PS1
Due: Sat, 20 Aug 22, 07.59am
(1%)

PS2: Sorting-related Problems
Out: Sat, 20 Aug 22, 08.00am
03,
22-26 Aug
e-Consultation starts
Review demo code so far, focusing on
C++ STL (algorithm, std::vector, std::string)

T01+L01: tut01.pdf
Introduction,
OOP review (List ADT/ListArray)
Analysis,
Hands-on,
PS1 Debrief (short),
PS2 Discussion (algorithmic)
03a. Sorting (until end)
O(N log N) sorting algorithms: Merge and (Randomized) Quick Sort
See the details at SortingDemo.cpp | py | java
Special-purpose O(N) sorting algorithms: Counting and Radix Sort
Other topics of sorting e-Lecture
Sorting Online Quiz (medium)

03b. List ADT: (Singly) LL (Slide 1 to 3-22)
Introducting List ADT, (resizeable) array implementation, and SLL implementation
SLLDemo.cpp | py | java
C++ STLs: std::forward_list (an SLL), std::list (a DLL)
PS2, continued
04,
29 Aug-02 Sep
T02+L02: tut02.pdf
Sorting Application(s),
Sorting, mini experiment,
ADT re-introduction,
List ADT (array vs std::vector),
VA OQ demo (sorting),
Hands-on,
PS2 Discussion (algorithmic)
04a. Stack/Queue/Deque ADT (DLL) (until end)
Focus on Stack, Queue, DLL, Deque
Showing the implementations of MyStack and MyQueue (extension of SLLDemo)
Plus a few other LL technicalities
C++ STLs: std::stack, std::queue, std::deque (actually not a DLL)
Linked List Online Quiz (medium)
Kattis problem(s) discussed today:
TBA

04b. Priority Queue (PQ) ADT: Binary Heap (Slide 1-6)
Introducing PQ ADT
Introducing basic Binary Heap structure and its Insert+ExtractMax operations
PS2
Due: Sat, 03 Sep 22, 07.59am
(3%)

PS3: List-related Problems
Out: Sat, 03 Sep 22, 08.00am
05,
05-09 Sep
T03+L03: tut03.pdf
List/Stack/Queue/Deque ADT,
Linked List, mini experiment,
Applications
PS2 Debrief (short),
C++ STL (std::list/std::stack/std::queue/std::deque),
VA OQ demo (list),
PS3 Discussion (algorithmic)
05a. Priority Queue (PQ) (until end)
Discussing other PQ ADT details and Binary Heap implementation
BinaryHeapDemo.cpp | py | java
C++ STL: std::priority_queue, std::partial_sort
See priority_queue.cpp at GitHub repo of CPbook website
Binary Heap Online Quiz (medium)
Kattis problem(s) discussed today:
TBA

05b. Mock Practical Exam 1
Material: C++/Arrays/Vectors/Sorting/List/simpler PQ
(but 60 minutes only)
Technically a preparation for Midterm Quiz
Kattis problem(s) discussed today:
TBA
PS3, continued
06,
12-16 Sep
T04+L04: tut04.pdf
PQ ADT
Binary Heap,
Additional ADT PQ Operations,
C++ STL (std::priority_queue),
Max-Min conversion,
VA OQ demo (heap),
PS3 last Discussion (algorithmic)
We will skip the hands-on session today
so that we have time for midterm quiz QnA
06a. First 20m: VisuAlgo Online Quiz 1 (5%)
onsite, bring your own laptop

Short 10m break

The next one hour: Midterm Quiz (9%)
Format TBA
Likely essay questions only and no more giveaway questions
Material: Up to PQ (L05ab on Week 05 + T03+L03 on Week 05)
ONSITE

Midterm Test Past Papers:
AY 2017/18: S1-midterm.pdf, S2-midterm.pdf, S4-hard.pdf,
AY 2018/19: S1-midterm.pdf (Prof Gary), S2-midterm.pdf,
AY 2019/20: S1-midterm.pdf, S2-midterm.pdf (Dr Alan, N/A),
AY 2020/21: S1-midterm.pdf, S2-midterm.pdf (Dr Alan + myself, N/A),
AY 2021/22: S1-midterm.pdf, S2-midterm.pdf (myself + Dr Alan, our paper).

06b. Union-Find Disjoint Sets (all slides)
Live Quick Recap with VisuAlgo
Kattis problem(s) discussed today:
TBA
PS: UFDS will be reused in MST lecture
PS3
Due: Sat, 17 Sep 22, 07.59am
(3%)

PS4: PQ/HashTable-related Problems
Out: Sat, 17 Sep 22, 08.00am
Recess Week, 17-25 Sep 2022
We can take a break this week :)
But if possible, read Hash Table and BST e-Lecture slides by yourself first...
07,
26-30 Sep
T05+L05: tut05.pdf
Midterm Quiz Review,
UFDS Review,
PS3 Debrief (short),
Hands-on 1,
Hands-on 2,
PS4 Discussion (algorithmic)
07a. Table ADT part 1: Hash Table (until end)
Table ADT and DAT
Basic Hashing Concepts
Collision Resolution Techniques: CA (SC) and OA (LP, QP, DH)
Hash Table Online Quiz (medium)
HashTableDemo.cpp | py | java (all use SC)
C++ STLs: std::unordered_set, std::unordered_map, ums, umm
See unordered_map_unordered_set.cpp at GitHub repo of CPbook website

07b. Hash Table/Hashing Applications
Kattis problem(s) discussed today:
TBA
PS4, continued
08,
03-07 Oct
T06+L06: tut06.pdf
Table ADT 1 - unordered,
Basic hashing concepts,
Hash Table issues,
C++ STL (std::unordered_map) (short),
C++ STL (std::unordered_set) (optional),
The (unordered) multimap/multiset versions (optional),
VA OQ demo (hashtable),
Hands-on,
PS4 Discussion (algorithmic)
08a. Table ADT part 2: BST + AVL Tree (until end)
BST concepts and basic BST operations
QnA about AVL Tree concepts
BST (only) Online Quiz (medium)
BST+AVL Online Quiz (hard; need to clear-pre-req)
BSTDemo.cpp | py | java and AVLDemo.cpp | java
C++ STLs: std::set, std::map, std::multiset, std::multimap
See map_set.cpp at GitHub repo of CPbook website

08b. Balanced BST Applications
Kattis problem(s) discussed today:
TBA
PS4
Due: Sat, 08 Oct 22, 07.59am
(3%)

PS5: bBST/Graph-related Problems
Out: Sat, 08 Oct 22, 08.00am
09,
10-14 Oct
T07+L07: tut07.pdf
Table ADT 2 - ordered,
BST/AVL advanced stuffs: Select and Rank,
PQ ADT alternative implementation,
Comparison with Table ADT 1,
unordered vs ordered,
C++ STL (std::map) (short),
C++ STL (std::set) (optional),
The multimap/multiset versions (optional),
PS4 Debrief (short),
VA OQ demo (bst,avl)
Hands-on,
PS5 Discussion (algorithmic)
09a. Graph DS
Implementations of graph DS and its applications
Graph DS Online Quiz (medium),
No built-in C++ STL container | Python standard library | Java API,
See graph_ds.cpp at GitHub repo of CPbook website,
Kattis problem(s) discussed today:
TBA

09a. Graph Traversal (Slide 1 to 6-4)
Early discussion of the basic forms of
two basic Graph Traversal algorithms: DFS and BFS
PS5, continued
10,
17-21 Oct
T08+L08: tut08.pdf
Graph DS Review,
Some Graph Properties Discussion,
Graph DS Conversion Exercise,
DFS/BFS Review,
UFDS Review,
Custom graph DS implementation review,
VA OQ demo (graphds,dfsbfs),
Hands-on,
PS5 Discussion (algorithmic)
10a. Graph Traversal (Slide 7 to 7-11)
Recap of Graph Traversal algorithms
Focus on DFS/BFS applications
(we skip slide 8-12, out of CS2040/C/S scope)
DFS/BFS Online Quiz (medium)
No built-in C++ STL algorithm | Python standard library | Java API,
See dfs_cc.cpp, UVa00469.cpp, and bfs.cpp at GitHub repo of CPbook website,
Kattis problem(s) discussed today:
TBA

10b. Mock Practical Exam 2
Material: Everything so far, from Week 01 until Week 09b: (Simple) Graph Traversal
(but 60 minutes only; you have 120 minutes in the real deal)
Kattis problem(s) discussed today:
TBA

NUS Online Teaching Feedback will likely open this week
This timing is too early for our module...
You can wait until next month

PS5
Due: Sat, 22 Oct 22, 07.59am
(3%)

PS6: SSSP+MST Problems
Out: Sat, 22 Oct 22, 08.00am
Those who miss VisuAlgo Online Quiz 1 + Midterm Quiz on Week 06 due to VALID reasons
(valid Medical Certificate; representing NUS for an official event; bereavement of immediate family member)
will do make up midterm quiz on Week 10 (details TBC).
Note that there is no more make up of make up :O...
11,
24-28 Oct
T09+L09: tut09.pdf
DFS/BFS advanced stuffs,
Toposort++, Floodfill/CC,
Modeling exercise (time permitting),
PS5 Debrief (short),
PE Debrief
Diwali Public Holiday is on Mon, 24 Oct 2022
CS2040C Monday classes are affected (TBC).

11a. SSSP Problem (Slide 1 to end)
Review of basic SSSP problem
QnA on BFS algorithm for unweighted SSSP
QnA on Dijkstra's algorithm (two forms)
SSSP Online Quiz (medium)
See bfs.cpp (again) and dijkstra.cpp at GitHub repo of CPbook website,
Kattis problem(s) discussed today:
TBA

11b. Practical Exam (15%)
Timing: Thu, 27 Oct 2022, 5.05-7.05pm (120m)
That is, 5 minutes after our usual Thu (e-Lecture) slot
but this time, we will do PE and continues until 7.05pm.
Material: Week 01 until Week 10b.
All other details TBC (Steven needs to secure venues first).
PS6, continued
12,
31 Oct-04 Nov
T10+L10: tut10.pdf
Bellman-Ford/BFS/Dijkstra's review
Modeling exercises (continued),
VA OQ demo (dfsbfs,sssp),
Tips for OQ preparation next week,
Hands-on,
PS6 Discussion (algorithmic)
12a. MST Problem (Slide 1 to end)
Review of basic MST problem
QnA on Kruskal's and Prim's algorithms
Mix and Match of various data structures/algorithms covered so far
Kattis problem(s) discussed today:
TBA

12b. SSSP+MST Extras
QnA on Bellman-Ford algorithm
QnA on special cases of SSSP problem
Other MST variants

Last 20m: VisuAlgo Online Quiz 2 (12%)
onsite, bring your own laptop
all topics, including SSSP
MST is probably not included (yet)
PS6, continued
13,
07-11 Nov
T11+L11: tut11.pdf
MST Review (Generic + 2 algorithms),
Final paper preparation (from any past paper),
Hands-on, PS6 Last Discussion (algorithmic)
Class Photo (for momento)

Tutorial Participation Marks given (3%)
Steven is 90% will be in Dhaka, Bangladesh, for ICPC World Finals 2021
(that has been postponed until this week, 06-11 Nov 2022),
90% that lecture 13a. will be online from Bangladesh (8-10am Dhaka time)...

13a. The Last Lecture
Module wrap-up et al

There won't be lecture 13b (likely ICPC World Finals 2021 date).
PS6
Due: Thu, 10 Nov 22, 07.59am
(3%)
Study Week, 12-18 Nov 2022
Make-up (or Remedial) Practical Exam
Timing: Wed, 16 Nov 2022 (10.00am-12.00noon, 120m)
Details TBC.

Final Assessment Consultations (per request)

Final Assessment Past Papers:
AY 2017/18: S1-final.pdf, S2-final.pdf, S4-final.pdf,
AY 2018/19: S1-final.pdf (Prof Gary), S2-final.pdf,
AY 2019/20: S1-final.pdf, S2-final.pdf (Dr Alan, N/A),
AY 2020/21: S1-final.pdf, S2-final.pdf (Dr Alan+myself),
AY 2021/22: S1-final.pdf (most recent past paper), S2-final.pdf (our paper, obviously N/A yet).

NUS Online Teaching Feedback System closes on Friday of Study Week
Final Assessment (40%)
Date and Time: Sat, 26 Nov 2022, 1-3pm
Venue: should be onsite
Details TBC

Partial Class Roster

Steven uses a small-scale gamification system in his version of CS2040/C/S for extra study motivation.
The list of possible achievements are as follows: (achievements highlighted with red color/green color are already completed in the past/being given, respectively).
As the class size is large (maybe 200+), only students with at least one achievement will be listed below (so the list is not the full class roster).

  1. I Say Hi (#): Given to first 7 students who reply Steven's welcome email -- (sent on Thu, 23 Jun 2022, 4.15pm after seeing the non-zero class roster of 139 CEG students) with a long enough reply or write a (long enough) message at class Discord; Any early feedback will always help Steven in refining the preparation of the next iteration of this module
  2. Kiasu lv 1 (#): Given to the first 7 students who solve all 10 :O (yeah...) problems of PS0 — Easy C++/coding challenges, albeit that one is 'totally optional' and 'not graded'
  3. Kiasu lv 2 (#): Given to the first 7 students who solve all problems of PS1, the first graded PS
  4. My Life is in Order (#): Given to the first 7 students who solve all subtasks of PS2
  5. List Master (#): Given to the first 7 students who solve all subtasks of PS3
  6. Chow-Yuan-Bin Award lv 1 (#): Given to the top 7 students who scored the highest in the first half VA OQ (likely 15/15) and if ties, by fastest submission time as acknowledged by VisuAlgo Online Quiz system
  7. Scheduling Master (#): Given to the first 7 students who solve all subtasks of PS4
  8. Potential TA: Given to 7 students who score ≥ ?? points in the Midterm Quiz: You survived all those intellectual challenges...
  9. Mapping Master (#): Given to the first 7 students who solve all subtasks of PS5
  10. Graph Master (#): Given to the first 7 students who solve all subtasks of PS6
  11. Competitive Programmer to be (#): Given to to the first 7 students who scored ≥ ???/200 points in Practical Exam (CS2040/C/S first 2/3) under that very stressful environment
  12. Sky Full Of Stars (# of stars): Given to the first 7 students (possibly more or less) who get (slightly more than) 10*3 = 30 stars in your VisuAlgo account (read all e-Slides of CS2040/C/S topics; clear all medium level trainings, and also clear all hard level trainings) just before VisuAlgo Online Quiz 2
  13. Chow-Yuan-Bin Award lv 2 (#): Given to the top 7 students who scored the highest in the second half VA OQ (likely 20/20) and if ties, by fastest submission time as acknowledged by VisuAlgo Online Quiz system
  14. Nowhere to Hide (Reason): Given to students who already remembered by Steven (closed by last lecture). With more onsite components, this achievement will start to be meaningful again
  15. Kattis Mini Apprentice (Kattis profile link): Given to students who manage to get 300.0 or more Kattis points at open.kattis during the execution of CS2040/C/S in S2 AY 2021/22 (closed by last lecture) (submitting all my AC/near-AC demo code will only give you about ~100.0 free Kattis points... so you must have done a lot more extra homework than necessary; PS: This is my account and this CS2040/C/S-specific page of Methods to Solve can help you get this achievement)
No Student Name Achievements