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 Friday Activities
1 3 Jan Touch typing, editting, make, shell. Practice.
2 10 Jan C Lab
3 17 Jan Quiz 1. shell, file permissions, touch typing, make
4 24 Jan Quiz 2. Chapter 1. Basic C comprehension.
5 31 Jan Quiz 3. Chapter 5. Pointers and Arrays.
6 7 Feb Quiz 4. Chapter 6. Structs. Chapter 7. IO. Section 8.7. malloc and free.
7 14 Feb Quiz 5. Find memory leaks and memory bugs using valgrind and gdb.
8 21 Feb C Lab submission. Minor exam. Write C programs.
9 28 Feb Rust Lab TBD. Quiz 6. Chapters 1, 2, 3, 4. Ownership.
10 7 Mar Quiz 7. Chapters 5, 6, 8, 9, 18. Structs, enums, collections, errors, patterns
11 14 Mar Break week. Design own extensions to Rust lab. TBD.
12 21 Mar Quiz 8. Chapters 10. Generic types, traits and lifetimes
13 28 Mar Quiz 9. Chapter 11, 12, 13. writing tests, building a command line program, iterators and closures.
14 4 Apr Quiz 10. Chapter 15. smart pointers.
15 11 Apr Quiz 11. Chapter 16. Concurrency.
16 15 Apr 18 Apr: Good friday Quiz 12. Chapter 17. Object oriented programming in Rust.
17 25 Apr Rust Lab submission. Buffer day for moving quiz
18 2 May Major exam. Write Rust programs.

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