Programming and Data Structures Lab-II (CS142)

Instructor: Anup Bhattacharya

Teaching Assistants: Ankit Abhinav, Annada Prasad Behera, Krishna Mallick, Rucha Bhalchandra Joshi, Susobhan Bandopadhyay, Subham Bhattacharjee, Sasmita Pandey, Pinki Pradhan

  • Class timings: 9:30 - 11 AM on Fridays at LH-5

  • Office hours: 4:30 - 5:30 PM on Fridays at M321


For lab classes, TA allocation is as follows. This allocation will be for the entire semester.

  • Monday morning (Krishna Mallick)

  • Monday afternoon (Ankit Abhinav)

  • Tuesday morning (Rucha Bhalchandra Joshi)

  • Tuesday afternoon (Sasmita Pandey)

  • Wednesday morning (Pinki Pradhan)

  • Wednesday afternoon (Annada Prasad Behera)

  • Thursday morning (Susobhan Bandopadhyay)

  • Thursday afternoon (Subham Bhattacharjee)

Course Description: In this course, we will study various data structures such as arrays, heaps, stack, queues and study algorithms on these data structures.

Book: We will be primarily following "Data Structures and Algorithms in Python" by Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser.

Work in groups: You may work on your assignments alone or work in a group. We will allow groups of size at most 2. All of you have to submit your assignments individually but you may discuss your code with your group partner. If you are part of a group, you will inform the name of your partner to the TA.


Grading: Assignments will have 60% weightage and the rest 40% will be on the lab exam and a viva.

Grading rules:

  • Late submission: One mark will be deducted for each late day. Typically, the assignment deadlines are on Sunday at 11:59 PM. If you submit after 12:00 AM but before 11:59 PM on next Monday, one mark will be deducted, and so on.

  • We will allow only in person grading. If you don't come to the lab class, we will not grade your assignment.

  • You get 14 days to get your assignment graded starting from the submission deadline. The TAs will not grade your assignments after 14 days of the submission deadline for an assignment.

  • You are expected to explain your code to the TA during grading. Failing to do so will attract penalties. Any student found using any unfair means such as copying will be severely penalized.

  • For the lab exam and for grading assignments, your code has to run on the lab machines. We will not allow you to use your personal laptops for the lab exam or for grading.

Announcements (17/02/2022): The link for joining the Google classroom is here. The first lab class is on 21st February, 2022.

Lectures:

  1. Lecture 1: Introduction, Lists in Python, Array data structures (Some notes, Sections 5.1, 5.2, 5.3 in the book, Code)

  2. Lecture 2: Linked Lists (Some notes, Code)

  3. Lecture 3: Stacks and Queues (Notes, Chapter 7, 8 and specially Sections 8.1.1 and 8.1.2 in the book reference, Code)

  4. Lecture 4: Trees (Notes)

  5. Lecture 5: Heaps and Priority Queues (Notes, Sections 9.1 and 9.3 in the book)

  6. Lecture 6: Binary Search Trees (Some notes, Wikipedia article, Section 11.1 in the book)

  7. Lecture 7: Balancing a binary search tree, AVL Trees (Some notes, Wikipedia, Sections 11.2 and 11.3 in the book)

  8. Lecture 8: Hashing (Some notes, Wikipedia, Section 10.2 in the book)

  9. Lecture 9: Sorting Algorithms (Some notes, Wikipedia, Section 12.1 in the book)

  10. Lecture 10 (By Dr. Aritra Banik) on Graphs I: (Some notes, Wikipedia)

  11. Lecture 11: Traversal in Graphs, BFS, DFS (Sections 14.2, 14.3 in the book)