14 September 2026 · No B-batch labs this week
There will be no labs this week for the B batch. All the best for the mid-semester examination. Sample questions are up.
IIT Indore · CS103
Learn how to approach unfamiliar problems, model them precisely, choose an algorithm, verify it, and improve it—while building expressive modern C++ systems that come alive on screen.
#include <iostream>
int main() {
std::cout
<< "Think. Build. Learn.";
return 0;
}
Announcements
Announcements made in class are recorded here. Where the two differ, the email sent to the class takes precedence over this page, since the page is sometimes updated a little later.
There will be no labs this week for the B batch. All the best for the mid-semester examination. Sample questions are up.
The best 2 out of 3 quizzes will be considered for evaluation.
Six sections, two hours, recorded out of 60: true or false with a reason, match the concepts, complete the code, does it compile and what happens, determine the output, and a bonus trivia section that counts towards the total but cannot lift it above 60.
If there are n labs in total, the best n−1 lab scores count towards the final laboratory component, and the weightage is adjusted accordingly.
Lectures and labs missed for medical reasons are considered for attendance, subject to the applicable Academic Section rules. Absences for other reasons cannot be considered under these provisions.
The course vision
Syntax is a tool. The durable skill is turning an unfamiliar situation into a model, an algorithm, evidence, and a better second attempt.
A grid becomes a graph; one robot becomes a team; a working search becomes a shortest-path algorithm. Each project is the next question hiding inside the previous one.
We keep brute force as a trustworthy baseline, then compare divide-and-conquer, greedy, dynamic programming, backtracking, graph, and randomized strategies.
Every major algorithm is traced by hand, animated in the terminal, rendered as ASCII or HTML/SVG, and finally organized as clean modular code.
C++ makes data representation, performance, value semantics, and abstraction visible. We favor standard-library containers, range-based loops, const-correct interfaces, RAII, tests, and small composable functions.
Short comparisons show how ownership, borrowing, pattern matching, and strong tooling can prevent whole classes of systems bugs. Different languages encode different trade-offs; choosing one is an engineering decision.
A glimpse of the finish line
Open any build to see the model beneath the spectacle. Each demonstration becomes a project, then a platform for your own extension.
vector<string>, coordinate pairs, direction arrays, and a visited matrix.World, Agent, Task, and Policy classes separate responsibilities.Semester studio
Each milestone includes a working build, a visual explanation, focused challenges, and one open-ended “what if?” exploration.
Write precise movement instructions, trace state by hand, and ship a tiny terminal robot.
Decomposition · tests · brute forceModel cells, walls, dirt, coordinates, and safe input; render the state as ASCII.
Types · state · simulationCompare row sweep, wall following, and random walks; define a coverage metric.
Loops · invariants · randomized algorithmsLabel connected components and animate flood fill one frontier at a time.
Recursion · DFS · BFSTurn the grid into a graph, run BFS, reconstruct a shortest path, and test unreachable cases.
Graph modeling · shortest pathsCompare BFS, Dijkstra, and a greedy nearest-target policy with visible counterexamples.
Priority queues · greedy methodsBuild the timed game, first with sequence state and then constant-time head/tail updates.
Strings · deques · linked structuresSeparate model, renderer, input, and policies; explain and protect each class invariant.
OOP · interfaces · value semanticsAssign cleaning tasks to several agents, detect collisions, and compare fairness strategies.
Simulation · greedy assignmentGenerate mazes, solve them with backtracking, and use heuristics to prune the search tree.
Backtracking · search · pruningOptimize repeated subproblems in paths, sequences, or rhythm generation; plot the speedup.
Dynamic programming · memoizationVisualize merge sort or spatial decomposition and compare empirical growth curves.
Divide and conquer · complexityReplay algorithm events in terminal and HTML/SVG or a modern C++ graphics library.
Modularity · visualization · documentationExtend one system, validate it with evidence, teach it live, and submit it to the Hall of Fame.
Independent learning · synthesisLecture 01 · the launch
The first meeting starts with the end-of-course demos, then students make a robot succeed before learning the C++ needed to express their reasoning.
Live Snake, robot, route planner, music, and visualization demos. Students predict the hidden state and rules.
Human teams act as robots on a drawn grid. Ambiguous instructions fail safely and become precise algorithms.
Translate a tiny sweep into C++, trace every variable, test edge cases, and change one rule.
Compare solutions, name an invariant, write the next question, and leave with a runnable artifact.
Course roadmap
Nine connected modules move from C++ fundamentals to practical systems, with algorithms taught as applications of the structures they operate on.
Assessment
The formal weights stay transparent; the learning practice underneath them rewards reasoning, evidence, reflection, and sustained growth.
Course assessment · total 100%
Laboratory course · practice and demonstration
AS is reserved for the top 1%; AA targets the next 15%, with μ + 2σ marked as its statistical reference.
Grading disclaimer This distribution is provisional and not final. Grade boundaries and final letter-grade assignments remain at the instructor’s discretion, subject to institute rules.
Hall of Fame
With student permission, exceptional projects become a permanent gallery of runnable demos, code, design notes, and lessons learned for future cohorts.
The gallery celebrates many kinds of excellence—not only the highest score. Future students see what peers made possible and begin with a larger sense of possibility.
The instructor’s promise
By the end of this course, you will be able to meet unfamiliar programming problems with the calm, structured confidence of a strong programmer: make a model, choose a strategy, test your reasoning, and improve what you built.
I will be available to help you learn and to work through the obstacles that serious learning inevitably creates. Ask early, bring imperfect attempts, and show your reasoning. Confusion is not a verdict; it is information we can use.
Our practice follows research-backed principles: active recall, worked examples, deliberate practice, timely feedback, collaboration, and repeated opportunities to transfer an idea into a new setting. Every lecture aims to earn your attention by giving you a new way to think—not another page of syntax to memorize.
Your growth matters more than a single grade. Consistent, honest effort, reflection, and revision will be recognized. I cannot promise that the course will always feel easy. I can promise that the difficulty will have a purpose, that your questions will matter, and that you will leave able to learn far beyond this syllabus.
— Dr. Debasish Pattanayak
Learning community
We build a culture where unfinished thinking is welcome, feedback is specific, and explaining an idea strengthens everyone’s understanding.
Driver and navigator roles change often so every student practices implementation and strategic thinking.
Weekly five-minute showcases normalize partial progress and reveal multiple valid approaches.
Office hours and peer support focus on questions, models, and debugging habits—not copying finished answers.
Open-ended extensions let interests in games, robotics, art, systems, science, or music shape the same core ideas.
Reference textbooks
The lectures are self-contained; these books supply the standard terminology, deeper explanations, and extra practice problems.
Bjarne Stroustrup · 3rd edition, Addison-Wesley, 2024.
Walter Savitch · 10th edition, Pearson, 2018.
Resources
Optional companions to the lectures. Nothing here replaces the deck or the lab work, but each one covers the same ideas from a different angle.
CS103 · a three-minute lyric video covering Lectures 1–11.
freeCodeCamp.org · full-length video course on YouTube.
Timeline
| Date | Module | Topic |
|---|---|---|
| Loading the Autumn 2026 schedule… | ||