CSD101: Introduction to Computing and Programming

Labs

Labs/practicums are a very important component of the course. To learn to program well you must practice. The labs try to give you the minimum amount of practice needed to understand the material in the course. The more problems you solve the better you become. See the links, resources page for links to some online coding sites that have many programming problems. The ICPC is a yearly, world wide programming contest for college students and they have archived the programming problems of each contest.

How the labs will run

  1. There are 5 lab slots (labelled Lab 1 to Lab 5), each of 2 hours duration. Each student is assigned one lab slot.
    Important: Pl. ensure you have an assigned lab slot.
  2. All labs will be online over an MS Teams link for each lab slot.
  3. Weekly lab assignments will be released on Saturday evening for the following week. The lab assignment must be completed and submitted by the given deadline (usually by next Saturday midnight).
  4. Each student will be assigned a lab TA in his/her lab slot as a mentor. Your mentor TA will grade your lab submissions and will be your first point of contact for any difficulties/ problems. If your problem/ diffculty is not resolved you can contact any of the instructors.
  5. In each lab slot the two TAs associated with the slot will be on hand (online) to assist you if you have any difficulties in solving the lab problems or with any other material in the course.
  6. Solutions to lab problems have to be uploaded to Blackboard (the learning management system being used for the course). An upload link will be provided when the lab problems are released.
  7. For grading you will have to run your submitted code for each lab problem using the CS50 IDE through a shared video link with your mentor TA.
  8. The lab schedule (along with TAs) is given below.
  9. The instructors of the course will have the following lab office hours:
    To be announced.
  10. To be graded practicums/labs must be submitted by the deadline unless you have specific permission from one of the instructors to submit late.

Lab Slots

Lab no.SlotTAs' namesStudent list
Lab 1/P1 Fri. 09.00-11.00Surbhi Jain, Rishika DwarakP1 batch
Lab 2/P2 Fri 11.00-13.00 Bhanu Prakash, Prakhar RathiP2 batch
Lab 3/P3 Mon 11.00-13.00 Shardul Singh, Shivansh GuptaP3 batch
Lab 4/P4 Tue 11.00-13.00 Ankur Tyagi, Y SrikarP4 batch
Lab 5/P5 Tue 09.00-11.00 Pooja Gupta, Mithun KumarP5 batch

Weekly lab problems

DateLab No.Submission bySolutionsRemarks
21-8-21Lab 128-8-21, 5pmLab1 solnsPractice lab. Not graded/counted. But, must submit on BB.
28-8-21Lab 24-9-21, 5pmLab 2 solnsFirst graded lab. VSC+First C programs. Upload on BB.
4-9-21Lab 311-9-21, 5pmLab 3 solnsC programs with numbers. Upload on BB.
11-9-21Lab 418-9-21, 5pmLab 4 solnsExpressions, loops, functions, 1D arrays - 1. Upload on BB.
18-9-21Lab 525-9-21, 5pmLab 5 solnsLoops, functions, 1D arrays - 2. Upload on BB.
25-9-21Lab 62-10-21, 10pmLab 6 solnsLoops, functions, 1D arrays - 3. Upload on BB.
5-10-21Lab 718-10-21, 10pmLab 7 solnsLoops, functions, 1D arrays - 4. Upload on BB.
16-10-21Lab 825-10-21, 10pmLab 8 solns2D arrays, Gauss, Gauss-Jordan methods - Upload on BB.
24-10-21Lab 931-10-21, 10pmLab 9 solnsRecursion - Upload on BB.
31-10-21Lab 108-11-21, 10pmLab 10 solnsTheoretical, concrete complexity - Upload on BB.
7-11-21Lab 1115-11-21, 10pmLab 11 solnsPointers, structures - Upload on BB.
14-11-21Lab 1222-11-21, 10pmLinked structures and applications - Upload on BB.

Projects

Course Projects

All projects should have only text based interfaces and should be written in C. Some projects are harder than others. You can attempt as many as you like. Each project can function as a replacement for a lab. So, the best m out of n scores in the submitted labs + projects will be considered for grading.

When you submit your project please label your file/archive with your roll number followed by the string "Project" followed by the project number (given below). Projects should be submitted by 25th Nov. 2021, 11.59pm. Submit on BB under the appropriate project number.

A project can replace one lab assignment, up to a max of 4, follows. Let n be the number of lab assignments and p be the number of projects submitted by a student. Then we will pick m highest scoring lab assignments plus projects (max of 4), where m is a little less than the total number of lab assignments in the semester. This allows students to makeup missed labs as well as replace labs in which they have low marks by doing projects. Of course, projects are optional. It is an opportunity to improve your overall lab assignment marks.

  1. An advanced scientific calculator with a purely text based interface. One thing you have to decide is what functionality you will provide in your calculator - esp. since it is text based. You can get some ideas from existing software calculators that are freely available.
  2. A program that allows a student to take a quiz and automatically grades it. It should support multiple-choice questions (with only 1 answer correct), more than one answer correct and fill in the blank questions with intelligent answer matching.
  3. A word game like hangman with a reasonably large vocabulary using some internet dictionary.
  4. A variant of the standard minesweeper game that allows simple questions like how many mines in the row/column and right/left or above/below the current position to make the game more strategic. It can also have user chosen grid size and mine density to make the game harder/simpler.
  5. A simulation of Conway's game of Life. See the Wikipedia entry for a description of the game.
  6. A program that can play Tic-tac-toe player.
  7. A program to solve Sudoku puzzles.
  8. A program to create a robot detection system which decides that a person interacting with the system is human (and not a bot) based on the response to some random-challenge (from a given set of puzzles, e.g. image-based, sequence-related, word finding etc.). Try something different from the current approaches.
  9. We discussed the VSC computer in class. Extend the VSC computer (EVSC) by adding more registers and instructions and update the existing interpreter to handle EVSC programs. In particular see how function calls can be simulated much more easily and what kinds of instructions are needed to do it.