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)

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.

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.