# Learning Module for Beginners

Hi guys,

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

References:
https://www.codechef.com/getting-started

### Learn Basic Language Features:

Just get it done Starting questions to do

• 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

• FLOW010 (basic knowledge of if/else conditions)
• FLOW014 (another if/else knowledge question)

Basic knowledge of arrays

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:

• ICPC16B
• VILTRIBE (arrays)
• TEMPLELA (arrays)

Learn about time complexity, order notation.
Give some articles.

Basic Number Theory:

Stacks

• COMPILER
• ONP
• HISTOGRA spoj (either we will make its clone on CodeChef or a similar CodeChef problem can be used.)
• TSECJ104
• THESAV
• TE3N
• BEX
• DCGAME (intermediate)

Queue:

• COOK82C
• RDX
• CHFQUEUE (intermediate)

Recursion:

SUMTRIAN: See tutorial at https://www.codechef.com/wiki/recursion-sums-triangle

• NOKIA
• TRISQ
• LFSTACK
• FICE
• COINS
• MIXTURES

Sorting:

• TSORT
• MRGSRT
• TACHSTCK
• STICKS

Greedy:

• TACHSTCK
• CIELRCPT
• MAXDIFF
• CHEFST
• CAKEDOOM
• CLETAB
• MANYCHEF
• MMPROD
• CHEFTMA
• STICKS
• FGFS
• KNPSK
• LEMUSIC

Binary Search:

• STRSUB
• STACKS
• DIVSET
• LOWSUM
• SNTEMPLE
• SNAKEEAT
• SCHEDULE
• RIGHTTRI
• FORESTGA
• CHEFHCK2

Basic DP:

### Incomplete parts. (Add few graph theory topics)

Depth First Search (dfs)

• CHEFHACK