Getting Started with Competitive Programming
NPTEL and Indian Institute of Technology Gandhinagar via Swayam
-
89
-
- Write review
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
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