We are planning to create a course for beginners. Beginners often come to site and got overwhelmed by so many problems present on the site. Many of them often ask where to start from. So, we though of creating a course module for them. The module will be a set of practice contests on CodeChef. The practice contests will be contests that will keep on running with its solution public at all times.
For this module, we will identify the key set of topics that a beginner should solve in order to reach at a certain level. For each topic, we will have some 5 to 10 or more problems on that topic that a programmer should solve. I have collected some set of problems for following topics (in increasing order of the difficulty). Please feel free to give feedback, suggest some problems that you think can be added. You can also suggest for removing some set of problems. Any suggestions regarding would be most welcome.
Note that currently this module is not ready. It’s still work in progress. I have marked this post a community wiki. Please feel free to edit it.
Module 1: What’s competitive programming?
What’s competitive programming? (tell about major competitions, platforms etc.)
Getting started with CodeChef platform
- Solving your first problem in C on CodeChef: https://www.youtube.com/watch?v=qM-TzG3dkcc
- Solving your first problem in C++ on CodeChef
- Solving your first problem in Java on CodeChef
- Common programming mistakes at Codechef.: https://www.youtube.com/watch?v=VmvGfVadOoU
What sort of errors do you encounter and what they mean?
Learn Basic Language Features:
Just get it done Starting questions to do
- FLOW001 (add two numbers)
- TEST (one of the starting problem to solve on CodeChef)
- INTEST (for testing whether your input/output routines are fast enough)
Basic knowlege of if/else conditions
Basic knowledge of arrays
- RAINBOWA (basic knowledge of arrays)
- COPS (requires bit of creativity )
- TEMPLELA (contains some interesting corner cases)
Working with strings
- NITIKA (reading strings, and string related formatting)
- GOODBAD (ASCII characters, lower-case and uppercase characters)
- FLOW015 (checks basic knowledge of strings and calender)
- FRGTNLNG (very nice question to test input processing skills)
- LAPIN (check whether a string is palindrome or not)
- CSUB (good for understanding notion of substrings)
Dealing with numbers
- FLOW002 (find remainder of a number a % b)
- FLOW004 (find sum of first and last digit of a number)
- FLOW006 (find sum of digits of a number)
- FLOW007 (given a number, reverse it)
Handling floating point numbers
- FLOW011 (learn to deal with floating point)
Off to recusion
- INTRN080 (Ackermann function)
- Another way to implement this function without stack overflow.
Few More Implementation Problems:
- VILTRIBE (arrays)
- TEMPLELA (arrays)
Learn about time complexity, order notation.
Give some articles.
Basic Number Theory:
- FLOW016 (find gcd and lcm)
- FCTRL2 (decimal representation): https://www.codechef.com/wiki/tutorial-small-factorials
- CKISSHUG (exponentiation)
- CHMOD (exponentiation)
- LEVY (sieve)
- NPL1701C (sieve)
- CDQU3 (factorization)
- https://www.codechef.com/OCT09/problems/H4/, https://www.codechef.com/wiki/tutorial-just-simple-sum (bit intermediate level)
- HISTOGRA spoj (either we will make its clone on CodeChef or a similar CodeChef problem can be used.)
- DCGAME (intermediate)
- CHFQUEUE (intermediate)
SUMTRIAN: See tutorial at https://www.codechef.com/wiki/recursion-sums-triangle
- J2 Codechef, Tutorial: https://www.codechef.com/wiki/tutorial-lcs-problem-revisited
- H3 Codechef, https://www.codechef.com/wiki/tutorial-kayaks
Incomplete parts. (Add few graph theory topics)
Depth First Search (dfs)
Breadth First Search (bfs)