0% found this document useful (0 votes)
81 views18 pages

Genral Instructions

The document provides an extensive list of algorithms, data structures, and topics that are useful for solving problems in competitive coding contests. It covers the following key areas: 1. Mathematics including number theory, probability, counting, permutation cycles, linear algebra, game theory, and group theory. 2. Graph algorithms including representation, types of graphs, DFS, BFS, minimum spanning trees, shortest paths algorithms, flows, and other important graph topics. 3. Data structures including arrays, linked lists, trees, stacks, queues, heaps, hash tables, tries, and segment trees. 4. Searching and sorting algorithms like binary search, selection sort, merge sort, quick sort, heap sort

Uploaded by

bakoliy218
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views18 pages

Genral Instructions

The document provides an extensive list of algorithms, data structures, and topics that are useful for solving problems in competitive coding contests. It covers the following key areas: 1. Mathematics including number theory, probability, counting, permutation cycles, linear algebra, game theory, and group theory. 2. Graph algorithms including representation, types of graphs, DFS, BFS, minimum spanning trees, shortest paths algorithms, flows, and other important graph topics. 3. Data structures including arrays, linked lists, trees, stacks, queues, heaps, hash tables, tries, and segment trees. 4. Searching and sorting algorithms like binary search, selection sort, merge sort, quick sort, heap sort

Uploaded by

bakoliy218
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 18

Genral instructions

 Best website for learning Programming https://hackr.io/


 Ideas for project – udacity, coursera, udeamy
 Attempt nptel course for placement( Choose 8/12 weel
course for credit transfer and placement view)
 First learn the whole concept then try to implicate for
practices to do online courses.

What are the algorithms required to solve


all problems (using C++) in any competitive
coding contest?

Mathematics:

(a)Number Theory

1. Prime Number Generation (Sieve, Segmented Sieve)


2. Euler Totient Theorem
3. Fermat’s Theorem
4. HCF & LCM (Euclid)
5. Linear Diophantine Equations (Extended Euclid)
6. Modulus Arithmetic (addition, multiplication ,subtraction, modular Inverse)
7. Cycle Finding (Floyd Algo and Brent Algo)
8. Integer Factorization (Trial Division , Pollard Rho method)
9. Lucas Theorem (Simple & Advance)
10. Chinese Remainder Theorem
11. Wilson Theorem
12. Miller - Rabin Primality Testing
13. Perfect Numbers
14. Goldbach Conjecture
(b)Probability

1. Basic Probability and Conditional Probability


2. Random Variables
3. Probability Generating Functions
4. Expectation
5. Probability Distribution [Binomial, Poisson, Normal,Bernoulli]
(c)Counting

1. Pigeonhole principle
2. Inclusion Exclusion
3. Special Numbers [Stirling,Fibonacci,Catalan, Eulerian, Harmonic, Bernoulli]
4. Polya Counting
5. Burnside lemma
(d)Permutation Cycles

(e)Linear Algebra

1. Addition And Subtraction Of Matrices


2. Multiplication ( Strassen's algorithm ), Logarithmic exponentiation
3. Matrix Transformations [ Transpose, Rotation Of Matrix, Representing
Linear Transformations Using Matrix ]
4. Determinant , Rank and Inverse Of Matrix [ Gaussian Elimination , Gauss
Jordan Elimination]
5. Solving System Of Linear Equations
6. Matrix Exponentiation To Solve Recurrences
7. Eigenvalues And Eigen vector
8. Roots of a polynomial [ Prime factorization of a polynomial, Integer roots of
a polynomial]
9. Lagrange Interpolation
(e)Game Theory

1. Basic Concepts & Nim Game [Grundy Theorem , Grundy Number]


2. Hackenbush
(f)Group Theory
1. Burnside Lemma
2. Polya's Theorem
Graphs:

(a)Graph Representation

1. Adjacency Matrix
2. Adjacency List
3. Incidence Matrix
4. Edge List
(b)Graph Types

1. Directed
2. Undirected
3. Weighted
4. Unweighted
5. Planar
6. Hamilton
7. Euler
8. Special Graphs
(c)DFS & It’s Application

1. Cycle Detection
2. Articulation Points
3. Bridges
4. Strongly Connected Component
5. Connected Component
6. Path Finding
7. Solving Maze
8. Biconnectivity in Graph
9. Topological Sorting
10. Bipartite Checking
11. Planarity Testing
12. Flood-fill algorithm
(d)BFS & It’s Application

1. Shortest Path (No. Of Edges)


2. Bipartite Checking
3. Connected Components
(d)Minimum Spanning Tree

1. Prim’s Algorithm
2. Kruskal Algorithm
(d)Single Source Shortest-Path

1. Dijkstra
2. Bellman Ford
(e)All pair Shortest Path

1. Floyd Warshall’s Algorithm


(f)Euler Tour

(g)Flow

1. Ford-Fulkerson [PFS,DFS,BFS]
2. Dinic's Algorithm
3. Min Cost - Max Flow [Successive Shortest Path Algo,Cycle Cancelling
Algorithm]
4. Max Weighted BPM [Kuhn Munkres algorithm/Hungarian Method]
5. Stoer Wagner Min-Cut Algo
6. Hop-Kraft BPM
7. Edmond Blossom Shrinking Algorithm
(h)Other Important Topics On Graphs

1. 2-SAT,
2. LCA
3. Maximum Cardinality Matching
4. Application Flow
5. Min Path Cover Over Dag
6. Independent Edge Disjoint Path
7. Minimum Vertex Cover
8. Maximum Independent Set
Data Structures:

1. Arrays
2. Linked List
3. Trees (Binary Tree And Binary Search Tree)
4. Stacks
5. Queues
6. Heap
7. Hash Tables
8. Disjoint-Set Data Structures
9. Trie
10. Segment Tree
11. Binary Index Tree
12. Treap
Searching And Sorting:

1. Linear Search
2. BInary Search
3. Ternary Search
4. Selection Sort
5. Bubble Sort
6. Insertion Sort
7. Merge Sort
8. Quick Sort
9. Quick Select
10. Heap Sort
11. Radix Sort
12. Counting Sort
Greedy:
Classical Problems of Greedy & Concept
example : Fractional Knapsack

Dynamic Programming Classical Problems

1. Edit Distance
2. Egg Dropping Puzzle
3. Integer Knapsack
4. Largest Independent Set
5. Longest Biotonic Subsequence
6. Longest Common Subsequence
7. Longest Common Substring
8. Longest Increasing Subsequence
9. Longest Palindromic Subsequence
10. Longest Palindromic Substring
11. Longest Substring Without Repeating Character
12. Matrix Chain Multiplication
13. Max Size Square Submatrix With One
14. Maximum Length Chain Pairs
15. Maximum Sum Increasing Subsequence
16. Optimal Binary Search Tree
17. Palindrome Partition Problem
18. Set Partition Problem
19. Subset Sum
20. Word Wrap Problem
Dynamic Programming Advanced Techniques

1. DP + Tree
2. DP + Bit Masking
3. DP + Binary Search
4. DP + Graph
5. DP + Matrix Exponentiation
6. DP + Probability Space
7. DP + Crack Recurrence
Divide & Conquer
Classical Problems & Concepts

1. Merge Sort
2. Closest Pair Points
Other Algorithm Design Techniques :

1. BackTracking
2. Man In Middle
3. Newton-Raphson to reach the fixed point
4. Brute Force
5. Constructive Algo
6. Sliding Window
7. Pancake Sorting

C- Programming

 C Overview
 Data Types
 Operators and Expressions
 Formatting Input/Output
 Decision Making
 Logic Building
 Arrays and Pointers
 Character Arrays and Strings
 Functions
 Recursion
 Structures and Unions
 Sorting
 Searching
 File Handling

C++

 C++ Overview
 Data Types
 Loops
 Operators and Expressions
 Formatting Input/Output
 Decision Making
 Logic Building
 Pointers
 Arrays
 Character Arrays and Strings
 Functions
 Recursion
 Structures
 Object Oriented Concepts inC++
 Inheritance
 Abstract Classes
 Virtual Function
 Standard TemplateLibrary(STLs)
 File Handling

Take the following 2 courses:


 Data structures and algorithms(2 months)(use c++/java)
 Discrete mathematics(1 months)(mathetical induction,
linear algebra)
 Helpful for interview preparations
 Skip ireelment data structures
Data structure and algorithms
 Pointers
 Structures
 Arrays and Pointers
 Linked List
 Stacks
 Queues
 Trees
 Heap
 Graphs
 Recursion
 Algorithms Overview
 Time and Space Complexity
 Sorting Algorithms
 Searching Algorithms
 Divide and Conquer
 Greedy Algorithm
 BackTracking
 Dynamic Programming
 String Matching
Java
 Introduction to Java
 Java Fundamentals
 Control Statements
 Logic Building
 Arrays
 OOOPs Concepts
 Inheritance
 Encapsulation
 Polymorphism
 Abstraction
 Strings
 Exception Handling
 Generics
 Collections
 Multithreading
 File Handling
Python

 Python Overview
 Logic building
 Loops and conditional statements
 Data Structures in Python
 Operators and Expressions
 Input/Output
 Arrays
 Strings
 Functions and OOPs
 Recursion
 Time complexity
 Searching
 Sorting
Aptitude
 Number system &Divisibility
 HCF & LCM
 Series & Progression
 Time, Speed & Distance
 Time & Work
 Percentages
 Permutation &Combination
 Profit & Loss
 Probablity
 Geometry
 Mixtures & Allegations
 Logarithms
 Sentence Completion
 Reading Comprehension
 Para jumbles
 Synonyms
 Antonyms
 Data Sufficiency
 Deductive Logic
 Number series
 Analogy
 Cryptarithmetic
Web development

Our first task would be to learn Django.


 What is it? It is a Python based web development
framework.
 Why learn it? Django is in high demand among
Indian startups these days. Also, it is easy to learn.

Head straight to this link — Django Girls Tutorial

 Build a photo gallery app — take a hash tag from the


user and use TwitterAPI to gather images of that
hash tag in a photo gallery. This might be
helpful: amangoeliitb/Photo-Gallery-Web-
Application
 A simple banking application — try making both a
customer and an employee account.
 A student dashboard that shows the performance of
student.
 make a Github account. Github is a ‘social network’ for
programmers. People upload their source codes on Github.
There is also something called as ‘git’, which is a version
management system. Take this short course on git — How to
Use Version Control in Git & GitHub | Udacity. By the way,
git is worth learning because you can put it on your resume!
 Android app development.
Make simple application like time management,life
tracker,habbit tracker.

In this semester, you should get serious about your internship.


AngelList is an excellent platform where startups are looking for
intern

Search for other internship portals. Be active on LinkedIn.

Start preparing for interviews.


 To prepare for interviews, use the following 3
excellent sources:
Cracking the coding Interview — this book is the bible
for programming interviews
 Coding Interview Questions — This is a brilliant
platform to hone your interview skills.
 Coding Interview Questions — This is a brilliant platform
to hone your interview skills.
 Databases — in your Django web app, you would
have used SQLite/MySQL/Postgres as your
database. A database is a special kind of data
structure that stores data in hard disk. Some
companies like to ask databases related questions
to the candidates. Being a non CS student, of course
you aren’t expected to do a formal databases
course (if you can, then that’s a big plus though!).
Search for databases interview questions to get a
basic idea of what is asked. I guess I will leave this
point open ended because by this time, you would
have become smart enough to figure this out
yourself :)
 Operating systems — pretty much the same applies
here as well. Doing a quick Google search for
operating systems interview questions will give you
enough practice problems which will be fine for
most interviews.
If you are interested, you should take up online courses on
databases and OS:
DBMS

 Introduction to DBMS

 Entity Relationship Model

 Enhanced Entity Relationship Model

 Relational Model

 SQL

 Relational Database Design

 Storage and File Structure


 Transaction Management

OPERATING SYSTEM

 Introduction to Operating System

 Process Concepts
 Threads

 Process Scheduling

 Process Synchronization

 Deadlocks

 Memory Management

 Virtual Memory Management


 File System and Secondary Storage

Machine learning
That was about internships. Besides the internship, you should
try taking up some miscellaneous courses like:
 Machine Learning — Machine Learning — Stanford
University | Coursera
 Intro to Machine Learning Course | Udacity
 Cryptography — Applied Cryptography and
Encryption Class Online | Udacity
 A website called caggle(dataset) project.
These courses should help you put 2 more projects on your
resume and also expand your CS knowledge. No doubt they will
also open up more internship domains for you:
 Data/ML engineer intern
 Security engineer intern

 Data structures and algorithms — the standard


bread and butter of CS
 Probability — school level prob/stats questions.
These should be easy for you
 Databases and Operating systems — we are yet to
talk about this

Now let us talk about databases and operating systems (OS):


and InterviewBit should be the one place where you should
spend your maximum time.

You might also like