CUET CP Syllabus
CUET CP Syllabus
Prepared By
Md. Billal Hossain (Lecturer, Dept. of CSE, CUET)
Omar Sharif (Lecturer, Dept. of CSE, CUET)
Jannatul Ferdows Jenny (‘12), Tahsin Rahman (‘13), Yamin Iqbal (‘14)
Rian (‘15), Avijeet (‘15), Ishtiaq (‘16), Mehedi (‘16), Eftikhar (‘16), Rony
(‘16), Tapojit (‘16), Rajon (‘16), Tajir (‘16), Maruf (‘16), Sayem (‘16)
Ahasan (’17), Fariha (’17), Robin (’17), Shawly (’17), Tasfia (’17)
CUET Competitive Programmer’s Syllabus
About:
This is a guideline for the Competitive Programmers of CUET in accordance with
their academic calendar. It contains the topics that must be covered within first two years
if you want to qualify for the world finals. The syllabus is divided into four terms. Each
term covers some topic containing detailed tutorials and problem links. Level-1 Term-1
covers the basics of programming Language. Level-1 Term-2 is the most crucial part since
it introduces the basic idea of data structures/algorithms. In Level-2, intermediate/some
advanced topics are covered. The syllabus of Level-3 and Level-4 is not provided here. It’s
your own duty to find out your lacking and focus/specialize on them. The links provided
here will help you in a great deal but there might be many more resources. So always
keep yourself up-to-date.
Goal:
To see CUETians in ICPC World Finals.
Shortcuts:
1. Level-1 Term-1
2. Level-1 Term-2
3. Level-2 Term-1
4. Level-2 Term-2
5. Level-3 & Level-4
Contact:
For any constructive feedback send an email to
1. Md. Billal Hossain ([email protected])
2. Omar Sharif ([email protected])
Term wise Syllabus
Level-1 Term-1
Tentative Class Schedule:
Week Topic
1 Variables, Data Types, Scanf/Printf, Format Specifier
2 If-else, Nested If-else
3 Loop Basics: While, Do-while, For-loop
4 Nested Loop, Break, Continue
5 Loop Advanced: Loop+If-else
Online Contest-1
6 Array: 1D, 2D
7 Character Array, String
8 Function, Recursion
9 Binary Search + Others
10 STL Basic
Online Contest-2
Guidelines:
● Get complete idea about C
● Get basic idea about C++
● Try to implement what you think
● Must participate in Long-Contests (Upto 5 days) that will be held after each class
● Take help from your Batch-mates, Seniors and Teachers if needed
Expectations:
● Able to implement your idea
● Familiarize with all online judges
● Read Tamim Shahriar Subeen’s Book completely
● Solve all the problems of LightOJ beginner’s category
● Total Number of problems solved: 200+
● CF rating:
-At the start: 900+
-At the end: 1200+
Tips:
● Learn about different good resources as well. Geeksforgeeks, emaxx, competitive
programming 3, Mahbubul Hasan Shanto vai’s book on programming contest,
Shafaet Ashraf vai’s blog. These are good, but not just these-there are others.
Google is your friend.
● Spend around an hour or two at each problem before searching for solutions
online. Not more than that, because what is important for you at this stage is to
solve more and more problems, and if you spend all your day at one problem, your
overall solve count will be low and you will not learn much. But make sure that you
spend this time wisely-when we say we have worked for an hour, what happens in
reality is that we have worked for just 20 minutes in total, and the other 40 minutes
have been wasted away via other ‘useful’ procrastination. Perhaps learn to adopt
the Pomodoro method.
● After seeing the solution to a problem, make sure to understand the solution fully
and absolutely. There should be no doubt regarding anything with the solution,
and if there is, that means you have not understood it fully/internalized it. Problem
solving is more about pattern matching, and being able to match an unseen
problem with problems that you have seen before-but if you haven’t internalized
the solution to the problems that you couldn’t solve by yourself, you have then
actually just memorized it, and memorized stuff doesn’t actually stay in your mind
for long-and you won’t be able to recognize patterns later as well.
Tutorials & Problems List for Level-1 Term-1
(1-1) Week 1 (Variables, Data types, Scanf/Printf, Format Specifier)
Tutorials:
1. [প্রোগ্রোম িং বইঃ অধ্যোয় দুই] ডোটো টোইপ, ইনপু ট ও আউটপু ট।
2. List of all format specifiers in C programming
3. Data Types in C
4. https://www.youtube.com/watch?v=e9Eds2Rc_x
Problems:
1. Codeforces: 1A, 99999100
2. Atcoder: ABC153A, ABC-148A
3. Hackerrank: Playing with Characters
4. URI: 1001,1002,1006,1015,1019
Guidelines:
● Participate in online contest
● Upsolve problems after attending online contest
● Try to attend and do well in onsite contest
Expectations:
● Total Number of problems solved: 300+
● CF rating:
-At the start: 1200+
-At the end: 1500+
Tips:
● Learning how to think is important at this stage. You should have gotten a feel for
determining how much time you should give to each problem in order to learn
properly-however, we would say do not make it less than 30 minutes, and
definitely not more than 90 minutes. But make sure that you have utilized that
time of thinking fully-many of us do not utilize this time fully and do not realize it.
Learn to think in a IDA* approach, that is, realizing all problems have an easy
solution, and can be solved in a few steps. If you find your train of thought getting
too complex, or taking too many steps/difficult to visualize, then it is likely not
correct, and if it is, it is most definitely not the intended solution. Learn to abandon
current train of thought as soon as you realize that it may be getting too complex
for you-these problems are made for humans by humans, not for Einsteins by
Einsteins.
● You should have also realized that this competitive programming business is no
joke. The future world finalists are currently working very hard, and while you are
watching movies/browsing the net, they are currently solving problems at their
ACM Room. You should spend most of times on thinking about problems. You can
also think about problems when eating, bathing or even before sleeping
● Also, do not pick too hard problems, problems in the difficulty range where you
find yourself seeking the solution almost every time. Even if you feel that you have
understood the solution fully, you may not have fully internalized it-and possibly
even indirectly memorize it. Ideally you must pick problems, that, if they were to
appear in a contest, you can almost get the idea, but couldn’t get a clear picture of
the full solution within contest time.
● And at the minimum, do every CF contests. Even if there is a CT the next day. Solve
the problems that you couldn’t solve the next day. This is very, very, very
important. This is called upsolving, and upsolve the next one or two problems that
you couldn’t solve in contest time. Perhaps leave the others for now.
● Please do look at the official solution (editorials) of problems, even if you have
managed to solve one by yourself. You may find new ideas/trick there. Make a
habit of learning from other people’s code too.
● Look at other people’s code to learn new tips/tricks after solving a problem.
● And do hide CF tags. 50% of solving a problem is about identifying the correct
category of the problem, and you’ll be stunted in this respect.
Expected Number of Problems solved (including previous semester)- 500 at the very
least, more like 1000 if you hope for qualifying for WF in the future.
Tutorials:
1. Programming-Problem-In-Bengali/Geometry Resources.md at master ·
hasancse91/Programming-Problem-In-Bengali
2. Read “Geometry Concepts” tutorials in topcoder Community - Competitive
Programming - Tutorials
3. Geometry Algorithms Home
4. Basic Geometry
5. Geometry: 2D points and lines [Tutorial]
6. Geometric Algorithms
Problems:
1. Lightoj (Category - “Basic Geometry”)
2. grep+: UVA problems keyword search
3. https://progvar.fun/problemsets/geometry-basics
Level-2 Term-1
Tentative Class Schedule:
Week Topic
1 Number theory: Extended Euclidean, Euler phi, inverse phi, factorizing n!
2 Graph: SCC, MST
3 Graph: Bicoloring, Bipartite Matching
4 Data Structure: Segment Tree, Lazy
5 Data Structure: BIT, LCA
6 Data Structure: Trie
Online Contest-1
7 Pattern Matching: KMP, Z-algo
8 DP: LCS, LIS, Matrix-Chain Multiplication
9 DP: Bitmask DP, Digit-DP
10 Geometry: Convex Hull
Online Contest-2
Guidelines:
● Eat, Sleep, Code, Repeat…
Expectations:
● Total Number of problems solved: 300+
● CF rating:
-At the start: 1500+
-At the end: 1800+
Tips:
● By now you must have formed stable teams. You must take part in team contests
regularly-at least one every week. Select 2 star contests from CF gym at the
beginning, and slowly move on to 3 star contests. Or you may select contests
from Timus as well. Discussing unsolved problems after the contest is important
too, make sure to solve them. Maintain spreadsheets containing daily logs of
what one has solved.
Expected number of problems solved (including previous semester)-800 at the very
least. Highly motivated people can go for 1500. You can do it.
Tutorials & Problems List for Level-2 Term-1
(2-1) Week 1 (Number theory: Extended Euclidean, Euler phi, inverse phi,
factorizing n!)
Tutorials: (Extended Euclidean)
1. Extended Euclidean Algorithm
2. Extended Euclidean Algorithm
Problems: (Extended Euclidean)
1. UVa – Uva-10104, Uva-10090, Uva-10633, Uva-12775
2. Codeforces Gym – 100963J
Tutorials: (MST)
1. গ্রোফ মথওমররি হোরিখম়ি ৬: ম মন ো স্প্যোমনিং ট্রি(ক্রুসকোল অযোলগমরদ ) (Kruskal)
2. Minimum spanning tree - Kruskal's algorithm - Competitive Programming
Algorithms (Kruskal)
3. Minimum spanning tree - Kruskal with Disjoint Set Union (Kruskal)
4. গ্রোফ মথওমররি হোরিখম়ি ৫: ম মন ো স্প্যোমনিং ট্রি(মর অযোলরগোমরদ ) (Prims)
5. Minimum spanning tree - Prim's algorithm (Prims)
6. Second Best Minimum Spanning Tree (Second Best MST)
7. Kirchhoff's Theorem (Kirchhoff's Theorem (To Find number of spanning Tree))
Problems: (MST)
1. SPOJ: MST, ULM09, IITKWPCG
2. UVA: Uva-544, Uva-10034, Uva-11228, Uva-908, 11733, 11733, 10462
3. LightOJ: 1002, 1029, 1041, 1040, 1059, 1123
4. Codeforces: 1095F, 160D, 125E
5. Devskill: DCP-344
Guidelines:
● Eat, Sleep, Code, Repeat…
Expectations:
● Total Number of problems solved: 300+
● CF rating:
-At the start: 1800+
-At the end: 2100+
Tips:
● Expected number of problems solved-1100 at least, and if you want WF, 2000
minimum. You must have solved around 350 Problems in LightOJ by now, and
more than 1000+ on Codeforces
● You must also start solving from CF frequently. Solve as much div2D and div2E as
possible-(minimum 300 in total, around 500 if you are serious). In team contests,
select 3-4 star contests in CF Gym.
Tutorials & Problems List for Level-2 Term-2
(2-2) Week 1 (Probability, Expected value)
Tutorials:
1. প্রোবোমবমলটি: এক্সরপরেড ভযোলু
2. Mathematical Expectation
3. Sums and Expected Value — part 1 (Part - 1)
4. Sums and Expected Value — part 2
Problems:
1. UVa - 11762, 11427, 11348, 10777
2. LightOJ - Probability/Expected Value Category
3. Codeforces - Probability Tag
Tutorials: (BST)
1. Binary Search Tree(BST)
2. Binary Search Tree
3. Data Structure - Binary Search Tree
Problems: (BST)
1. Hackerrank: Binary Search Tree Problems
2. Misc
Tutorials: (Heap)
1. Heaps/Priority Queues Tutorials & Notes | Data Structures
2. Heap Data Structure
3. Heap Data Structure
Problems: (Heap)
1. Codeforces: Problems list in a blog
2. Hackerrank: Heap/Priority Queue Problems
Tips:
● By now you must have learnt the basic and intermediate things of almost all
topics. Start specializing, discussing among teammates.
● Try to overcome your weak points and learn the things that you missed before.
Focus on more advanced topics.
● For example, you decide to be more specialized in DP. Learn complex DP
techniques like Knuth Optimization, etc.
● Or if you want to specialize in Math, learn FFT, NTT and more advanced number
theory topics.
● For data structure, splay tree, treap, HLD(solve QTREEs from SPOJ) etc.
● For graph, more esoteric problems.
I mean, by now you must have a good idea of what topics you want to do, and further
specialize on them. The above are the topics that must be learnt at least by one member
of the team, but there may be rarer topics as well.