COP290 Design Practices
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.
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
- Learn touch typing
- Learn a decent editor like vim
- Become familiar with shell
C reference: The C programming language by Brian W. Kernighan and Dennis M. Ritchie.
- Pointers pointer.c
- Calling by value vs reference call_val_ref.c
- 2D ptrs vs arrays ptr_vs_arr.c
- Function pointers fptr.c fptr_min.c
- Structures struct.c
- Unions union.c
- Polymorphism in C poly.c
- Calling by value vs by reference performance struct_val_ref.c
- Dynamic memory allocation malloc.c
- Stack and heap memory. Visualization
- Memory bugs and gdb: null.c, invalidfree.c, useafterfree.c, doublefree.c, overflow.c
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 | Lecture 2. Structs and unions | |
7 | Quiz 4. Chapter 6. Structs. Chapter 7. IO. | |
12 Feb Wednesday | Lecture 3. Stack and heap | |
8 | 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. | |
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.