CSL101: Introduction to Computers and Programming

This is the course page for CSL101: Introduction to Computers and Programming, for Semester II, 2012-2013, being taught by Huzur Saran (saran 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 |

Display of Major Answer Scipts: Click here for details

General Information

TimingsClass Room Instructor Practicals
Section 1 (Morning): Mon, Thu: 8:00am - 9:20 am VI LT 1Parag Singla Groupwise Schedule
Section II (Afternoon): Mon, Thu: 2:00 pm - 3:20 pm IV LT 3Huzur Saran Groupwise Schedule

Teaching Assistants


  1. [Apr 15, 2013]: New! Assignment 6 is Out!. Due date: Tuesday Apr 30, 11:55 pm.
  2. [Apr 2, 2013]: Assignment 5 is Out!. Due date: Monday Apr 15, 11:55 pm.
  3. [Feb 11, 2013]: Assignment 4 is Out!. Due date: Saturday Mar 2, 11:55 pm.
  4. Quiz 1 on Monday Jan 28. 7:00 pm : 7:30 pm. Venue: V LT 1 (morning class), IV LT 3 (afternoon class)
  5. Practice Questions have now been posted for quiz 1 and minor 1.
  6. Assignment 3 is Out!. Due date: Friday February 1, 11:55 pm.
  7. Assignment 2 is Out!. Due date: Wednesday January 30, 11:55 pm.
  8. [Jan 11, 2013]: Assignment submission link has been updated. Note that we will be using Sakai (as opposed to moodle) as our course management system.
  9. [Jan 6, 2013]: Assignment 1 is Out!. Due date: Sunday January 13, 11:55 pm.
  10. All mails to the course instructors/TAs MUST have CSL101 as the subject.
  11. 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 csl101 [at] courses.iitd.ac.in. Any annoucements about the class will be made on this list. Make sure you are subscribed to it.



Click here to see what the Courses of Study booklet has to say.

CSL101: Introduction to Computers and Programming is intended to provide students with basic undestanding of computers and hands on experience with programming. It has a sister course called CSL102: Introduction to Computer Science which is a slightly advanced version of CSL101. The course CSL101 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 first part of the course introduces the basics of the functional and imperative models of computation, recursive and iterative processes. The second part of the course introduces data-directed programming. It emphasizes on programming with strings, lists, arrays and few additional advanced data types.

The third part of the course addresses the issues in design and analysis of simple algorithms. Examples are taken from simple iterative algorithms, divide and conquer, dynamic programming and randomized algorithms.

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. Python 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. Introduction. Basics of Sets, Functions, Relations. PMI
  2. Basic Constructs in Python
    • Syntax, Basic Data Types
  3. Functional Model of Computation
    • Writing Basic Functions, Combining Functions
    • Inductively Defined (Recursive) Fuctions
  4. Proving Correctness Using PMI
  5. Time Complexity and Order Notation
  6. Examples of Recursive Problems
    • Factorial, Fibonacci, Fast Power, GCD etc.
  7. Tail Recursion
  8. Lists and Strings
  9. Imperative Model
    • For/While Constructs
  10. Invariants for Proving Correctness
  11. Examples of Imperative Programs
    • Reversing a list, Finding Min/Max, Searching etc.
  12. Binary Search, Selection Sort/Bubble Sort
  13. Primality Testing
  14. Gauss Jordan Elimination: Slides Program
  15. More Examples
    • Partitioning a list, Palindrome Checking
    • Calculating Value of Pi, Removing Duplicates in a list etc.
  16. Quicksort, MergeSort, Insertion Sort
  17. File Input/Output
  18. Hashing
    • Signficance, Basics
    • Avoiding Collision
  19. Object Oriented Programming Slides Documentation
  20. Implementing Linked Lists
  21. Graphics (Not a part of the syllabus for the major)



Assignment Submission Instructions

  • Put all your files in a 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 Sakai Page.
  • Login with your LDAP user name and password.
  • Go to the CSL101 homepage.
  • Go to the week in which assignment is due.
  • Click on the assignment link to submit.


Computer usage

  • The students of CSL101 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 I - 15%; Minor II - 15%; Major - 35%; Quizzes (2) - 8%; Programming Assignments - 27%;

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.