Despite competitive programming slowly gaining interest in the country, to our knowledge, there are currently no schools or training centers which give formal training all-year round. It is to our advantage that there are a lot of free online courses (listed below) where motivated students can learn to program.
The most motivated students need not feel alone in their study of informatics. There is a Discord server for NOI.PH. Instructions on how to join are listed below. This Discord server is exclusively for students from the Philippines. The Discord server is a place where students and trainers can ask questions and share ideas with each other. In particular, one can ask questions when feeling stuck on some of the online courses or when needing hints for past NOI problems.
We are always looking for ways to advance programming education in the country but unfortunately this is only what we have for this moment, given our limited time and resources. If you have any new ideas, or wish to extend help feel free to contact us at [email protected]
- Ateneo de Manila University hosts a yearly summer programming camp, (usually) during the last two weeks of May.
- We are also coordinating with an external organization which plans on holding training sessions but the details are not yet finalized. We will post about it here as soon as things become clear.
If you don’t have access to the training discord server yet, you should request access to the discord server by emailing [email protected] with your name, grade level, and school. For the meantime, the Discord server is available only for Filipino high school students.
Don’t really know how to program or want to brush up on your skills? Check out these free introductory courses online, made by some of the best universities in the world:
- MIT OpenCourseWare: Introduction to Computer Science and Programming in Python
- Intro to Computer Science at Udacity
- Java Programming Basics at Udacity
- C++ for Programmers at Udacity
Math and Algorithms
Math and algorithms are the foundations of computer science. After learning to program, you should learn these too. Again, fortunately, there are many free courses online from some of the best universities in the world:
- MIT OpenCourseWare: Mathematics for Computer Science
- MIT OpenCourseWare: Introduction to Algorithms
- Algorithms, Part 1 (Princeton) at Coursera
- Algorithms, Part 2 (Princeton) at Coursera
- Algorithms (Stanford) at Coursera
Ready to get your feet wet into the competition? We suggest that you look at this introductory article.
You might also be interested in the algorithm tutorials from TopCoder, which assumes some background in programming and algorithms, but gives some helpful practical tips specific to programming competitions.
Watching lecture videos and reading lecture notes can only take you so far. Get your hands dirty and start coding solutions to previous NOI problems! Follow these steps to enable yourself to submit your solutions.
Online judges are websites that contain thousands of programming problems made by people all over the world, many of them from past programming competitions. In addition to letting you read the problems, online judges typically allow you to submit solutions and get automatic feedback on whether your solutions were correct or not. Some even have “editorials” – explanations on how to solve a problem for people who are unable to solve them. These are the most popular online judges at the moment:
- Codeforces – a Russian platform, one of the largest, most popular sites today
- AtCoder – a Japanese platform, holds online contests which are conveniently timed for people in East Asia (including the Philippines)
- HackerRank – more generally aimed for people preparing for technical interviews, but also contains many difficult problems, including ones from Kevin Charles Atienza; currently the official platform of the NOI
- CodeChef – an Indian platform, well-known for its long contest format (monthly 10-day-long contests featuring insanely hard problems)
- CS Academy – a Romanian platform, currently on hiatus but has some interesting problems and a nice interface
- UVa Online Judge – an oldie but goodie containing problems from previous International Collegiate Programming Competitions, going as far back as the late 1990s and early 2000s; best used with uHunt
- Sphere Online Judge – a Polish platform, another online judge which has been around for a longer time, contains many classic problems that serious competitors should know about
- ProjectEuler – slightly different from the other platforms listed; problems have a more mathematical flavor and only the final answer, not the entire program, is required to be submitted
The top four websites listed above even hold online competitions regularly. Try them out!
Recommended Books (Free)
Recommended Books (Buy Online)
- Algorithm Design, by Kleinberg
- Introduction to Algorithms, by Cormen, Leiserson, Rivest, and Stein
- The Art and Craft of Problem Solving, by Zeitz
- A Primer for Mathematics Competitions, by Zawaira and Hitchcock
Further books may be found at the IOI’s Recommended Reading List.