Evaluation plan: Task1 50%, Task2 50%

Piazza at piazza.com/iit_delhi/spring2021/cop290, access code: cop290

TAs: Mayank cs5160394@cse.iitd.ac.in, Partha cs1170836@cse.iitd.ac.in, Sameer cs1170371@cse.iitd.ac.in, Chahat anz188060@cse.iitd.ac.in, Sachin csz188012@cse.iitd.ac.in, Chinmay mcs192560@cse.iitd.ac.in, Sagar mcs192570@cse.iitd.ac.in, Saswat mcs192571@cse.iitd.ac.in, and Akshay mcs192556@cse.iitd.ac.in

Late policy: From Task 2 onwards, submissions can be upto 2 days later, with 10% penalty of the maximum grade per day. No extensions will be given. Managing time is a part of project design.

Background

We all use production quality software comprising millions of lines of code in our daily lives, be it the Android or IoS operating systems or the Facebook or Twitter social networking programs. However, most of us write tens to at max hundred lines of code, that sometimes fail to run on our own computers. This course is a self driven attempt to make our programming skills a bit less clumsy. Thinking carefully (a) how software should be organized into classes and functions to create better abstractions, (b) what data structures and parallelization can improve space-time efficiencies so that our code runs faster and uses less hardware resources like RAM, (c) how the different source and header files should be compiled and cleaned through Makefiles to remember dependencies, (d) how to use gdb instead of scattering printf-s all over the code to debug issues, (e) how to stop mailing our team-mates code versions and then not finding the code to upload in moodle 5 minutes before deadline by appropriate version control in git etc., are more important goals in this course, than just being functionally correct in the tasks.

What we will be doing

There will be three tasks. All three tasks should be done in groups of two. The TAs will take demo-s of these assignments, with viva to see if each team-member understands the concept and the code. Tasks will be released on this webpage with submission links on moodle. Tasks need to be done on Linux machines (preferably). Though there is no lecture component in the course, the whole class will meet me and the TAs at some intermediate times. The time and venue will be communicated over email. The meetings (3-4 of them over the semester) will be about an hour long. We will discuss common issues we are finding in your submissions, the upcoming tasks etc.

Things to care about

Typically this is called the honour code for any course. Read as much as you want online resources and discuss among friends to understand the concepts. But the implementations, graphs and reports that you submit should be your own. No copy pasting of code from the internet or across groups. The reason is simple. We all will be professional programmers at some point in our lives with a Computer Science major or minor degree. Will we trust a civil engineer to build our bridges, if we know he copied all through his engineering projects? Will we trust a doctor to prescribe medicines, if we know that he passed exams by copying from cheatsheets? Will we trust a chemist to create those medicines if she copied all the chemical equations? The professional ethics that we expect from our politicians, doctors, civil engineers, chemists etc. should be the same as what we expect from ourselves. Cheating is insulting our own creativity and intellect.

[1] Task1: Traffic density estimation using OpenCV functions

[2] Task2: A 2 player maze game and a maze simulation