2014/2015, Semester 2
School of Computing (Computer Science)
Modular Credits: 4
This module aims to prepare students in
It will benefit NUS students who want to compete in ACM ICPC, invited high school students who want to compete in IOI, and NUS students in general who aspire to excel in technical interviews of top IT companies.
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 IVLE page is not maintained, please visit
At least an 'A-' grade in CS2010/CS2020 or special permission from the lecturer (e.g. had participated
and did well
in national or international level programming contest(s) like NOI, IOI, or ACM ICPC).
The 2 hours lecture, 1 hour tutorial, and 0 hour lab are combined into 3 hours lecture + hands-on session
on every Wednesday 6-9.15pm
Each class usually starts with 75 minutes top-coder individual programming contest, followed by 15 minutes break / discussion of past contests.
Each contest contains: 1 (very?) easy + 1 easy-medium problems that have been taught in previous week(s) + 1 medium-hard problem that can also be from previous week(s) or just simply "out of topic", usually harder/more creative (this one for CS3233R).
Then, the course material will be delivered via lectures.
On most weeks, classes will end by
For weekly homeworks (3+3 = 6 hours++), students are expected to read "Competitive Programming 3" textbook and attempt some written and programming exercises...
Students have to do
lots of programming
in this course.