CSL100: Introduction to Computer Science

This is the course page for CSL100: Introduction to Computer Science , for Summer Semester, 2013-2014, being taught by Vinay Ribeiro (vinay AT cse.iitd.ac.in) and Parag Singla (parags AT cse.iitd.ac.in) at the Department of Computer Science and Engineering, IIT, New Delhi.

Notice | Class Mailing List | Miscellaneous | Overview | Prerequisites | References | Material Covered in Class | Assignments | Assignment Submission Instructions | Exams | Computer usage | Administrative Information and Grading Policy |

General Information

TimingsClass Room Practicals
Classes: Mon, Wed, Thu: 9:30am - 11:10 am V LT1 Lab Schedule & Teaching Assistants


  1. [Jun 30, 2014]: Assignment 5 is out! Due on Monday July 7, 12:30 pm (afternoon).
  2. [Jun 23, 2014]: Assignment 4 is out! Due on Monday June 30, 12:30 pm (afternoon).
  3. [Jun 16, 2014]: Assignment 3 is out! Due on Sunday June 22, 11:50 pm.
  4. [Jun 12, 2014]: Minor Exam on Friday June 13th. 10 am - 11:15 am. Venues:
    • Groups 1,2,3 (Mon, Tue, Wed): V LT1.
    • Groups 4,5 (Thu, Fri) - VI 301.
  5. [Jun 9, 2014]: Assignment 2 is out! Due on Sunday June 15, 11:50 pm.
  6. [May 20, 2014]: First Class on Wednesday May 21!
  7. All mails to the course instructors/TAs MUST have CSL100 as the subject.
  8. A lot of the reading material in this course will be available in PDF formats. To view PDF files you may download Adobe Acrobat Reader.

Class Mailing List

The class mailing list is csl100 [at] courses.iitd.ac.in. Any annoucements about the class will be made on this list. Make sure you are subscribed to it.



CSL100: Introduction to Computers and Programming is intended to provide students with basic undestanding of computers and hands on experience with programming. The course CSL100 addresses the following issues:

  1. Problem formulation in a precise and concise fashion and independent of language considerations.
  2. The design of an algorithm from the problem specification -- its correctness and analysis of its efficiency.
  3. The intermediate steps in the design of a program from an algorithm through a process of step-wise refinement. Language dependent considerations may be used in this process, but not elsewhere.
The course is intended to teach the students a systematic process of design - beginning with problem formulation from an informal specification, through convincing arguments to algorithms, the analysis of their correctness and efficiency, and finally arriving at programs through a process of step-wise refinement.

The language used for the programming component of the course will be Python.


There are no prerequisites for this course.


Primary references:

Other references:

  1. Python3 tutorial
  2. Python Programming: An Introduction to Computer Science by John Zelle. Includes a downloadable graphics package.
  3. Unix tutorial for beginners
  4. How to solve it by Computer by R. J. Dromey, Prentice-Hall India EEE Series.
  5. Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Sussman with Julie Sussman, MIT Press, 1985.

Material/Topics Covered in Class

  1. Investment in Fixed Deposit
  2. Trapezoidal rule to compute area of y = x^2
  3. Calculating PI using Ramanujam's summation
  4. Plotting an X given number of rows
  5. Calculating PI using Ramanujam's summation using a function for factorial
  6. Distance for viability of bullet train
  7. Binary Search
  8. Reversing a List
  9. June 9: Factorial (recursive)
  10. June 11: Fibonacci (recursive), Fibonacci (iterative), Binary Search (recursive)
  11. June 16: Bubble Sort
  12. June 18: Use of Break Statement, Merging Two Sorted Lists
  13. June 19: Partition Function (QuickSort)
  14. June 25: Sieve of Eratosthenes, Tower of Hanoi
  15. June 30: Use of Classes and File Reading/Writing
  16. July 2: Stock Span problem without using stack. Stock Span problem using a stack.
  17. July 3 and 7: Linked Lists
  18. Online Documentation Links: Classes in Python, File Reading/Writing


Assignment Submission Instructions

  • Name files as q1a.py, q1b.py, q2.py etc. corresponding to the question numbers they are solving.
  • Put all your files in a single directory.
  • Name the directory with your name and entry number e.g. chinmay_narayan_2009CSZ8188.
  • Tar the folder using the command: "tar -cvf chinmay_narayan_2009CSZ8188.tar chinmay_narayan_2009CSZ8188"
  • Go to the Moodle Page.
  • Login with your LDAP user name and password.
  • Go to the CSL100 homepage.
  • Go to the week in which assignment is due.
  • Click on the assignment link to submit.


Computer usage

  • The students of CSL100 are required to learn the usage of Linux, a Unix-like operating system. All the desktop machines to be used for this course have Linux installed on them. You can check out a Unix tutorial for beginners.
  • The native editor on any UNIX system is vi. It is imperative to learn how to use this editor. Download tutor.vi. Typing in the command ``vi tutor.vi'' at the UNIX prompt will take you through an interactive tutorial lesson on the usage of vi.
  • The UNIX operating system supports online man pages. For example, one can access the `vi' manual by typing in the command `man vi'. You can check for a concept using `man -k'. For example, you can check for Java using the command `man -k java'. Please use `man' liberally, and definitely before asking anything to the teaching assistants and system administrators, or risk a reply like ``read the fine manuals''.

Administrative Information and Grading Policy

Grading Policy:

Minor - 25%; Assignments - 35%; Major - 40%;

The riot act:

As per the Institute regulations, an ``A'' grade will be awarded only over 80% and no student with less than 30% will be given a passing grade.

An ``I'' grade will be awarded only in the case of an illness during the major exam. A make-up exam will be scheduled at the earliest, and the ``I'' grade will be converted as soon as possible. However, please do your best to ensure that you donot break a leg or otherwise fall ill during examinations. Repeat examinations are harder by tradition.

Other policies:

  • Attendance: The institute requires a mandatory 75% attendance for all students, which includes time lost due to illness. However this course will require 100% attendance. Be warned that it will be difficult to make up if you miss classes.
  • Illness: In sickness or ill-health, a Medical Certificate from the Institute Sick Bay, or a doctor from an Institute-recognised hospital is necessary, especially if you request for a make-up test. Only in the case of serious illnesses will I consider giving an extension on assignments.
  • Make-up Tests: Make-up tests (minor or major exams only) will be given only when the student furnishes a valid documentation of illness for a period including the day of the exam.
  • Late policy (for assignment submission): For the first late day, 20% of the marks will be deducted. For the second late day 40% marks will be deducted. You will get a 0 for any late submissions beyond that. In cases of illness, we may consider giving an extension, provided the student informs us as soon as possible.
  • Honor Code: Assignments must be carried out individually, unless otherwise stated explicitly by the instructors. You are free to discuss with others, but the code that you produce must be "your own". Cheating/Copying may result in a fail grade regardless of the performance.