Home Research Teaching Publications index

CS 220: Data Structures and Algorithms

September 2020

This course will give an introduction to C/C++ programming. This course also gives an insight on Data structure and Algorithms.This is an elective course for undergraduate.

Time and Place

Pre-requisite

CS101, Introduction to Computing

Video lecture playlist

Books

Reference

Syllabus

Academic Honesty

We expect every student to follow the highest standards of integrity and academic honesty. Copying/sharing code in exams, homeworks, labs are not allowed. See the IIT Goa policy for academic malpractices.

Course Schedule

# Date Topic Resources
Programming in C and C++
1 4/9 Lecture 1.1 Hello World, Lecture 1.2- Comments, Lecture 1.3 - Basic data types (int, float, char), Lecture1.4 - Review with an example. Creating a resume Lecture 1.1 Lecture 1.2 Lecture 1.3 Lecture 1.4
2 5/9 Lecture 2.1 - if else, Lecture 2.2 - Functions, Lecture 2.3 - Scope of a variable Lecture 2.1 Lecture 2.2 Lecture 2.3
3 6/9 Lecture 3.1 - Arrays and Strings, Lecture 3.2 - Passing arrays to functions, Lecture 3.3 - Loops (for, while, do while), Lecture 4.1 - constants, Lecture 4.2 - Getting user input (using getchar function), Lecture 4.3- Using getchar to get user input from the keyboard, Lecture4.4 - Assignment 1, Calculator Lecture 3.1 Lecture 3.2 Lecture 3.3 Lecture 4.1 Lecture 4.2 Lecture 4.3 Lecture 4.4
3 12/9 Lecture 5.1 - Recursion, Lecture 5.2 - Recursion example (factorial) , Lecture 5.3 - Recursion Checking for correctness, Lecture 5.4 - Factorial function (lab) , Lecture 5.5 - Execution path for recursive functions , Lecture6.1 - Binary recursion (eg. Fibonacci number), Lecture 6.2 - Binary recursion,C programming ,Fibonacci numbers,Subsets of a set Lecture 5.1 Lecture 5.2 Lecture 5.3 Lecture 5.4 Lecture 5.5 Lecture 6.1 Lecture 6.2
4 17/9 Lecture 7.1 -Multiple recursion Example: mini Sudoku, Lecture 7.2- Mutual recursion Example: Tic Tac Toe Lecture 7.1 Lecture 7.2
5 24/9 Lecture 8.1 Binary and Decimal numbers, Lecture 8.2 Bits and Bytes, Lecture 8.3 Memory - Random access memory(RAM), Lecture 8.4 - sizeof operator Lecture 8.1 Lecture 8.2 Lecture 8.3 Lecture 8.4
6 28/9 Lecture 9.1- Introduction to pointers C programming, Lecture 9.2 -Introduction to pointers (lab), Lecture 9.3 Pointers and Functions, Lecture 9.4 - Pointers and Arrays Lecture 9.1 Lecture 9.2 Lecture 9.3 Lecture 9.4
7 4/10 Lecture 10.1 -Dynamic Memory allocation,malloc, calloc, realloc, free ,C Programming , Lecture 10.2 -scanf function , Lecture 10.3- File handling (file opening, reading, writing, closing) for text files, Lecture 11.1- Introduction to Structures, Lecture 11.2-Arrays of structures, Lecture 12.1 - Structures - shallow vs deep copy, Lecture 12.2-Structures - passing as parameters, returning structures Lecture 10.1 Lecture 10.2 Lecture 10.3 Lecture 11.1 Lecture 11.2 Lecture 12.1 Lecture 12.2
8 6/10 Lecture 13.1-Pointer to a pointer, Lecture 13.2 - Array of pointers, Lecture 13.3-Two dimensional arrays and pointers to pointers, Lecture 13.4-Command line arguments , Lecture 14.1-Recursion explained through trees,Fibonacci sequence, Lecture 14.2-Recursion explained through trees,Tic tac toe program Lecture 13.1 Lecture 13.2 Lecture 13.3 Lecture 13.4 Lecture 14.1 Lecture 14.2
9 9/10 Lecture 15.1 -Using scanf function, Lecture 15.2 -Structures, Dynamic memory allocation, C Programming , Lecture 15.3 -Reading and Writing text files, fprintf and fscanf functions Lecture 15.1 Lecture 15.2 Lecture 15.3
10 10/10 Lecture 16-Read/Write Bitmap (BMP) Image ,Display image in Text/ASCII Art ,C Programming , Lecture 16
11 29/10 Lecture 17.1- Challenge to programmers, Lecture 17.2- Header Files , Lecture 18.1 -Abstraction , Lecture 18.2- Encapsulation, Header files , Lecture 18.3- Data Abstraction, Why Class? Lecture 17.1 Lecture 17.2 Lecture 18.1 Lecture 18.2 Lecture 18.3
12 Lecture 19.1- Introduction to Classes ,Object oriented programming , Lecture 19.2- Constructors and Destructors in C++, Lecture 19.3 -Dynamic memory allocation in C++ ,new and delete , Lecture 19.4 -Polymorphism,Function overloading, Lecture 19.5 -Polymorphism,Operator overloading Lecture 19.1 Lecture 19.2 Lecture 19.3 Lecture 19.4 Lecture 19.5
Data Structures and Algorithm
1 2/11 1.1 Introduction to Data Structures, 1.2 Abstract Data type (ADT), 1.3 List ADT , Implementation using array, 1.4 Introduction to Linked List, 1.5 Linked list,addFront and removeFront functions, 1.6 Linked list : length and search functions, add back function, 2.1 Building a Linked List - Part 1 : Singly linked list ,Friend class, 2.2 Building a Linked List - Part 2 :Singly linked list,operator overload, 2.3 Linked List with tail ,addBack function, 2.4 Introduction to doubly linked list, 2.5 Summary :Linked List, 2.6 Doubly linked list :remove a node in between,Reverse a doubly linked list, 3.1 Building a Linked List - Part 3 :Doubly linked list implementation, 3.2 Circularly linked list - Assignment Lecture 1.1 Lecture 1.2 Lecture 1.3 Lecture 1.4 Lecture 1.5 Lecture 1.6 Lecture 2.1 Lecture 2.2 Lecture 2.3 Lecture 2.4 Lecture 2.5 Lecture 2.6 Lecture 3.1 Lecture 3.2
2 16/11 4.1 Stack data structure : LIFO principle, 4.2 Implementation of Stack ADT : Linked List application, 4.3 Stack implementation (lab), 4.4 Parentheses matching :Application of Stacks, 4.5 Application of Stack data structure ,Example: Matching parentheses (lab), 5.1 Queue data structure: FIFO principle,Queue ADT implementation , 5.2 Queue ADT implementation using linked list (lab) Lecture 4.1 Lecture 4.2 Lecture 4.3 Lecture 4.4 Lecture 4.5 Lecture 5.1 Lecture 5.2
3 17/11 5.3 Tree data structure:Examples, 5.4 Tree terminology :Nodes-Edges,Parent-Child ,Root- Leaf-internal nodes, 6.1 Trees: Edges and Paths,Height and Depth of a tree,Ordered trees, 6.2 Tree Implementation, 6.3 Functions in a Tree ADT, 6.4 Tree: Algorithms for finding height and depth of a Tree, Recursion , 6.5 Trees :Summarizing properties of Trees , 6.6 Family Tree assignment Lecture 5.3 Lecture 5.4 Lecture 6.1 Lecture 6.2 Lecture 6.3 Lecture 6.4 Lecture 6.5 Lecture 6.6
4 1/12 7.1 Binary Trees, 7.2 Full and Complete Binary Trees, 7.3 Properties of Binary trees, 8.1 Tree traversals: pre-order and post-order traversals , 8.2 Tree traversals : Inorder traversal, 9.1 Binary search trees (BST): Introduction Lecture 7.1 Lecture 7.2 Lecture 7.3 Lecture 8.1 Lecture 8.2 Lecture 9.1
5 2/12 9.2 Binary Search Tree (BST): Search Lecture 9.2
6 3/12 9.3 Binary Search Tree: Insertion and Deletion, 10.1 Analysis of Algorithms, 10.2 Asymptotic notation: Big O notation, 10.3 Analysis of Algorithms ,Asymptotic notation, Examples Lecture 9.3 Lecture 10.1 Lecture 10.2 Lecture 10.3
7 7/12 11.1 Asymptotic notation :Theta and Omega notation, 11.2 Asymptotic notation: More examples, 11.3 Asymptotic notation :Introducing small o, 12.1 Asymptotic analysis of algorithms Lecture 11.1 Lecture 11.2 Lecture 11.3 Lecture 12.1
8 8/12 13.1 Searching :Linear Search, 13.2 Searching :Binary Search Lecture 13.1 Lecture 13.2
9 9/12 14.1 Sorting :Internal vs External, Stable sorting , 14.2 Insertion Sort, 14.3 Selection Sort Lecture 14.1 Lecture 14.2 Lecture 14.3
10 10/12 15.1 Bubble Sort, 15.2 Swap function :swap without extra variable , 15.3 Merge Sort Lecture 15.1 Lecture 15.2 Lecture 15.3
11 11/12 16.1 Simplified version of Quicksort algorithm :Worst case analysis,Average case analysis , 16.2 Quicksort algorithm Lecture 16.1 Lecture 16.2