This module aims to prepare students in competitive problem solving.
It will benefit NUS students who want to compete in ICPC, invited high school students (for online contests only) 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 (2019/20 + 20/21 - sponsorship frozen due to COVID-19 cancelling/postponing most ICPC-related events) ICPC donors: Indeed Singapore, Sea Group, SenseTime, Jump Trading, Citadel | Citadel Securities, HRT, DRW.
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 (Sem 2 AY2020/21) is ... technically only limited by the REDUCED size of COM1-B-PL2 (46 fast Acer Nitro laptops) but I can only have 15 students onsite at PL2 reduced capacity (update 01 Jan 2021: now 17; update 01 Mar 2021: up to 20 is possible)... but not that many NUS students are eligible (or dare enough) to take this extremely competitive module. In 12 academic years of CS3233 classes, on average only ~19 NUS students were enrolled per year and only a few (11 out of 225) are female...
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: NOI (or IDN OSN, VNM VNOI, CHN NOIP, MYS MCO, PHL NOI, IND ICO, etc), IOI (especially IOI 2020 (Online Competition) hosted by Singapore), ICPC (especially ICPC Asia Singapore Regional Contest 2015/2018), Google Code Jam, Facebook Hacker Cup, CodeForces rated rounds, Topcoder Open, 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 module has a very high performance bar and the average CAP of the students enrolled in the past twelve academic years excluding recent AYs (cannot track anymore) were 4.57 , 4.78 (remember, year 1 nowadays have much more S/U options) , 4.3+ (not tracked, I didn't survey that AY) , 4.33, 4.44, 4.43, 4.45, and 4.30 (out of 5.00), respectively. You will need special permission from the instructor (Dr Steven Halim) if you do not satisfy the pre-requisites listed above (the filter is there for your own good).
Are you OK to be tortured for one semester for a mere 4 modular credits (your other modules may also suffer)?
You may have to take lighter set of other modules or be ready to S/U other modules or to rush course project submissions (for project-based modules 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 modules only during study week (no final assessment for CS3233). Please do NOT take CS3233 module with another module that is known to be challenging/demanding (e.g., the 5 MC 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 (probably they still join the contests in online mode only due to COVID-19). Try to ask CS3233 seniors who have taken (and survived) this module before applying, read their public stories, e.g., Lim Jay Ching (exchange from University of Waterloo), or read several NUSWhispers related posts about CS3233!
Are you thinking on applying to top (or emerging) IT companies like NUS current (2019/20 and 20/21) ICPC donors: Indeed Singapore, Sea Group, SenseTime, Jump Trading, Citadel | Citadel Securities, HRT, DRW; or other large IT companies like Google, Facebook, Microsoft, Dropbox, 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 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 (11) in CS3233 S2 AY2020/21 (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 Java (nobody survived with only Python but this language has gained traction in recent years), 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?
(Senior) Lecturer: Dr Steven Halim, current Singapore IOI team leader, Deputy Director for IOI 2020 (became an online competition) and IOI 2021 in Singapore, NUS ICPC coach, ICPC Asia Singapore Regional Contest Director (2015 and 2018), the author of Competitive Programming text book (the official text book of this module, we will use CP4 Book 1 and Book 2).
Rating (out of 5.0, SoC avg ~4.1) | Jan-Apr 2021 (n=19?) | Jan-Apr 2020 (n=12) | Jan-Apr 2019 (n=22) | Jan-Apr 2018 (n=21) | Jan-Apr 2017 (n=16) | Jan-Apr 2016 (n=20) | Jan-Apr 2015 (n=22) |
---|---|---|---|---|---|---|---|
Module feedback | Target ≥ 4.5 | 4.9 (PB) ▲ | 4.6 ▼ | 4.8 == | 4.8 ▲ | 4.563 ▼ | 4.733 ▲ |
Module difficulty | Target ≤ 4.2 | 4.2 ▼ | 4.3 | 4.1 | 4.3 | 4.563 :O | 4.067 |
Steven's teaching | Target ≥ 4.5 | 4.9 (PB) ▲ | 4.5 ▼ | 4.8 == | 4.8 ▲ | 4.603 ▼ | 4.863 ▲ |
Qualified Teaching Assistant:
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.30pm to answer any CS3233/Competitive Programming queries, if any (or e-consultations via Zoom if necessary).
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 notify Steven for offline registration before round 3B (the last day of application). The offline registration will be closed as soon as the number of students hits 1517 accepted NUS students (the current hard limit of the reduced capacity of PL2). This time we will *NOT* be joined ONSITE by about ~20 SG high school students but some of them may join online due to COVID-19 restrictions. 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 Steven that the applicant can score at least 500.0 Kattis points by Thursday, 31 December 2020, 23.59.
Note: This course registration section will not be prominent from Monday, 11 January 2021 onwards (Week 01). This behavior is normal. You can view it again by scrolling to the top of this page.
Date | News |
---|
No | Flag | Name | Course/Year | Speed | Diligence | Total |
---|---|---|---|---|---|---|
01 | PHL | Dan Alden Baterisna [R] | COM/1 | 45.5 | 46.0 | 91.5 (A+) |
02 | IDN | Vincent Tandya | SCI/4 | 35.5 | 51.0 | 86.5 (≥ A), 5pt gap |
03 | SGP | Lim Dewen, Aloysius | COM/2 | 32.5 | 50.0 | 82.5 (≥ A), 4pt gap |
04 | SGP | Guan Yang Ze | COM/2 | 32.5 | 49.5 | 82.0 (≥ A) |
05 | IDN | Dasco Gabriel [R] | COM/1 | 40.5 | 40.5 | 81.0 (≥ A) |
06 | IDN | Fidella Widjojo | COM/2 | 33.5 | 45.5 | 79.0 (≥ A-) |
07 | SGP | Ganapathy Sanath Balaji | CEG/3 | 31.5 | 47.0 | 78.5 (≥ A-) |
08 | SGP | Pang Jia Hao | SCI/4 | 28.0 | 50.5 | 78.5 (≥ A-) |
09 | MYS | Tan Wei Xin | COM/2 | 31.5 | 44.5 | 76.0 (≥ A-) |
10 | SGP | Walter Kong | CEG/2 | 29.5 | 45.5 | 75.0 (≥ A-) |
11 | SGP | Sherman Lim Jun Hong | COM/2 | 28.0 | 46.0 | 74.0 (≥ A-) |
12 | CHN | Zhou Zijian | COM/2 | 27.5 | 45.5 | 73.0 (≥ A-), 4pt gap |
13 | IDN | Lucia Tirta Gunawan | COM/2 | 28.5 | 40.5 | 69.0 (≥ A-) |
14 | SGP | Nigel Tan | CEG/3 | 21.0 | 47.5 | 68.5 (≥ A-) |
15 | KOR | Choi Min Suk | COM/3 | 25.5 | 42.5 | 68.0 (≥ A-) |
16 | SGP | Ho Kai Lun | ENG/3 | 19.0 | 41.0 | 60.0 (≥ B+) |
Week | Self Reading from CP4 before class (Flipped Classroom) |
Homework (Mon, 9.00am) |
Contest + Debrief (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 copy of CP4 (both book 1+2) to go through this course successfully; if you don't already have both books, go to @ NUS co-op or @ Popular bookstores islandwide to grab them. |
Lots of preparatory work especially for those who do not have competitive programming background yet Optional Kattis set #00 starts on Friday, 01 Jan 2021, 00:00 SGT |
No contest yet; But if you are not a multi-lingual programmer yet, pick up both C++11 (and C++17) (main), Python3 (secondary), and Java11 (tertiary) by yourself during holiday time | At home: Set up a (free) Kattis account (open), solve first few easy ≤ 3.0 pointer problems @ Kattis, then use Dec20+early Jan21 holiday (~3-4 weeks) to get ≥ 500.0 points (~250 AC of ~2 pointer problems (first ~3+ pages sorted based on Kattis difficulty ratings :O), use Steven's classification here) in Kattis by Mon, 11 Jan 21, 09:00 (or earlier) to ensure module acceptance, familiarize yourself with Ubuntu 20 LTS with GNOME desktop, or self-read the older teaching materials in this public website |
01 11 Jan |
Preface to Chapter 1 (all pages) plus simple Ad Hoc problems in Chapter 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++11/C++17, Python3, Java11, Mock/Preview Contest (not graded, but has high standard) |
02 18 Jan |
Chapter 2; Focus on Section 2.2, 2.4.3, and 2.4.4; Read the rest of Chapter 2 by yourself Decision to Drop CS3233/R without penalty by Fri, 22 Jan 21 (email UG office for manual drop, cc to Dr Steven Halim; avoid weekend >.<; for this year 2021, the class selection has been made very rigorous and Steven is looking for his rare 'no-one-drop-by-week-02' achievement...) |
HW01 due Kattis set #01 due and Kattis set #02 starts (we repeat this pattern until Set #12) |
Mini 01 "~Linear" Algorithms Money Contest sponsored by [all 7 ICPC donors] |
Be A Librarian Mastery of Libraries (C++ STL, Java API, & Python Standard Library); Focus on Bit Manipulation and Binary Indexed (Fenwick) Tree VisuAlgo: bitmask, segmenttree (optional), fenwicktree |
03 25 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 |
HW02 due Solve Mini 01 B/C Kattis set #02 due |
Mini 02 Libraries Money Contest sponsored by [all 7 ICPC donors] |
(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 01 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 Search Money Contest sponsored by [all 7 ICPC donors] |
(PS: We do a democratic decision making: we postpone Midterm Team Contest to Week 07 and swap Week 06 with Week 07) 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 |
05 08 Feb |
Chapter 8 and 9; Focus on Section 8.4, 9.24, and 9.25; Optional: Read the Max-Flow material of CS4234 CNY Reunion Dinner on Thu, 11 Feb CNY Day 1 on Fri, 12 Feb CNY Day 2 on Sat, 13 Feb Valentine's Day on Sun, 14 Feb CS3233 class is *not* affected |
HW04 due Solve Mini 03 B/C Kattis set #04 due |
Mini 04 DP or Greedy Money Contest sponsored by [all 7 ICPC donors] |
(PS: We will do midterm team contest formation after Mini 04 so that you can practice as a team over Wk6 and/or recess week) 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 |
06 15 Feb |
Chapter 4 and 8; Focus on Section 4.6 (Bipartite Graph) and 8.5 first. NOI 2021 Competition; Sat, 20 Feb 21 (online qualification contest) |
No manual HW (CNY) Solve Mini 04 B/C (auto) Kattis set #05 due (auto) |
Mini 05 Graph1 Network Flow Money Contest sponsored by [all 7 ICPC donors] |
As we bring this lecture forward by 2 weeks and it is right after CNY+V-Day 2021, there is a possibility that students are not yet prepared; hence Steven has decided to push the harder graph matching topics to Wk12 instead. Social Development Network (Part 1) Quick overview of Graph Matching; Unweighted MCBM; Greedy Bipartite Matching, Focus on (Bipartite) Graph Modeling skill and applications; Review of DP bitmask for Graph Matching (any variant, but on small graph) VisuAlgo: maxflow, matching |
Recess 22 Feb |
Although we are not supposed to have any face to face activity this week, nobody prevents you to keep solving Kattis problems 'by yourself' (or as a team of three) :). Again, peruse Steven's classification here, this time probably aiming for the 3-4+ pointer problems... Still on with hybrid onsite+online mode due to COVID-19): Steven is busy dealing with IOI 2021 e-'Winter' Meeting for this entire recess week: 22-26 Feb 21 (preparatory meeting for various committee members to prepare the actual IOI 2021 Decision to Drop CS3233/R with 'W' grade by Sun, 28 Feb 21 |
Kattis set #06 is up |
No class |
No class |
07 01 Mar |
Re-read Week 01-05 reading materials and CS1020/2040/C/S stuffs; Re-read Section 3.3 (D&C) and 3.4 (Greedy) if you skip it last time Re-read "standard" CS2040/C/S graph topics by yourself (Section 4.1-4.6) |
HW05 due Solve Mini 05 B/C Kattis set #06 due |
Midterm Team Contest (2 AYs ago) Midterm Team Contest (last AY) Midterm Team Contest (this AY) CS2040/C/S + Week01-05 5.30-9.30pm (4h) Money Contest sponsored by [all 7 ICPC donors] |
Starts at 5.30pm SGT, ends at 9.30pm SGT (4 hours) No lecture, we will do Midterm Team Contest VisuAlgo (for self-review): heap, hashtable, bst, graphds, dfsbfs, ufds, mst, sssp This Midterm Team Contest is on Kattis |
08 08 Mar |
Chapter 8; Focus on the Section 8.6; Optional: Read the first 1/3 of CS4234 material |
HW06 due (upsolve some non AC Midterm Contest problems by yourself, optional) Kattis set #07 due |
Mini 06 Graph2 Matching Money Contest sponsored by [all 7 ICPC donors] |
Coping with (NP-)hard Problems Summary of the first 1/3 of CS4234 - Optimisation Algorithms in CS3233 style. VisuAlgo: mvc, steinertree, tsp |
09 15 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 NOI 2021 Competition; Sat, 20 Mar 21 (onsite for up to top 50 only) |
HW07 due Solve Mini 06 B/C Kattis set #08 due |
Mini 07 (NP-)hard Problems Money Contest sponsored by [all 7 ICPC donors] |
NUMB3RS Mathematics overview with a movie; Focus on Java/Python Big Integer, Combinatorics, Number Theory (Extended Euclid, Modular Inverse, Fermat's little theorem, Chinese Remainder Theorem), and a bit of Probability VisuAlgo: cyclefinding |
10 22 Mar |
Chapter 6; Focus on Section 6.6 + 9.45; Read the rest of Chapter 6 by yourself |
HW08 due Solve Mini 07 B/C Kattis set #09 due |
Mini 08 Mathematics Money Contest sponsored by [all 7 ICPC donors] |
A Glance at Bioinformatics String Processing; Focus on Suffix Trie, Suffix Tree, and Suffix Array; a bit of String Hashing VisuAlgo: suffixtree, suffixarray |
11 29 Mar |
Chapter 7; Focus on Section 7.2, 7.3, 9.5; Read the rest of Chapter 7 by yourself Good Friday and Easter Sunday this Week |
HW09 due Solve Mini 08 B/C Kattis set #10 due |
Mini 09 String Money Contest sponsored by [all 7 ICPC donors] |
(we have taken a class photo and it is good) Inside Video Games (Computational) Geometry; Focus on Algorithms on Points, Lines, a bit of 3D Geometry, and Polygon, Art Gallery Problem VisuAlgo: polygon, convexhull |
12 05 Apr |
The entire CP4 book 1+2 and beyond Focus on Section 8.7 (problem decomposition) |
HW10 not yet due Solve Mini 09 B/C Kattis set #11 due |
Mini 10 (Computational) Geometry Money Contest sponsored by [all 7 ICPC donors] |
Donor talks: 1. Jump Trading [7.20-7.50pm + QnA] 2. Indeed Singapore [8.00-8.30pm + QnA] (we will do final team contest formation and then run a short last lecture (omitting random topics in Chapter 9)) The Last Lecture (8.40-9.10pm) |
13 12 Apr |
The entire CP4 book 1+2 and beyond |
HW10 due next Wed Solve Mini 10 B/C Kattis set #12 due |
Final Team Contest (2 AYs ago) Final Team Contest (last AY) Final Team Contest (this AY) Week01-12 stuffs 5.30-9.30pm (4h) Money Contest sponsored by [all 7 ICPC donors] Join NUS ICPC team selection (~Early? September? 2021) If COVID-19 situation is better |
Starts at 5.30pm SGT, ends at 9.30pm SGT (4 hours) No lecture, we will do Final Team Contest This Final Team Contest will be on Kattis No final assessment, go and save your other modules after tonight |
This table records the previous top students of CS3233 under Dr Steven Halim (rank 1 up to at most rank 3) of that Academic Year and their current known affiliation as per last contact with Dr Steven Halim.
AY (Iteration) | Rank | Flag and Name | Best ICPC Record | Current Job |
---|---|---|---|---|
2008/09 (1) | 1 | Ngo Minh Duc | World Finalist 2009 (HM) & 2010 (HM) | Addepar (US) |
2008/09 (1) | 2 | Nguyen Hoanh Tien | World Finalist 2009 (HM) & 2010 (HM) | Microsoft (US) |
2009/10 (2) | 1 | Trinh Tuan Phuong | World Finalist 2012 (HM) & 2013 (joint-48) | Quantcast (SG) |
2010/11 (3) | 1 | Koh Zi Chun | World Finalist 2012 (HM) | Microsoft (US) |
2010/11 (3) | 2 | Harta Wijaya | World Finalist 2012 (HM) & 2013 (joint-48) | Facebook (US) |
2011/12 (4) | 1 | Yang Mansheng | N/A | Dynamic Technology Lab (SG) |
2012/13 (5) | 1 | Nguyen Tan Sy Nguyen | World Finalist 2013 (joint-48) & 2016 (joint-14) | Anduin Transactions (VN) |
2013/14 (6) | 1 | Nathan Azaria | World Finalist 2014 (joint-19) & 2015 (joint-28) | Facebook (US) |
2013/14 (6) | 2 | Jonathan Irvin Gunawan | World Finalist 2014 (joint-19) & 2015 (joint-28) | Jump Trading (SG) |
2014/15 (7) | 1 | Stefano Chiesa Suryanto | Fourth place in Regional Asia Singapore 2015 | Improbable (UK) |
2014/15 (7) | 2 | Vu Dinh Quang Dat | World Finalist 2015 (joint-28) & 2018 (joint-56) | Dynamic Technology Lab (SG) |
2015/16 (8) | 1 | Nguyen Quang Dung | Tenth place in Regional Asia Phuket+Singapore 2015 | Graduated (pls update me) |
2015/16 (8) | 2 | Truong Ngoc Khanh | Twentieth place in Regional Asia Singapore 2015 | Sea Group (SG) |
2016/17 (9) | 1 | Tan Jun An | Sixteenth place in Regional Asia Singapore 2018 | Google (SG) |
2016/17 (9) | 2 | Agus Sentosa Hermawan | World Finalist 2017 (joint-20) | Sirclo (ID) |
2017/18 (10) | 1 | Robin Christopher Cham Yu | Third place in Regional Asia Jakarta 2018+2020 | 4th year UG |
2017/18 (10) | 2 | Sergio Vieri | Third place in Regional Asia Jakarta 2018+2020 | 4th year UG |
2017/18 (10) | 3 | Bay Wei Heng | World Finalist 2019 (joint-62) & 2020 (result TBA) | Jane Street |
2018/19 (11) | 1 | Nguyen Dinh Quang Minh | World Finalist 2018 (joint-14) & 2021 (to be conducted sometime in 22?) | 3rd year UG |
2018/19 (11) | 2 | Tran Tan Phat | Champion in Regional Asia Jakarta 2019 | 3rd year UG |
2018/19 (11) | 3 | Herbert Ilhan Tanujaya | N/A | Traverse Technologies |
2019/20 (12) | 1 | Vuong Hoang Long | World Finalist 2021 (to be conducted sometime in 22?) | 2nd year UG |
2020/21 (13) | 1 | Dal Alden Baterisna | N/A | 1st year UG |
There are two big scoring components: SP(eed) (from live contests, up to 61%) and DI(ligence) (from non-speed-related stuffs, up to 55%).
The theoretical max is therefore 116%, with just 60% needed to secure at least a B+ grade in this extremely competitive module.
The SP(eed) component is further divided into two sub-components: M(ini)C(ontest) (up to 40%) and T(eam)C(ontest) (up to 21%).
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 18%).
10 Weekly Mini Contests, three problems in 75 minutes, using Mooshak (or a new system, TBC).
(10 weeks x (3%+0.5%+0.5%)/week = 40%).
Occasionally (if Steven 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 + update the lecturer, 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.15pm (closed by the time Robin's consultation hour is over), if you fail to solve it during the live Mini Contest. Simply submit your code to Mooshak, TA will check your last submission @ Mooshak.
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 before deadline.
There is no additional marks for solving problem C at home (for CS3233R students).
We use Kattis@NUS for this semester.
Steven selects twelve (eventually reduced to just nine from Set #04 onwards) targeted Kattis problems related to CS3233 topic of that week (he has solved 90% of them 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 Steven can see all CS3233 class submissions at nus.kattis!
One star = 1%, most achievements are manual entry: