|
Last updated on:
20 January 2009 07:59:56 PM
Preface
These web pages are being re-written for
CS3233 - Competitive Programming course that I teach in
Semester 2, 2008/09. Many sections are still missing... To see the older
version (which contains too much materials from USACO training gateway), click this.
These web pages contain a
collection of relevant data structures, algorithms, and programming tips
specially written for University students who want to be more competitive in
ACM International Collegiate Programming Contest (ICPC). Although written
with ICPC format in mind, these web pages can also be used by high school
students who want to be competitive in International Olympiad in Informatics
(IOI) or other relevant programming competitions.
These web pages do not contain detailed theories why certain data structures
or algorithms are correct
(I will simply cite other
references).
My objective in writing these web pages is
similar with ICPC vision: to further improve humanity by training students
to be more competitive in programming contests. The possible long term
effect is future Computer Science researchers who are well versed in problem
solving skills.
Target Audience (Intermediate Programmers)
The reader should have some background knowledge in
basic data structures, algorithms, and programming languages. Typically, a
2nd year Computer Science students in a University (who have passed a kind
of "programming methodology" and "basic data structures and algorithms"
module) or students who have
participated in National or International Olympiad in Informatics should have the necessary background.
I use C++ codes to illustrate some concepts.
The contents in these web pages are not targeted for expert programmers
who aim to win an ICPC regional contest or even world final contest.
To gain access to newer and more sophisticated data structures or
algorithms - which may be required to be very good in problem solving, browse the Internet for other sources.
Table of Contents
(will only be uploaded probably in May 2009,
when the course is over)
01. Introduction
02. Basic Data Structures and Algorithms
03. Sorting and Searching
04. Greedy
05. Dynamic Programming
06. Graph
07. Mathematics-Related
08. String Processing
09. Computational Geometry
10. Competition Strategy
11. Links to Computer Science Research: NP-hardness, exact/complete algorithm
versus
inexact/stochastic local search
Acknowledgements
I thanks Jesus Christ (JC), for giving me some talents in
this field. Without that, these web pages do not exist. I also want to thanks my parents, who forced
me to learn something with my new PC (it was, back in 1995). Eventually, I picked
some programming books, became interested with them, and never look back
since then.
|
Very Important Note
If you want to copy anything from this website
and distribute it either for profit or non profit, you need to
ask my permission first
and must cite this website. Thanks for your understanding :)
In case you do not know, parts of the (older) content of this website
are already published in Ahmed Shamsul Arefin's book: Art of Programming
Contest.
Please take a look.
If you need to have a printed version of the (older version) of this
website, buy/print this book.
Steven Halim
PhD candidate,
Instructor
Department of Computer Science
National University of Singapore |
 |
References
|
Most of these books should be available in
your University libraries.
If not, you can buy it online, e.g. through
amazon.com.
|
|
1 |
 |
Introduction to Algorithms, 2nd edition, 2001
by: Thomas H. Cormen, Charles E.
Leiserson, Ronald L. Rivest, and Clifford Stein
MIT Press
ISBN:
0262032937
(website)
|
|
2 |
 |
USA Computing Olympiad (USACO) Training Gateway
by Rob Kolstad and team
(website) |
|
3 |
 |
Algorithm Design, 2005
by Jon Kleinberg and Eva Tardos
Addison Wesley
ISBN:
0321358287 |
|
4 |
 |
Programming Challenges, 2003
by Miguel A. Revilla and Steven S. Skiena
Springer
ISBN:
0387001638
(website)
|
|
5 |
 |
Introduction to the Design and
Analysis of Algorithms, 2nd edition, 2006
by Anany Levitin
Addison Wesley
ISBN:
0321358287 |
|
6 |
 |
The
Algorithm Design Manual, 2nd edition, 2008
by
Steven S. Skiena
Springer
ISBN:
1848000693
(website) |
|
7 |
 |
Algorithms in C++, 2002
by Robert Sedgewick
Addison Wesley
ISBN:
020172684X |
|
8 |
 |
Programming Pearls, 1999
by Jon Bentley
Addison Wesley
ISBN: 0201657880 |
|
9 |
 |
Art of Programming Contest, 2007
by Ahmed Shamsul Arefin (and me) |
This document, index.html, has been accessed 4016 times since 05-Jan-09 15:29:06 SGT.
This is the 14th time it has been accessed today.
A total of 2262 different hosts have accessed this document in the
last 324 days; your host, 38.107.191.88, has accessed it 1 times.
If you're interested, complete statistics for
this document are also available, including breakdowns by top-level
domain, host name, and date.
|