2024-2025 Sem II

This is a project based course. Technical learning goals:

  • Skills: typing, editing
  • Basic tooling: build systems, version control, shell, debuggers, profilers
  • Developing specifications
  • Low-level programming
  • Testing and debugging programs

Non-technical learning goals:

  • Self-learning
  • Managing timelines, developing sincerity
  • Working in teams
  • Communicating clearly

Course Information

  • Pre-requisites: COL106
  • Credits: 0-0-6
  • Slot: K
  • Office hours: Tuesdays and Fridays, 5-6:30pm. Venue: TBD.

Grading criteria

  • Quizzes: 30%
  • Minor exam: 15%
  • Major exam: 15%
  • C lab: 15%
  • Rust lab: 25%

Support

  • Discussions should be done on Piazza. Sending emails is discouraged.
  • Quizzes and labs will be done via Moodle. Grades will also be uploaded there.
Email TA
anz238224 AT sit.iitd.ac.in Satyam Jay
cs5200649 AT cse.iitd.ac.in Geetansh Juneja
mcs232487 AT cse.iitd.ac.in Sourabh Tiwari
cs5210596 AT cse.iitd.ac.in Pushpraj
cs1210577 AT cse.iitd.ac.in Anshik Sahu
csz248491 AT cse.iitd.ac.in Abhishek Tiwari
csz248494 AT cse.iitd.ac.in Joydeep Ray
csz248492 AT cse.iitd.ac.in Mahima

Policies

  • Cheating will get an F in the course. Why should I not cheat?
  • Late lab submissions are NOT allowed.
  • Quizzes: Quizzes will be in-person. There will be no makeup quizzes. We will take best 10 out of 12 quizzes.
  • Attendance policy: If a student attends less than 75% of the quizzes, they will be awarded one grade less than the actual grade that they earned. For example, a student who has got an A grade but has attendance less than 75% will be awarded an A- grade.
  • Audit policy: 40% marks in the overall course. 40% marks in the exams + quiz component. 75% quiz attendance.

Resources

C reference: The C programming language by Brian W. Kernighan and Dennis M. Ritchie.

Rust book

Tentative Schedule:

Week Date Activities
1 3 Jan Friday Touch typing, editting, make, shell. Practice.
2 10 Jan Friday C Lab
3 17 Jan Friday Quiz 1. shell, file permissions, touch typing, make
4 24 Jan Friday Quiz 2. Chapter 1. Basic C comprehension.
5 29 Jan Wednesday Lecture 1. Pointers and Arrays
  31 Jan Friday Quiz 3. Chapter 5. Pointers and Arrays.
6 5 Feb. Delhi elections. 9 Feb Sunday Lecture 2. Structs and unions
7 7 Feb 11 Feb Tuesday Quiz 4. Chapter 6. Structs. Chapter 7. IO.
  12 Feb Wednesday Lecture 3. Stack and heap
8 14 Feb. Broken lab systems. 18 Feb Tuesday Quiz 5. Section 8.7. malloc and free.
9 21 Feb Friday –27 Feb Thursday Minor week
  28 Feb Friday Minor exam. Write C programs.
  21 Feb. Extension 2 Mar Sunday C Lab submission.
10,11 4 Mar Tuesday Rust Lab TBD.
  7 Mar Friday – 16 Mar Sunday Break week. Design own extensions to Rust lab. TBD.
12 21 Mar Friday Quiz 6. Chapters 1, 2, 3, 4. Ownership.
13 25 Mar Tuesday Quiz 7. Chapters 5, 6, 8, 9, 18. Structs, enums, collections, errors, patterns
  28 Mar Friday Quiz 8. Chapters 10. Generic types, traits and lifetimes
14 1 Apr Tuesday Quiz 9. Chapter 11, 12, 13. writing tests, building a command line program, iterators and closures.
  4 Apr Friday Quiz 10. Chapter 15. smart pointers.
15 11 Apr Friday Quiz 11. Chapter 16. Concurrency.
16 15 Apr Tuesday Quiz 12. Chapter 17. Object oriented programming in Rust.
17 25 Apr Friday Rust Lab submission. Buffer day for moving quiz
18 Timetable TBD Major exam. Write Rust programs.

Disclaimer: Actual lab contents and timelines may differ as the course progresses.