CSL102: Introduction to Computer Science

This is the course page for CSL102: Introduction to Computer Science, for Semester II, 2011-2012, 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 |

General Information

Class Room: Block VI, LT 2

Class Timings:
  • Monday, 8:00am - 9:20am
  • Thursday, 8:00am - 9:20am


Teaching Assistants


  1. [Apr 30, 2012]: New! Solutions to all the Assignments (except 6) are now posted online.
  2. [Apr 22, 2012]: Assignment 6 updated with pointers to graphics references.
  3. [Apr 16, 2012]: Assignment 6 is Out!. Due Date: Monday April 30, 11:50 pm.
  4. [Apr 1, 2012]: Assignment 5 is Out!. Due Date: Sunday April 15, 11:50 pm.
  5. [Mar 10, 2012]: Assignment 4 (Part B) is Out!. Due Date: Tuesday Mar 20, 11:50 pm.
  6. [Mar 1, 2012]: New due date for Assignment 4 (Part A) is Monday March 12, 11:50 pm.
  7. [Feb 29, 2012]: Assignment 4 (Part A) is Out!. This assignment will have another part coming up. The whole assignment is due on Sunday March 11, 11:50 pm.
  8. [Feb 10, 2012]: Assignment 3 is Out!. Due Date: Sunday February 26, 11:50 pm.
  9. Solutions to the First Two Assignments are now posted online.
  10. Practice Questions for Minor 1 are now posted online.
  11. Assignment 2 is Out!. Due Date: Wednesday February 1, 11:55 pm.
  12. Assignment 1 is Out!. Due date is now Tuesday January 24, 11:55 pm.
  13. All mails to the course instructors/TAs MUST have CSL102 as the subject.
  14. Most 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 csl102 [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.

CSL102: Introduction to Computer Science is intended for First Year B. Tech. students with some prior elementary background in programming. It has a (baby) sister course called CSL101: Introduction to Computers and Programming which is intended for the absolutely uninitiated. One of CS101 or CSL102 is compulsory for all entry level B. Tech. students at IITD. The course CSL102 addresses on 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 emphasis throughout the course is in the analysis required while designing correct and efficient algorithms. The course is intended to teach a student 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, and the basics of programming using higher-order functions. The second part of the course introduces data-directed programming. It emphasizes on programming with records, lists, trees, arrays and developing abstract data types.

The third part of the course addresses the issues in design and analysis of simple algorithms. Examples are taken from Divide and conquer, Backtracking, Numerical algorithms, Randomized algorithms and Geometric algorithms.

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


Elementary knowledge of programming. Typically this course is recommended for students with Computer Science as a subject in High School.


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 Covered in Class



Assignment Submission Instructions

  • Put all your files in a directory.
  • Name the directory with your name and entry number e.g. nisha_jain_2009CSZ893.
  • Tar the folder using the command: "tar -cvf nisha_jain_2009CSZ893.tar nisha_jain_2009CSZ893"
  • Go to the Moodle Page.
  • Login with your LDAP user name and password.
  • Go to the CSL102 homepage.
  • Go to the week in which assignment is due.
  • Click on the assignment link to submit.
  • NOTE:Once you send your assignment for marking, the system will not allow you to change the submission.


Computer usage

  • The students of CSL102 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: Normally, We will not consider any assignments turned in late. 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.