COP290 Design Practices
2022-2023 Sem II
This is a project based course.
Course Information
- Pre-requisites: COL106
- Credits: 0-0-6
- Slot: K
- Office hours: Tuesdays and Fridays, 4-5:30pm, GCL lab, 4th floor, Bharti building
- TAs:
- Vishal Singh: cs5180426 AT cse.iitd.ac.in
- Jaskaran Singh: mcs222055 AT cse.iitd.ac.in
- Varun Singh Negi: mcs212156 AT cse.iitd.ac.in
- Suyash Saxena: mcs212155 AT cse.iitd.ac.in
- Aayush Goyal: Aayush.Goyal.cs119 AT cse.iitd.ac.in
- Sanjali Agrawal: cs5180419 AT iitd.ac.in
- Anirudha Kulkarni: cs5190421 AT iitd.ac.in
Grading criteria
- Lab-1: 10%
- Lab-2: 40%
- Lab-3: 50%
Supporting systems
- Discussions should be done on Piazza. Sending emails is discouraged.
- Labs will be submitted through Moodle. Grades will also be uploaded there.
Policies
- Cheating will get an F in the course. Why should I not cheat?
- Late submissions are NOT allowed.
- Audit policy: 40% marks in the overall course and 40% marks in the exams component.
Tentative labs and learning goals
Non-technical learning goals:
- Self-learning
- Managing timelines, developing sincerity
- Communicating clearly
Lab-1 (Individually, 4 Jan - 18 Jan)
- Learn touch typing
- Learn a decent editor like vim
- Become familiar with shell
Lab-2 (Group of 3, 12 Jan - 24 Feb)
- Familiarity with git, LaTex, make, gcc, gdb, gprof
- Stack, heap, pointers, pthreads
Reference: Programming in C, by Stephen G. Kochan.
- Pointers pointer.c
- Calling by value vs reference call_val_ref.c
- Structures struct.c
- Calling by value vs by reference performance struct_val_ref.c
- Dynamic memory allocation malloc.c
- Stack and heap memory
- Function pointers fptr.c fptr_min.c
- User context uctx.c, print_uctx.c
Lab-3 (Group of 4, 25 Feb - 28 Apr)
- Object oriented programming, design patterns, SOLID principle
- Server-client-database: REST APIs, GET/POST/PUT requests, json, SQL, ORM
- Continuous Integration/Continuous Deployment
- Unit testing, integration testing, coverage
Disclaimer: Actual lab contents and timelines may differ as the course progresses.
Encouraging student comments after the course
I plan to go through lab 1 again and dive deeper into the topics and develop the skills further. Planning to do the same for lab 3 with more emphasis on backend.
Learning basic linux commands, C, and touch typing are very helpful. I will use these skills throughout my life.
Thinking of creating a chrome extension. I suppose I will get some help from the website development project in it. And obviously typing will help
According to me, lab 3 was the best assignment of all the 3. I was surprised to know that we had to make a website in a college course itself. In most colleges, web development is a skill that you have to learn yourself. This lab helped all of us get a basic idea of web development and now, anyone of us can make an entire website on our own (with the help of google).
Lab 2 assignment gave us a good taste of parallel programming and concepts such as concurrency.
During my internship, the professor was impressed to see I was able to use terminal and code in vim.