We may earn an affiliate commission when you visit our partners.
Prateek Narang Sr. Software Engineer Google, Apaar Kamal, and Coding Minutes

Equip yourself with essential programming techniques required for ACM-ICPC, Google CodeJam, Kickstart, Facebook HackerCup & more. Welcome to Competitive Programming Essentials - the ultimate specialisation on Algorithms for Competitive Coders. The online Competitive Programming Essentials by Coding Minutes is a highly exhaustive & rigorous course on Competitive Programming. The 50+ hours course covers the breadth & depth of algorithmic programming starting from a recap of common data structures, and diving deep into essential and advanced algorithms. The course structure is well-researched by instructors who not only Competitive Coders but have worked with companies like Google & Scaler. This course will help you to get a solid grip of fundamental concepts & comes with practice questions so that you sail through online coding challenges and code-athons with ease. The course is divided into 10 modules and 50 sections covering topics like Mathematics, Number Theory, Bitmasking, Inclusion-Exclusion, Meet in the Middle Techniques, Segment Trees, Fenwick Trees, Square Root Decomposition, Graph Algorithms, Shortest Paths, Game Theory, Pattern Matching, Binary Search, Greedy Techniques, Dynamic Programming and even more.

Read more

Equip yourself with essential programming techniques required for ACM-ICPC, Google CodeJam, Kickstart, Facebook HackerCup & more. Welcome to Competitive Programming Essentials - the ultimate specialisation on Algorithms for Competitive Coders. The online Competitive Programming Essentials by Coding Minutes is a highly exhaustive & rigorous course on Competitive Programming. The 50+ hours course covers the breadth & depth of algorithmic programming starting from a recap of common data structures, and diving deep into essential and advanced algorithms. The course structure is well-researched by instructors who not only Competitive Coders but have worked with companies like Google & Scaler. This course will help you to get a solid grip of fundamental concepts & comes with practice questions so that you sail through online coding challenges and code-athons with ease. The course is divided into 10 modules and 50 sections covering topics like Mathematics, Number Theory, Bitmasking, Inclusion-Exclusion, Meet in the Middle Techniques, Segment Trees, Fenwick Trees, Square Root Decomposition, Graph Algorithms, Shortest Paths, Game Theory, Pattern Matching, Binary Search, Greedy Techniques, Dynamic Programming and even more.

The problem setters of the course are Siddharth Singhal and Rajdeep Singh. Both are upcoming software developers at Microsoft and Razorpay respectively. They both exhibit excellent knowledge of Data Structures and Algorithms and are avid competitive programmers. Many top companies like Google, Facebook, Amazon, Directi, CodeNation, Goldman Sachs etc encourage Competitive Programming and conduct coding competitions to hire smart people who can solve problems.

Course Highlights

  • Instructors from Google & Scaler Academy

  • 50+ hours of high quality & structured content

  • In-depth coverage of all topics

  • Exhaustive Course Curriculum

  • Code Evaluation on Coding Exercises

  • Lifetime Access

  • Complimentary TA Doubt Support

Enroll now

What's inside

Learning objectives

  • Understand & implement important techniques in competitive programming
  • Learn advanced techniques to optimise naive solutions
  • Ace code-thons and online coding competitons on codeforces, hackerrank
  • Get ready for acm-icpc, google kickstart, codejam & more

Syllabus

Introduction
Course Structure
Exercise Solutions (C++/Java)
Doubt Support
Read more
IDE Environment Setup
FAQ's
Learn to use Sublime Text like a Pro for Competitive Coding!
Sublime Setup
Adding Master Header File
Escaping Online Judges
Common Code Snippets
Using Macros
Example Code Explained
Time / Space Complexity Analysis
Space Time Complexity Introduction
Experimental Analysis
Big O Notation
Nested Loops
Note : Edit in Nested Loops - II
Nested Loops - II
Analysis of Bubble Sort
Analayis of BInary Search
Analysis of Merge Sort
Avoiding TLE Errors
Complexities for Worst Case AC
Time/Space Complexity Quiz
Learn to work with important STL Containers.
Data Structures & STL Containers Revisited
Arrays in C++
Array STL
Vector STL
Deque STL
Stack STL
Queue STL
Priority Queue STL
[Webinar] Hashing STL
[Webinar] More on STL
First Unique Character in a String
Kth Largest Element
One Integer
Maximum Score From Removing Stones
Find K Closest Elements
Distinct Candies
Bulls and Cows
Smallest Range Covering Elements from K Lists
Bitmanipulation Basics
Bitwise Operators
Left Shift & Right Shift
Odd Even
Get ith Bit
Clear ith Bit
Set ith Bit
Update ith Bit
Clear Last i Bits
Clear Range of Bits
Replace Bits
Two Power
Power of Four
Decode XORed Array
Count Bits
Count Bits Hack
Make it Binary
Sort Integers by The Number of 1 Bits
Longest Consecutive Run of 1s in Binary
Hamming Distance
Learn to solve Bitmanipulation Problems
Unique Number - I
Unique Number - I Code
Unique Number - II
Unique Number - II Code
Unique Number - III
Unique Number - III Code
Finding Subsequences
Finding Subsets Code
Maximum Score
Triples with Bitwise AND Equal To Zero
Bitwise AND of Range of Numbers
Total Hamming Distance
Travelling Salesman Problem
Travelling Salesman Intution
Travelling Salesman Code
Travelling Salesman - DP Optimisation
Decode Permutation
Shortest Superstring
Big Integers
Welcome!
Introduction to Big Integers
Big Addition Concept
Big Addition Code
Array & Integer Multiplication
Large Factorials

Code Link:
https://ide.codingminutes.com/?id=uty

Code Link:
https://ide.codingminutes.com/?id=nsz

Big Integers in Python
Python's Handling of Big Integers
Big Integer Challenge - Julka
Big Integer Challenge Solution
Learn to compute Nth terms of Linear Recurrences efficiently!
Binary Exponentiation

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers techniques for optimizing naive solutions, which is essential for competitive programming and improving algorithm efficiency
Prepares learners for ACM-ICPC, Google Kickstart, and CodeJam, which are well-known competitive programming contests
Instructors have worked at Google and Scaler, which suggests practical industry experience and relevant insights
Includes code evaluation on coding exercises, which provides hands-on practice and feedback for skill development
Requires familiarity with C++ or Java, which may exclude learners without prior experience in these languages
Teaches Sublime Text setup, which may not be relevant to learners who prefer other IDEs or text editors

Save this course

Save Competitive Programming Essentials, Master Algorithms to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Competitive Programming Essentials, Master Algorithms with these activities:
Review Data Structures and STL Containers
Solidify your understanding of fundamental data structures and STL containers in C++ to prepare for more advanced algorithmic concepts.
Show steps
  • Review the documentation for each STL container.
  • Implement basic operations (insert, delete, search) for each data structure.
  • Solve simple problems using each data structure.
Review 'Introduction to Algorithms' by Cormen et al.
Supplement your learning with a deep dive into fundamental algorithms and data structures using a classic textbook.
Show steps
  • Read relevant chapters on topics covered in the course.
  • Work through the exercises and problems in the book.
  • Compare the book's explanations with the course materials.
Practice Bit Manipulation Problems
Sharpen your bit manipulation skills by solving a variety of problems on platforms like LeetCode or HackerRank.
Show steps
  • Identify problems that involve bitwise operations.
  • Solve at least 10 bit manipulation problems of varying difficulty.
  • Analyze the time and space complexity of your solutions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review 'Competitive Programmer's Handbook' by Antti Laaksonen
Enhance your competitive programming skills with a handbook tailored for coding competitions.
Show steps
  • Read chapters on specific algorithms and techniques.
  • Study the code examples provided in the book.
  • Apply the techniques to solve practice problems.
Implement a Custom Hash Table
Deepen your understanding of hashing by implementing your own hash table with collision resolution strategies.
Show steps
  • Choose a collision resolution strategy (e.g., separate chaining, open addressing).
  • Implement the insert, delete, and search operations.
  • Test your hash table with a large dataset.
  • Compare the performance of your hash table with STL's unordered_map.
Create a Video Tutorial on Dynamic Programming
Solidify your understanding of dynamic programming by creating a video tutorial explaining a specific DP technique or problem.
Show steps
  • Choose a dynamic programming technique or problem.
  • Prepare a script and visual aids for your tutorial.
  • Record and edit your video tutorial.
  • Share your tutorial with the online community.
Participate in Online Coding Contests
Apply your knowledge and skills by participating in online coding contests on platforms like Codeforces, CodeChef, or AtCoder.
Show steps
  • Register for upcoming coding contests.
  • Solve as many problems as possible during the contest.
  • Analyze your performance and learn from your mistakes.

Career center

Learners who complete Competitive Programming Essentials, Master Algorithms will develop knowledge and skills that may be useful to these careers:
Competitive Programmer
A competitive programmer participates in programming contests, solving algorithmic problems under time constraints. This Competitive Programming Essentials course is specifically designed for competitive coders, providing comprehensive training in essential programming techniques. The course's rigorous structure, instructors from Google and Scaler Academy, and exhaustive curriculum all contribute to success in competitive coding. The emphasis on ACM-ICPC, Google CodeJam, and similar competitions makes this course a key and direct preparation.
Software Engineer
A software engineer designs, develops, tests, and maintains software systems. This Competitive Programming Essentials course helps build a foundation in algorithmic thinking, essential for efficient coding and problem-solving, which are crucial for a software engineer. The course's focus on data structures and algorithms, along with the practice questions, prepares you to tackle complex coding challenges encountered in software development. Specific modules on data structures and STL containers may prove particularly valuable.
Algorithm Developer
An algorithm developer researches, designs, and implements algorithms to solve specific problems. This Competitive Programming Essentials course is directly relevant, as it provides an in-depth understanding of essential and advanced algorithms. The course structure, covering topics such as bitmasking, graph algorithms, and dynamic programming, is tailored to help an algorithm developer to excel. The focus on optimizing naive solutions and tackling online coding competitions translates directly to real-world algorithm design challenges.
Embedded Systems Engineer
An embedded systems engineer develops software for embedded systems, such as those found in cars and appliances. This Competitive Programming Essentials course helps building a foundation in algorithmic thinking, essential for optimizing performance in resource-constrained environments. The course's coverage of bit manipulation and data structures is particularly relevant for working with low-level hardware. The understanding of time and space complexity is important for writing efficient code that can run on embedded systems.
Machine Learning Engineer
A machine learning engineer develops and deploys machine learning models. This Competitive Programming Essentials course helps improve algorithmic skills, which are necessary for optimizing machine learning algorithms and improving model performance. The course's coverage of data structures and algorithms provides a strong foundation for understanding the computational aspects of machine learning. Familiarity with time and space complexity analysis helps with efficient model training and deployment. Specific sections on Dynamic Programming may prove particularly valuable.
Backend Developer
A backend developer focuses on the server-side logic and databases of web applications. This Competitive Programming Essentials course may be useful by teaching the important skills of problem-solving, algorithm implementation, and application design. The course's structure, covering topics such as bitmasking, graph algorithms, and dynamic programming improves a backend developer's ability to deliver maintainable code. The focus on optimizing naive solutions translates directly to real-world algorithm design challenges.
Research Scientist
A research scientist conducts research to advance knowledge in a specific field. For example, a Research Scientist working on routing algorithms would benefit from this course. This Competitive Programming Essentials course may be useful by strengthening problem-solving skills and algorithmic thinking, which are valuable for developing and testing new algorithms and models. The course's coverage of data structures and advanced algorithms provides a strong foundation for conducting research in computer science. The emphasis on optimizing solutions is essential for developing efficient and scalable algorithms.
Robotics Engineer
A robotics engineer designs, builds, and programs robots for various applications. This Competitive Programming Essentials course helps build a foundation in algorithmic thinking, which is critical for developing efficient robot control systems. The course's coverage of graph algorithms and shortest paths helps design robot navigation algorithms. The course's emphasis on optimizing solutions can lead to more efficient and responsive robot behavior. Specific sections on STL Containers and Dynamic Programming may prove particularly valuable.
Data Scientist
A data scientist analyzes large datasets to extract meaningful insights and build predictive models. This Competitive Programming Essentials course may be useful by providing strengthens problem-solving skills and algorithmic thinking, which are valuable for optimizing data analysis processes. The course's coverage of data structures and algorithms helps a data scientist efficiently process and manipulate data. The understanding of time and space complexity analysis also aids in developing scalable data processing pipelines. The modules on STL containers may prove particularly valuable.
Site Reliability Engineer
A site reliability engineer ensures the reliability and performance of software systems in production. This Competitive Programming Essentials course is useful because it builds a foundation in algorithmic thinking, essential for optimizing system performance and troubleshooting issues. The course's coverage of data structures and algorithms helps a site reliability engineer to efficiently analyze system logs and identify performance bottlenecks. Familiarity with time and space complexity analysis aids in diagnosing and resolving scalability issues.
Quantitative Analyst
A quantitative analyst develops mathematical models for financial analysis and risk management. This Competitive Programming Essentials course can be useful by honing problem-solving skills and algorithmic thinking, which are applicable to developing efficient financial models. The course's coverage of data structures and algorithms provides a foundation for working with financial data and optimizing trading strategies. The emphasis on coding competitions also encourages quick and efficient problem-solving required in the fast-paced finance industry.
Game Developer
A game developer creates video games, designing gameplay mechanics and implementing game logic. This Competitive Programming Essentials course may be useful by strengthening algorithmic skills, which are crucial for optimizing game performance. The course's modules on graph algorithms and dynamic programming help create efficient game AI and pathfinding algorithms. The training in problem-solving under time constraints prepares one to handle the real-time challenges of game development. Specific sections in Game Theory may prove particularly valuable.
Full-Stack Developer
A full stack developer works on both the front-end and back-end of web applications. This Competitive Programming Essentials course may be useful by strengthening general problem solving abilities. The course's treatment of data structures, and algorithms helps a developer implement robust and efficient application programming interfaces. The practice solving online coding challenges is relevant because a full stack developer may be responsible for solving real-world problems in the software domain.
DevOps Engineer
A DevOps engineer automates and streamlines software development and deployment processes. This Competitive Programming Essentials course can be useful by strengthening algorithmic thinking, which helps in optimizing deployment pipelines and automating infrastructure management. The course's coverage of data structures and algorithms provides a foundation for developing efficient automation scripts. The training in problem-solving under time constraints prepares you to handle real-time deployment challenges. Specific modules on STL containers may prove particularly valuable.
Cybersecurity Analyst
A cybersecurity analyst protects computer systems and networks from cyber threats. This Competitive Programming Essentials course may be useful by strengthening problem-solving skills and algorithmic thinking, which are valuable for analyzing malware and detecting vulnerabilities. The course's coverage of bit manipulation and data structures provides a foundation for understanding low-level security exploits. Specific modules on pattern matching may prove particularly valuable.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Competitive Programming Essentials, Master Algorithms.
Comprehensive textbook on algorithms, covering a wide range of topics relevant to competitive programming. It provides detailed explanations, pseudocode, and analysis of various algorithms and data structures. It valuable resource for understanding the theoretical foundations of algorithms and improving problem-solving skills. This book is commonly used as a textbook in undergraduate and graduate computer science programs.
This handbook provides a concise and practical guide to competitive programming. It covers essential algorithms and data structures with a focus on implementation and optimization. It also includes tips and tricks for solving problems efficiently. great resource for quickly learning and applying common techniques.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser