Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

NPTEL

Getting Started with Competitive Programming

NPTEL and Indian Institute of Technology Gandhinagar via Swayam

This course may be unavailable.

Overview

This is a course on algorithm design with a focus on issues of modeling and implementation. Each lecture will be focused entirely on one or two problems that reveal the use of a specific algorithmic technique. The techniques themselves are chosen to be in line with those covered in existing NPTEL courses on data structures and algorithms, so that students who complete those courses can find in this course a natural follow up. This course is intended for anyone who wants to deepen their appreciation for algorithmic techniques that they have learned in a foundational course and/or would like to take a first step towards preparing for coding competitions such as the ICPC. INTENDED AUDIENCE : Undergraduate students who have already done a basic data structures/algorithms course.PREREQUISITES : Data Structures and Algorithms, Familiarity with a programming language (ideally C++ or Python)INDUSTRY SUPPORT : Most technology-based companies typically hire based on a test of coding competence and this course will prepare students for this. Notable examples include: Facebook, Google, Amazon, Apple, Microsoft, etc.

Syllabus

Week 1: Sorting and Searching Algorithms
Week 2: Greedy Algorithms - I
Week 3: Greedy Algorithms - II
Week 4: Disjoint Set Union with Path Compression
Week 5: Minimum Spanning Tree
Week 6: Shortest Paths: Dijkstra and Beyond
Week 7: Network Flows - I
Week 8: Network Flows - II, Divide and Conquer
Week 9: Dynamic programming - I
Week 10: Dynamic programming - II
Week 11: Dynamic programming - III
Week 12: Dynamic programming - IV

Taught by

Prof. Neeldhara

Tags

Reviews

Start your review of Getting Started with Competitive Programming

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.