Introduction to Programming and Data Structures

Ph.D. Coursework: First year, First Semester (Session: 2024-25)

  Information  |   Announcements  |   Mid-Sem Classes  |   End-Sem Classes  |   Assignments  |   References  


Course offered at Instructors
tcg-crest-mini-logo Institute for Advancing Intelligence (IAI),
TCG Centres for Research and Education in Science and Technology (TCG Crest),
Kolkata, India
👤 Dr. Laltu Sardar ✉


Course Objective: To equip students with a foundational understanding of programming principles and problem-solving skills through the C language, this course emphasizes the development, implementation, and analysis of basic data structures and algorithms. It aims to foster computational thinking and the ability to write efficient, structured, and well-documented code. Students will learn to design, write, and analyze programs, understand core data structures, and apply these concepts to real-world problems.


Prerequisites:
1. Typing Skills: Proficiency in typing is essential for efficient coding. If not proficient, students should practice and improve their typing skills before or during the course. Online typing tutors and practice tools [ Typing.com, 10FastFingers, etc] can be helpful.
2. Machine: While owning a laptop is not strictly necessary, it is highly recommended for convenience and flexibility in practicing code. If a student does not have access to a personal laptop, it is crucial that they dedicate sufficient time in the computer lab to practice coding and reinforce their learning. If necessary, classes can also be shifted to the lab.


✦ End-sem question paper✦

📃 Information


✦ Class Timing: Tuesday-- 4:00 PM onwards & Thursday-- 2.30 PM onwards;
  PDS Syllabus    IAI Time-Table    IAI Complete Syllabus    Course-page QR Code    Topics  
✦ Marks Distribution: Mid-Sem: 40%, End-Sem: 60% and Lab Tests: 50%, Assignment and Project: 50%
✦ Pass Marks: According to AcSIR policy
# Total Marks 100 Assignments Lab Tests Total
1 Mid-Semester 20 20 40
2 End-Semester 30 30 60
Total 50 50 100
✦ Old course-pages: 2022-23: Sem-I;   2022-23: Sem-II;   2023-24: Sem-I
✦ Attendance: See your attendances here.
✦ Languages to be taught:
C : The main focus: To Develop programming thinking
*C++ : First object oriented programming
*Python : Mainly For AI/ML
*Solidity : For blockchain researchers

* Depends on time and interest of students
✦ Preferred softwares--
--Text editor: Atom ; Notepad++
--Terminal for ubuntu: build in terminal
--Terminal for windows: mobaxterm or terminal in Windows Subsystem for Linux (WSL)

🗣 Announcements


☑ The PDS classes will be start from August 13, 2024

📆 Class Schedule: Mid-sem


# Date Topic Instructor Remarks
1 2024-Aug-13 Introduction
Compiling C Code
Tokens, Operators, Variable, Control Flow
Dr. Laltu Sardar slides_ms_01
💃 2024-Aug-15 Holiday--Independence Day --- --
2 2024-Aug-20 Data Types and their Representations
Operators and Expressions
Dr. Laltu Sardar slides_ms_02
homework
3 2024-Aug-22 Dynamic Memory Allocation
Matrix Addition
Dr. Laltu Sardar slides_ms_03
code
4 2024-Aug-27 Structures in C
File Operation in C
Dr. Laltu Sardar slides on Structures
slides on File I/O
code
5 2024-Aug-29 Arrays and Strings: Dr. Laltu Sardar slides on Arrays
slides on Strings
6 2024-Sep-02 Problem Solving: Strings Dr. Laltu Sardar codes
7 2024-Sep-06 Problem Solving Dr. Laltu Sardar slides on input/outputs
8 2024-Sep-09 Linked List: Create, Insertion Dr. Laltu Sardar slides on linked list
codes
9 2024-Sep-13 Linked List: Searching, Deletion Dr. Laltu Sardar problem_set
Debugging
codes
10 2024-Sep-17 Programming Practice Class Dr. Laltu Sardar
11 2024-Sep-19 Stack & Queue Dr. Laltu Sardar slides on stack & queue
codes
12 2024-Sep-24 TypeCasting
Command Line Arguments
Ellipsis
Function and Recursion
Dr. Laltu Sardar slides on type_casting
cmd_line_args
ellipsis
function & recursion
13 2024-Sep-26 Programming Practice Class Dr. Laltu Sardar --
14 2024-Oct-01 Programming Practice Class Dr. Laltu Sardar --
15 2024-Oct-04 Binary Search Tree
Insert, Search, Traverse, Delete
Dr. Laltu Sardar slides on BST,
codes
16 2024-Oct-08 Programming Practice Class Dr. Laltu Sardar slides_ms_16
💃 2024-Oct-10 Holiday--Durga Puja - Saptami Dr. Laltu Sardar 🏖
17 2024-Oct-10 Mid-Semestral Lab Test Dr. Laltu Sardar questions
sample_solutions

📆 Class Schedule: End-sem


# Date Topic Remarks
1 2024-Oct-31 Holiday --
2 2024-Nov-04 Modular Programming,
Hash Table
slides on modular progs.,
slides on hash table
3 2024-Nov-07 Practice Time --
4 2024-Nov-11 Hash table (cont.),
Polynomials
slides on Polynomials
5 2024-Nov-14 Graph Representations,
Breadth First Search
Homework
6 2024-Nov-19 Practice Class: Hash Table --
7 2024-Nov-21 BFS, DFS: Implementations codes
8 2024-Nov-25 Determinant, Dominant Eigen Value and Vector reference
9 2024-Nov-28 AVL Tree slides_es_09
Visualizing AVL Tree
10 2024-Dec-03 AVL Tree Implementation --
11 2024-Dec-05 Practice class --
12 2024-Dec-10 Class cancelled: Asiacrypt conference --
13 2024-Dec-24 End-Semestral Lab Test Questions
Sample solution

✍ Assignments



Assignment Problems

# Topic Assignments Deadline Remarks
Mid-semester
0 Warming-up: Basics of C programming Warm-up problem set 2024-Aug-19
1 Matrix Operations Assignment #01 2024-Aug-26
2 Array and Strings Assignment #02 2024-Sep-08
3 Linked Lists Assignment #03 2024-Sep-18
4 Stack, Queue:
Using linked List and Array
Assignment #04 2024-Sep-29
End-semester
5 Stack and Queue: Basics
Some Generic functions
Assignment #05 2024-Nov-03
6 Polynomials
Sorting
Assignment #06 2024-Nov-24
7 Hash Table Assignment #07 2024-Nov-17
8 AVL Tree: A Height Balanced BST Assignment #08 2024-Dec-01 Visualizing
AVL Tree
9 Advanced Matrix Algorithms:
Inverse, Determinant, Dominant Eigen Value and Vector
Assignment #09 2024-Dec-08



Submission Guidelines

# Points
1 Header
☛ In the beginning of each file, please include the followings
/************************************************************
File Name:
Problem ID:
Name:
Collaborators:
Acknowledgements:
Time Spent:
************************************************************/
2 Acknowledgement
☛ In acknowledgement part, refer books, websites, etc., from where any part of your code is inspired
3 Submission File
☛ Assignments must be sent as zip format. The name of the zip files must be of the form fname_assignment_xy.zip where xy = assignment id and fname = your firstName in small case. For example: laltu_assignement_01.zip will be the file name for 'Laltu Sardar' for assignment 01
4 Individual File
☛ For assignment ID #AP0x0y, the program FileName will be fname_ap0x0y.c. E.g., laltu_ap0102.c. Thus, if assignment 01 contains 5 problems, laltu_assignement_01.zip should contain the files-- laltu_ap0101.c, laltu_ap0102.c, ..., laltu_ap0105.c.
☛Then add pdf version of each file having the same format fname_ap0x0y.pdf.
Execute enscript --color --highlight=c -o fname_ap0x0y.ps fname_ap0x0y.c and then ps2pdf fname_ap0x0y.ps for each .c file to get .pdf files. Submit your test files, if any only in .txt format.
☛ Arbitrary naming may reason for being undetected by the machines.
5 Submission Link
☛ Upload the zip via this Submission Link
☛ Check submission log from This Link
6 Sharing Code
☛ Discussion with friends is allowed. However, copying others' codes is strictly prohibited.
Minimum 50% Marks will be deducted for taker. The giver will get minimum 25% negative marks.
If we can't distinguish giver and taker, both may get negetive upto 50%, of the allotted marks.
7 Crosschecking
☛ Please Crosscheck i) filenames, ii) variable names and iii) indentation before submission
8 Late Submission
☛ Deductions due to late submission: 1 day-- 10%; 2 days-- 20%; 3 days-- 30%; >= 4 days --May not even checked

📑 Projects


# Topic Project Remarks Deadline
1 TBA Project-I Allocations Sep-00-2024


📚 References


Books

# Title Author(s) ISBN
1 The `C' Programming Language B. W. Kernighan and D. M. Ritchi 978-0131101630
2 Schaum's Outline of Programming with C Byron S. Gottfried 978-0070240353
3 Schaum's Outline of Data Structures with C Seymour Lipschutz 978-0070701984
4 Introduction to Algorithms T. Coreman, C. Leiserson and R. Rivest 978-0262046305
5 Fundamentals of Data Structures E. Horowitz and S. Sahni 978-8173716058
6 Data Structures and Algorithms A. Aho, J. Hopcroft, and J. Ullman 978-0201000238
** We will follow [1] for the C programming language and [3] for the data structures. For rest of the topics, we will provide sources time to time.

Helpful Websites

# Website Useful for
1 https://www.codechef.com To Practice Coding
2 https://www.geeksforgeeks.org To Learn Coding
3 https://unstop.com To Practice Coding
4 https://www.hackerrank.com To Practice Problem Solving Skills
5 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html To Visualize Data Structures and Algorithms
Top