| Course Outline | General Information | Study Material | Lectures (classwise) |
Assignments (Test data uploaded) |
Announcements (updated with assignment grading schedule) |
The course consists of two laboratory classes per week.
The basic thrust of the course would be to learn programming languages and implementing data structures.
We will try to stick to the basic course outline as given in this page, but may deviate a bit.
| Class Timings: | Monday 14:15-17:00, Thursday 14:15-17:00 CSSC Lab, 4th floor, S. N. Bose Bhavan (Library Building) |
| The necessary evil - marks, exam, etc.: | Laboratory tests (3 in all): 50, Assignments: 50 |
| Instructors: |
Sukanta Bhattacharya (SB) Ansuman Banerjee (AnB) Sasthi C. Ghosh (SCG) Arijit Bishnu (ArB) |
| Books |
(B1) The C Programming Language B. W. Kernighan and D. M. Ritchie Prentice Hall, India (B2) How to Solve it by Computer R. G. Dromey Pearson, India. (B3) The Unix Programming Environment B. W. Kernighan and R. Pike Prentice Hall, India. (B4) Introduction to Algorithms T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein Prentice Hall, India. (B5) Fundamentals of Data Structures E. Horowitz and S. Sahni CBS, India. (B6) Data Structure Techniques T. A. Standish Addison-Wesley, Reading, Mass. (B7) The C++ Programming Language Bjarne Stroustrup Addison-Wesley (B8) C++ - The Complete Reference Herbert Schildt TMH (B9) Object-Oriented Programming in C++ Robert Lafore SAMS (B10) Programming Languages Design and Implementation T. W. Pratt and M. V. Zelkowitz Prentice Hall India (B11) Fundamentals of Data Structures in C E. Horowitz, S. Sahni and S. Anderson-Freed Universities Press |
| Web Resources | (W1) Help on Python |
| LECTURE DATES | TOPICS | NOTES | BOOKS |
|---|---|---|---|
| Day 0 (11-07-13) |
Introduction | A synopsis of the class
(prepared by SB) |
(B1), (B3) |
| Day 1 (13-07-13) |
Variables and their scope | Sample programs (play around with them) (prepared by SCG) |
(B1) |
| Day 2 (15-07-13) |
Conditionals, Loops, Function and recursion, Array and Pointers Introduction to compiler |
Slides with examples and exercises (prepared by ArB) |
(B1) |
| Day 3 (18-07-13) |
Introduction to compiler (gcc), Good programming habits
handling multiple files, headers, etc. |
The entire slides used for Days 2 and 3 (prepared by AnB) |
(B1) |
| Day 4 (22-07-13) |
Programming practice | Programming exercises | (B1) |
| Day 5 (25-07-13) |
Introduction to the use of debugger Singly linked list |
Introduction to debugger (prepared by AnB) Sample Code I Sample Code II Sample Code III (All codes prepared by SCG) Programming exercise |
(B1) |
| Day 6 (29-07-13) |
Doubly linked list |
Sample Code (Code prepared by SCG) Programming exercise |
(B1) |
| Day 7 (01-08-13) |
Recursion | Slides (prepared by ArB) | (B2), (B1) |
| Day 8 (03-08-13) |
Data passing among functions | (Lecture by SCG) | Chapter 7.1 of (B10) |
| Day 9 (05-08-13) |
Size of structure: Padding and alignment of structure Handling big data: Use of linked lists |
Size of structure
(prepared by AnB) Sample code (prepared by SCG) |
|
| Day 10 (08-08-13) |
Memory Analysis: Use of Valgrind Use of gcc options and makefile |
Code Snippets 1
2
3 Slides (AnB) Slides (AnB) |
(B3) |
| Day 11 (12-08-13) |
Bitwise operations Bitfields Practice programs |
Code snippets
1 and 2
Code snippet (SCG) Programming exercise |
(B1) |
| Lab Test I (17-08-13) |
Question paper |
Answers to the short question Solution to Q1 Solution to Q2 (SB) Another solution to Q2 (ArB) |
|
| Day 12 (19-08-13) |
Command line arguments, file handling and variable argument function in C |
Command line arguments Command line arguments File handling Variable argument function Variable argument function (All codes by SCG) Input files:1, 2, 3, 4, 5 |
(B1) |
| Day 13 (22-08-13) |
Discussion on lab test Abstract Data Type, Sparse Matrix |
(Lecture by ArB) | (B11) |
| Day 14 (08-09-13) |
Abstract Data Type, Sparse Matrix, Functions: Addition, Transpose, Multiply |
(Lecture by ArB) Programming exercise |
(B11) |
| Day 15 (12-09-13) |
Stack as an ADT |
(Lecture by ArB) Programming exercise |
(B11) |
| Day 16 (15-09-13) |
Recap on ADT, importance of encapsulation; ADT and OOP; basic OOP concepts -- class, object, message, inheritance and multi-inheritance |
(Lecture by SCG) | - |
| Day 17 (19-09-13) |
Abstract class, template class, static and dynamic binding polymorphism; brief introduction to C++; C++ implementation of features of OOP |
(Lecture by SCG) |
- |
| Day 18 (23-09-13) |
Queue as an ADT; Binary trees | - Programming exercise |
(B11) |
| Day 19 (26-09-13) |
Full and complete binary trees, Array representation of a tree Iterative traversals; Level order traversal; Threading of binary tree |
- | (B11) |
| Day 20 (28-09-13) |
Union Find | Slides used by AnB | (B11) |
| Day 21 (30-09-13) |
Recapitulation on C++; Binary search trees |
Programming exercise (updated) |
(B11) |
| Day 22 (03-10-13) |
Recapitulation on C++ | -- | (B11) |
| Day 23 (05-10-13) |
Learning Python I | Slides | (B11) |
| Day 24 (07-10-13) |
Learning Python II | Slides | (B11) |
| Day 25 (21-10-13) |
B tree and B+ tree | Programming exercise | (B11) |
| Day 26 (24-10-13) |
Linux command line | Linux command line (lecture by AnB) |
(B3) |
| Day 27 (28-10-13) |
Shell programming | Shell programming (lecture by AnB) |
(B3) |
| Assignment set | Uploading date | Submission deadline | Programing language |
|---|---|---|---|
| Assignment 1 | 19-07-2013 | 29-07-2013, 2 pm | C |
| Assignment 2 | 24-07-2013 | 05-08-2013, 2 pm | C |
| Assignment 3 | 05-08-2013 | 22-08-2013, 2 pm | C |
| Assignment 4 | 19-08-2013 | 12-09-2013, 2 pm | C |
| Assignment 5 | 12-09-2013 | 23-09-2013, 2 pm | C |
| Assignment 6 | 24-09-2013 | 03-10-2013, 2 pm | C++ |
| Assignment 7 | 03-10-2013 | before Puja break | C |
| Assignment 8 | 22-10-2013 | 28-10-2013 | C++ |
| Assignment 9 | 29-10-2013 | 06-11-2013 | C/C++ |
| Assignment 10 | 08-11-2013 | 29-11-2013 | C/C++/Python |
| Assignment 11
Test data prepared by Prof. Mandar Mitra |
08-11-2013 | 29-11-2013 | C/C++/Python |
The first laboratory test will be held on August 17, 2013 (Saturday)
from 1 pm to 5 pm.
The syllabus would be whatever would be covered
till August 16, 2013.
You will have to finish your programs within the stipulated time.
The second laboratory test will be held on November 1, 2013 (Friday)
from 10:15 am to 2:15 pm.
The syllabus would be whatever would be covered
till October 24, 2013.
You will have to finish your programs within the stipulated time.
The third and final laboratory test will be held on November 6, 2013 (Wednesday)
from 11 am to 6 pm.
The syllabus is whatever has been covered
in the course.
You will have to finish your programs within the stipulated time.
Please get Assignments 3, 7 and 8 checked by Prof. Ansuman Banerjee
between November 26 to November 28, 2013.
Contact him about the specific timings on those days.