This course aims to prepare students in competitive problem solving.
It will benefit NUS students who want to compete in ICPC, invited high school students (via CeNCE CS3) who want to compete in IOI (not just for NOI), and NUS students in general who aspire to excel in technical interviews of top IT companies, especially NUS current (2026++) ICPC donors: Jane Street, HRT, Jump Trading, Optiver, Virtu Financial, Citadel | Citadel Securities, and Presto Labs.
It covers techniques for attacking and solving challenging* computational problems. Fundamental algorithmic solving techniques covered include complete search, divide/reduce/transform and conquer, greedy, dynamic programming, etc. Domain specific techniques like graph, mathematics-related, string processing, and computational geometry will also be covered. Some additional topics may be included depending on how the semester progresses. Programming language libraries that are commonly used in problem solving will also be taught.
*We only study well-known/solved problems, not research problems.
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.
The quota of this class (S2 AY 2022/23 onwards) is 39, as that is the largest class size that is still considered a 'small course' where Bell Curve system does not have to be used. In 16+ academic years of CS3233 classes, on average only ~20 NUS students were enrolled per year. Although it was 30+ in the last THREE AYs (maybe FOURTH consecutive time for the upcoming S2 AY25/26 too).
Useful information to help you decide on whether you should offline register for CS3233:
Do you have national (but preferably international) programming competition background before? Examples: SGP NOI (or IDN OSN, VNM VNOI, CHN NOIP, MYS MCO, PHL NOI, IND ICO, etc), IOI (especially the recent IOI 2025, IOI 2024, or IOI 2023), ICPC (especially the recent ICPC Asia Bangkok 25, Taichung 25, Jakarta 24, Hanoi 24, and/or Yokohama 24 2025), Facebook Hacker Cup, CodeForces rated rounds, etc?
The difficulty of this course is very extreme for those without such background... but typically those that satisfy the next requirement (see question 2) can survive just as well... We will study problems that require (advanced) data structure and/or algorithms that are typically asked in programming competitions, and we have to implement those solutions fast and without bug...
Did you score well (at least A-) in CS1010/variant and CS2040/variant (and preferably score A+ in all; CS3230 (and CS4234) are good to have but optional)?
This course has a very high performance bar and the average GPA of the students enrolled in the recent AYs are/were 4.67 (last S2 AY24/25), did not track/ask between 2023 back to 2020, 4.57 (2019), 4.78 (2018, early year of grade-free first year policy), 4.3+, 4.33, 4.44, 4.43, 4.45, and 4.30 (out of 5.00), respectively. You will need special permission from the instructor (A/Prof Steven Halim) if you do not satisfy the pre-requisites listed above (the filter is there for your own good). PS: Getting at least A- in CS2030/variant is included as official pre-requisite of CS3233, but an exception can be made if all other indicators are good.
Are you OK to be tortured for one semester for a mere 4 units (your other courses may also suffer)?
You may have to take lighter set of other courses or be ready to S/U other courses or to rush course project submissions (for project-based courses that have STePS on Wednesday night of Week 13 — no longer clash with CS3233 Monday night classes) or to rush final assessment preparations for other courses only during study week (no final assessment for CS3233). Please do NOT take CS3233 course with another course that is known to be challenging/demanding (e.g., the 5 units CS3217 in Sem2, among others) unless you are very confident of yourself and have historical academic performance to back that up. Moreover, your ego may be hurt if some of the young NOI trainees (Sec2-JC2 students) beat you in (many) CS3233 contests (a few guest students may now return to F2F mode onsite at PL2-TBC). Try to ask CS3233 seniors who have taken (and survived) this course before applying, or read their public stories, e.g., Lim Jay Ching (exchange from University of Waterloo).
Are you thinking on applying to top (or emerging) IT companies like NUS current (2025/26; list to be refreshed by January 2026) ICPC donors: Jane Street, HRT, Jump Trading, Optiver, Virtu Financial, Citadel | Citadel Securities, Presto Labs, or other large IT companies like Google, Meta (Facebook), Microsoft, Huawei, Sea Group, etc in the future?
Some of our ex-CS3233 graduates are now in those companies :). See the CS3233 Hall of Fame to see the current known status of CS3233 past top students. Since a few AYs ago, many of these company (HR) reps will (e-)visit some of our (mini) contests and give prizes and/or recruitment talks which may be (much) faster than normal application route... Some seniors have cited that these direct connections with top IT companies is actually one of the nicest features of CS3233...
Can you code in C++ (primary language), Python (second choice), and/or Java (third choice)?
We will use C++ (17), Python (3), and Java (17) in CS3233 (in that order :O). In this course, we are expecting students to be multi-lingual :O. Although a few ex-students had survived CS3233 with only (or mostly) Java and/or the slower Python, they struggled more compared to those who are well versed in C++ (fastest programming language for programming competitions). Since AY 2018/19, Python (3) has been used and has given some advantage at certain problems for students who master this language. However, Python code is usually slow (albeit usually also shorter). An algorithm written in Python may get TLE while the same algorithm written in C++/Java pass the time limit.
Do you want to learn interesting data structures, algorithms, (other programming language especially if C++ is not your primary language) and more importantly: On how to apply them properly — from teaching staffs who are deeply involved in such programming competitions?
Instructor: Associate Professor Steven Halim, current CeNCE Director, Singapore IOI team leader, ICPC Asia Pacific Championship 2025 Contest Director (also Asia Singapore Regionals 2015 and 2018), the author of Competitive Programming text book (the official text book of this course, we will use CP4 Book 1 and Book 2), former Deputy Director for IOI 2020 and IOI 2021 in Singapore (online competitions), former NUS ICPC coach (5x ICPC World Finals Coach Award).
| Rating (out of 5.0) | Jan-Apr 2026 (n=30+?) | Jan-Apr 2025 (n=34) | Jan-Apr 2024 (n=34) | Jan-Apr 2023 (n=31) | Jan-Apr 2022 (n=28) |
|---|---|---|---|---|---|
| Course feedback (SoC avg lvl 3000 ~3.9) | ≥ 4.1 (tgt) | 4.0 (PW) ▼ | 4.4 ▼ | 4.9 (PB) ▲ | 4.7 ▼ |
| Course difficulty (SoC avg lvl 3000 ~3.8) | ≥ 4.1 (tgt) | 4.0 ▼ | 4.3 ▼ | 4.6 (PW) ▲ | 4.3 == |
| Prof Halim's teaching (SoC avg lvl 2000 ~4.2) | ≥ 4.5 (tgt) | 4.8 ▲ | 4.6 ▼ | 4.9 (PB) ▲ | 4.8 ▼ |
Qualified Teaching Assistant(s):
Usually, CS3233 TAs have teaching feedback rating of around ~4.5 too (i.e., very good).
TA will be mostly available in NUS ICPC Lab (COM1-02-15), especially every Monday, 4.00-5.15pm to answer any CS3233/Competitive Programming queries, if any.
Known damages are (illustrations are in C++), but not limited to:
Fortunately, it is known that past CP-ers can somehow undo these damages to return back to normal SE practices, e.g., this one (so don't worry my fellow SoC SE colleagues :).
If you have read all (scary) questions above and are still interested, simply complete this [TO BE UPDATED SOON] application form to join CS3233 S2 AY2024/25 [TO BE UPDATED WITH S2 AY2025/26 EDITION SOON] for offline registration before round 3 (the last day of application). The offline registration will be closed as soon as the number of students hits 39 accepted NUS students.
To minimize the annual attrition rate on Week 02 (Drop without penalty) and also :O on Recess Week (Drop with a 'W' grade, it happens!), the pre-acceptance selection will be made reasonably rigorous, i.e., by showing Prof Halim that the applicant has at least CodeForces (max) rating of ≥ 1400 (naturally talented, PS: this is a more accurate predictor of potential CS3233 grade) by Wednesday, 31 December 2025, 23.59 SGT.
Note: This course registration section will not be prominent from Monday, 12 January 2026 onwards (Week -01). This behavior is normal. You can view it again by scrolling to the top of this page.
| Date | News |
|---|
| Week | Self Reading from CP4 before class (Flipped Classroom) |
Homework (Mon, 9.00am) |
Contest + Debrief/Donor Talk (Mon, 5.30-6.45-7.15pm, PL2) |
Class Topics (Mon, 7.30-9.00pm, PL2) |
|---|---|---|---|---|
| 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 | ||||
|
-06/-05/ -04/-03/ -02/-01 |
As many pages from CP4 Book 1+2; at least from preface up to the end of Chapter 4 (the entire Book 1 basically); Note: For the actual semester, you must have a(n electronic) copy of CP4 (both book 1+2) to go through this course successfully; if you don't already have both books, go to lulu.com to get a (legit) copy. |
Lots of preparatory work especially for those who do not have competitive programming background yet Optional Kattis set #00 starts on Monday, 06 Jan 2025, 21:00 SGT |
No contest yet; But if you are not a multi-lingual programmer yet, pick up both C++17 (main), Python3 (secondary), and Java17 (tertiary) by yourself during holiday time | At home: Set up a (free) Codeforces account, then use Dec24+early Jan25 holiday (~3-4 weeks) to get ≥ 1299 rating in CodeForces and/or set up a (free) Kattis (open) account, then get ≥ 500.0 points (~250 AC of ~2 pointer problems, see first ~3+ pages sorted based on Kattis difficulty ratings :O), use Prof Halim's classification here) in Kattis by Tue, 31 Dec 24, 23:59 (or MUCH earlier) to ensure course acceptance, familiarize yourself with Ubuntu 22 LTS with GNOME desktop, or self-read the older teaching materials in this public website |
|
01 12 Jan |
Preface to Chapter 1 (all pages) plus simple Ad Hoc problems in Chapter 2+3+9 |
Optional Kattis set #00 due The official Kattis set #01 starts |
Mock Ad Hoc (after first lecture) |
Let's Talk CP Introduction; Brief Course Admins; Focus on delivering some "Wow Moments"; A Bit of C++17, Python3, Java17, Mock/Preview Contest (not graded, but has high standard) |
|
02 19 Jan |
Chapter 2; Focus on Section 2.2 and 2.4.3 Read the rest of Chapter 2 by yourself |
Solve Mock 01 B/C HW01 due Kattis set #01 due and Kattis set #02 starts (we repeat this pattern until Set #12) |
Mini 01 O(n1.5) Algorithms Money Contest funded by ?? |
Be A Librarian Mastery of Libraries (C++ STL, Python Standard Library, & Java API); Focus on Bit Manipulation and Binary Indexed (Fenwick) vs Segment Tree VisuAlgo: bitmask, ufds, fenwicktree (optional), and segmenttree Decision to Drop CS3233/R without penalty by Fri, 24 Jan 25 (this time you can self-drop, but do inform Prof Halim first; hopefully we have 'no-one-drop-by-week-02' whenever possible) |
|
03 26 Jan |
Chapter 3, 4, 8, and 9; Focus on Section 3.1-2, 4.2.3, 4.4.2-3, 8.1-8.2, 8.6 (some NP-hard/complete problems with complete search solution), 9.20, and 9.21; Read Section 3.3 (DnC) too, especially about BSTA |
Solve Mini 01 B/C HW02 due Kattis set #02 due |
Mini 02 Libraries Money Contest funded by ?? |
(Binary) Searching for Answers Iterative Techniques (the fancier ones); Recursive Backtracking (bitmask-based, reverse thinking, data compression, etc); State-Space Search (harder form of SSSP, Graph modeling + BFS/Dijkstra's) with Meet in the Middle (Bidirectional Search); and finally, what if we can 'guess' the answer in Binary Search fashion? VisuAlgo: bitmask, recursion |
|
04 02 Feb |
Chapter 3, 4, 5, 6, 8, and 9; Focus on Section 3.5, 4.6.1, 5.4, 5.5, 5.8, 6.3, 8.3, 8.5, 8.6 (some NP-hard/complete problems with DP solution), 9.3, 9.7, and 9.29 Read Section 3.4 (Greedy) too |
HW03 due Solve Mini 02 B/C Kattis set #03 due |
Mini 03 Complete/Binary Search Money Contest donated by HRT |
The Art of Stenography (or Being Greedy) Dynamic Programming; "Instant" review of CS3230/CS4234 DP Materials; Focus on relationship between DP and DAG; Discussion of a few non-classic DP examples; Formulating non trivial DP states + transitions; DP vs greedy algorithm comparisons on some problems VisuAlgo: bitmask, recursion HRT class visit Details to be provided. 2025 reference: Mon, 03 Feb 2025, dinner provided from 4.30-5.25pm Assemble at COM1-Basement by 4.30pm (FCFS) |
|
05 09 Feb |
Chapter 8 and 9; Focus on Section 8.4, 9.24, and 9.25; Optional: Read the Max-Flow material of CS4234 |
HW04 due Solve Mini 03 B/C Kattis set #04 due |
Mini 04 DP or Greedy Money Contest Jane Street |
How to Prevent Flood? Quick overview of Network Flow; Quick review of Ford-Fulkerson Max Flow algorithm variants: Edmonds-Karp and especially Dinic's (short comparison with Push-Relabel); Focus on Flow Graph Modeling skill and applications VisuAlgo: maxflow Jane Street class visit (different schedule for 2026) Mon, 09 Feb 2026, mini contest at 5.05-6.20pm + very short debrief Dinner and talk by Jane Street representatives: 6.30-7.30pm We will extend the class a bit to 9.15pm tonight |
|
06 16 Feb |
No class |
HW05 due Solve Mini 04 B/C Kattis set #05 due Clear all before CNY 26 |
No class |
This AY 2025/26, CNY affect CS3233 CNY Eve (Reunion Dinner): 17 Feb 2026 PM (Mon) - so, NO CS3233 CLASS Day 1: 18 Feb 2026 (Tue) Day 2: 19 Feb 2026 (Wed) NOI 2026 Competition is this Sat, 21 Feb 2026 (online qualification contest, onsite for potential EGOI26 participants) |
|
Recess 23 Feb |
No class |
Kattis set #06, continued |
No class |
Although we are not supposed to have any face to face activity this week, nobody prevents you to keep solving Kattis problems (KS06 or more) 'by yourself' (or as a team of three) :). Again, peruse Prof Halim's classification here, this time probably aiming for the 3-4+ pointer problems... Decision to Drop CS3233/R with 'W' grade by Sun, 01 Mar 26 |
|
07 02 Mar |
Chapter 4 and 8; Focus on Section 4.6 (Bipartite Graph) and 8.5; Then read Section 9.26, 9.27, 9.28, 9.29; We postpone Graph Matching in special cases of NP-hard problems (8.6) to Week 09 |
HW06 (special) due Kattis set #06 due |
Mini 05 Graph1: Network Flow Money Contest donated by ?? |
(PS: We do midterm team contest formation outside class time via class Discord after Mini 05) Career Development Network, see Hall of Fame Quick overview of Graph Matching; Unweighted MCBM; Greedy Bipartite Matching, Focus on (Bipartite) Graph Modeling skill and applications; Quick Discussion on Weighted MCBM (Kuhn-Munkres/Hungarian algorithm); Review of DP bitmask for Graph Matching (any variant, but on small graph) -- (Edmonds' Matching algorithm shelved) VisuAlgo: maxflow, matching |
|
08 09 Mar |
On this day, Prof Halim is likely en-route back from the 2026 ICPC Asia Pacific Championship, Taoyuan, Taiwan, so we move midterm team contest to this date. Re-read Week 01-06 reading materials and CS1020/2040/C/S stuffs; Re-read "standard" CS2040/C/S graph topics by yourself (Section 4.1-4.6) |
HW07 due Solve Mini 05 B/C Kattis set #07 due |
Week01-06 + CS2040/C/S 5.15-9.45pm (4.5h) Money Contest funded by NUS ICPC endowment |
Chapter 8; Focus on the Section 8.6; Optional: Read the first 1/3 of CS4234 material No lecture, we do Midterm Team Contest VisuAlgo (for self-review): heap, hashtable, bst, graphds, dfsbfs, ufds, mst, sssp Midterm Team Contest (recent 3 AYs only): Midterm Team Contest (27 Feb 23) Midterm Team Contest (04 Mar 24) Midterm Team Contest (03 Mar 25) Our Midterm Team Contest (09 Mar 26) is on Kattis Starts at 5.15pm SGT, ends at 9.45pm SGT (4.5 hours) NOI 2026 Competition is this Sat, 14 Mar 2026 (onsite final contest; one week earlier than usual as Sat, 21 Mar 2026 is very likely Hari Raya Puasa PH) |
|
09 16 Mar |
Chapter 8; Focus on the Section 8.6; Optional: Read the first 1/3 of CS4234 material |
HW08 due Solve Mini 06 B/C Kattis set #08 due (upsolve some non AC Midterm Contest problems by yourself, optional) |
Mini 06 Graph2: Matching Money Contest donated by ?? |
Coping with (NP-)hard Problems Summary of 2/3 of CS4234 - Optimisation Algorithms (except local search) in CS3233 style. VisuAlgo: mvc, steinertree, tsp Sat 21 Mar 2026 is Hari Raya Puasa Public Holiday |
|
10 23 Mar |
Chapter 5 and 9; Focus on Section 5.3-5.6 + 9.36; Read the rest of Chapter 5 by yourself; Plus Section 9.9, 9.11, 9.15, 9.16, and 9.30 |
HW09 due Solve Mini 07 B/C Kattis set #09 due |
Mini 07 (NP-)hard Problems Money Contest donated by ?? |
NUMB3RS Mathematics overview with a movie; Focus on Python/Java Big Integer, Combinatorics, Number Theory (Extended Euclid, Modular Inverse, Fermat's little theorem, Chinese Remainder Theorem), and a bit of Probability VisuAlgo: cyclefinding |
|
11 30 Mar |
Chapter 6; Focus on Section 6.6 + 9.45; Read the rest of Chapter 6 by yourself |
Kattis set #10 due |
Mini 08 Mathematics Money Contest donated by ?? |
(we will take a class photo #1) A Glance at Bioinformatics String Processing; Focus on Suffix Trie, Suffix Tree, and Suffix Array; a bit of String Hashing VisuAlgo: suffixtree, suffixarray Thu, 02 Apr 2026 is chosen as NUS well-being day S2 AY 2025/25 This is to link with Good Friday and Easter Sunday long weekend Also, NUS Online Teaching Feedback opens this Fri You can already start declaring your vote about this course |
|
12 06 Apr |
Chapter 7; Focus on Section 7.2, 7.3, 9.5; Also Section 8.7 (problem decomposition) Read the rest of Chapter 7 by yourself |
HW10 due Solve Mini 08 B/C Kattis set #11 due |
Mini 09 String Money Contest donated by ?? |
(final team contest formation are finalised via class Discord discussion) (we will then do a no-longer-optional CS3233 Final Online Quiz (7.20-7.30pm)) Inside Video Games (Computational) Geometry; Focus on Algorithms on Points, Lines, a bit of 3D Geometry, and Polygon, Art Gallery Problem VisuAlgo: polygon, convexhull (we will run a short last lecture to close the course and may extend beyond 9pm) The Last Lecture (8.50-9.15pm) |
|
13 13 Apr |
The entire CP4 book 1+2 and beyond Do not forget to give your official NUS Online Teaching Feedback after final team contest is over |
Solve Mini 09 B/C Kattis set #12 due |
Week01-12 stuffs 5.00-10.00pm (5h) Money Contest funded by NUS ICPC endowment Join NUS ICPC team selection (~Late August 2026?) |
No lecture, we do Final Team Contest VisuAlgo (for self-review): maxflow, matching, mvc, steinertree, tsp, cyclefinding, suffixtree, suffixarray, polygon, convexhull Final Team Contest (recent 3 AYs only): Final Team Contest (10 Apr 23) Final Team Contest (15 Apr 24) Final Team Contest (14 Apr 25) Our Final Team Contest (13 Apr 26) is on Kattis Starts at 5.00pm SGT, ends at 10.00pm SGT (5 hours) No final assessment, go and save your other courses after tonight |
This table records the previous top students of CS3233 under Prof Halim (rank 1 up to at most rank 3) of that Academic Year and their current known job* as per last contact with Prof Halim (or as indicated by their latest LinkedIn update).
| AY (Iteration) | Rank | Flag and Name | Best ICPC Record | Job* |
|---|---|---|---|---|
| 08/09 (1) | 1 | WF 09 (HM) & 10 (HM) | Addepar (US) | |
| 08/09 (1) | 2 | WF 09 (HM) & 10 (HM) | Microsoft (US) | |
| 09/10 (2) | 1 | WF 12 (HM) & 13 (joint-48) | Quantcast (SG) | |
| 10/11 (3) | 1 | WF 12 (HM) | Microsoft (US) | |
| 10/11 (3) | 2 | WF 12 (HM) & 13 (joint-48) | Meta (US) | |
| 11/12 (4) | 1 | N/A | DTL (SG) | |
| 12/13 (5) | 1 | WF 13 (joint-48) & 16 (joint-14) | Anduin (VN) | |
| 13/14 (6) | 1 | WF 14 (joint-19) & 15 (joint-28) | Roblox (US) | |
| 13/14 (6) | 2 | WF 14 (joint-19) & 15 (joint-28) | Meta (SG) | |
| 14/15 (7) | 1 | Asia Singapore 15 (4th) | Hearth (US) | |
| 14/15 (7) | 2 | WF 15 (joint-28) & 18 (joint-56) | DTL (SG) | |
| 15/16 (8) | 1 | Asia Phuket+Singapore 15 (10th) | [a private hedge fund] | |
| 15/16 (8) | 2 | Asia Singapore 15 (20th) | ByteDance (SG) | |
| 16/17 (9) | TA/Exempted | Asia Manila 17+Nakhon Pathom 18 (1st) | Jump Trading (SG) | |
| 16/17 (9) | 1 | Asia Singapore 18 (16th) | Google (SG) | |
| 16/17 (9) | 2 | WF 17 (joint-20) | Glints | |
| 17/18 (10) | TA/Exempted | Asia Manila 17+Nakhon Pathom 18 (1st) | Jump Trading (SG) | |
| 17/18 (10) | 1 | Asia Jakarta 18+20 (3rd) | Sea Group (SG) | |
| 17/18 (10) | 2 | Asia Jakarta 18+20 (3rd) | Jane Street (HK) | |
| 17/18 (10) | 3 | WF 2019 (joint-62) & 20 (honor) | Jane Street (HK) | |
| 18/19 (11) | Exempted | WF 19 (joint-62) & 20 (honor) | HRT (SG) | |
| 18/19 (11) | Exempted | WF 22 (joint-61) | Stripe (SG) | |
| 18/19 (11) | 1 | WF 2018 (joint-14) & 2021 (HM) | [a private hedge fund] | |
| 18/19 (11) | 2 | Asia Jakarta 19 (1st) | [Graduated] | |
| 18/19 (11) | 3 | N/A | Allium | |
| 19/20 (12) | Exempted | Asia Jakarta 20 (3rd) | Presto Labs (SG) | |
| 19/20 (12) | 1 | WF 21 (HM) | Pendle Finance (SG) | |
| 20/21 (13) | Exempted | WF 21 (HM) | Jane Street (HK) | |
| 20/21 (13) | Exempted | Asia Jakarta 20 (3rd) | NUS PhD student | |
| 20/21 (13) | 1 | Asia Jakarta 23 (4th) | NUS SoC Research Assistant | |
| 21/22 (14) | Exempted | Asia Ho Chi Minh City 22 (3rd) | [Graduated] | |
| 21/22 (14) | Joint-1 | AP 24 (2nd); WF 24 (Silver) | Jump Trading (SG) | |
| 21/22 (14) | Joint-1 | AP 24 (2nd); WF 21 (Bronze) & 24 (Silver) | DRW (SG) | |
| 21/22 (14) | 3 | AP 24 (2nd); WF 24 (Silver) | Tower Research Capital (UK) | |
| 22/23 (15) | Exempted | WF 23 (HM) | 4th year UG, Jane Street Intern (HK) | |
| 22/23 (15) | Exempted | Asia Hanoi 24 (2nd) | 4th year UG, Jump Trading Intern (SG) | |
| 22/23 (15) | 1 | Asia Jakarta 23 (12th) | 4th year UG, Jump Trading Intern (SG) | |
| 22/23 (15) | 2 | Asia Jakarta 23 (12th) | [Graduated] | |
| 23/24 (16) | 1 | N/A | 4th year UG | |
| 23/24 (16) | 2 | Asia Taichung 25 (1st); AP 25 (2nd); WF 25 (joint-18) | 3rd year UG | |
| 23/24 (16) | 3 | WF 23 (HM) | 3rd year UG | |
| 24/25 (17) | Exempted | Asia Jakarta 24 (4th) | 2nd year UG | |
| 24/25 (17) | Exempted | Asia Jakarta 24 (4th) | 2nd year UG | |
| 24/25 (17) | Exempted | N/A | 2nd year UG | |
| 24/25 (17) | 1 | Asia Jakarta 24 (2nd); AP 25 (2nd); WF 25 (joint-18) | 2nd year UG | |
| 24/25 (17) | 2 | Asia Jakarta 25 (???) | 2nd year UG | |
| 24/25 (17) | 3 | N/A | 2nd year UG | |
| 25/26 (18) | Exempted | Asia Taichung 25 (1st) | 1st year UG | |
| 25/26 (18) | Exempted | Asia Taichung 25 (1st) | 1st year UG | |
| 25/26 (18) | 1 | ??? | ??? year UG | |
| 25/26 (18) | 2 | ??? | ??? year UG | |
| 25/26 (18) | 3 | ??? | ??? year UG |
There are two big scoring components: SP(eed) (from live contests, up to 50%) and DI(ligence) (from non-speed-related stuffs, up to 50%).
IMPORTANT change for S2 AY 2024/25 onwards: each component is now capped at 50%, i.e., one cannot just be very speedy (gets 57% from SP component but then gets a bit lazy) or just be very diligent (gets 57% from DI component but actually not that good during contests).
The theoretical max is 100%, with just 60% needed to secure at least a B+ grade in this extremely competitive course.
The SP(eed) component is further divided into two sub-components: M(ini)C(ontest) (up to 36%) and T(eam)C(ontest) (up to 22%).
The DI(ligence) component is further divided into four sub-components: H(ome)W(ork) (up to 15%), (Problem)Bs (up to 10%), K(attis)S(ets) (up to 12%), and Ac(hievements) (up to 20%).
9 Weekly Mini Contests, three problems in 75 minutes, using https://cs3233.com.
(9 weeks x (3%+0.5%+0.5%)/week = 36%).
Occasionally (if Prof Halim is not that lazy), we may open problem D (or even E) which is (are) the easier form of problem B/C. We give bonus 0.5% for top 3 in each mini contest. We use strict binary grading (Accepted or not Accepted: Wrong Answer, Time Limit, Memory Limit, Runtime Error, etc) for our contests.
1 Midterm Team Contest (10%+0.5%=10.5%, 10 "original" problems, worth 1.0% each).
1 Final Team Contest (10%+0.5%=10.5%, 10 "original" problems, worth 1.0% each).
Bonus 0.5% for top 3 teams in both team contests.
Team size is three students.
If the class size is not divisible by 3, the last team can have 4 or 5 members.
10 Weekly Homework (10 weeks * 1.5%/week = 15%).
CP4 book 1+2 review + solve certain written exercises, 1.5%.
Scoring scheme: 0% = no submission, 0.5% = poor, 1% = default score, 1.5% superb.
Solve problem B of last week's mini contest at home, on your own pace, by next Mon 05.30pm, if you fail to solve it during the live Mini Contest. Simply submit your code to cs3233.com, TA will check your last submission.
Scoring scheme:
0% = not AC in the actual mini contest and not attempted after one more week.
1% = managed to solve problem B during mini contest itself or within one more week afterwards.
There is no additional marks for solving problem C at home (for non-CS3233R students).
Prof Halim selects seven targeted Kattis problems related to CS3233 topic of that week (Prof Halim had solved six of them before with one problem that he has not solved before). To get 1% per week, student has to solve at least three (of any preferred difficulty level as indicated in Kattis) of the selected problems within the stipulated deadline (Monday night 09:00pm SGT of that week until Monday 05:30pm SGT of the following week). Note that Prof Halim can see all CS3233 class submissions at nus.kattis!
Please check the details of the 12 Kattis Sets at NUS@Kattis for this semester.
One star = 1%, most achievements are manual entry: