COL100: Introduction to Computer Science

Semester I, 2020-21

Course Description

COL100: Introduction to Computer Science is intended for all first-year B.Tech. students, whether or not they have prior experience with programming. The course 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. A programming language bias is avoided and programs are developed in both imperative and functional styles.

The first half of the course introduces the functional model of computation, designing recursive and iterative processes, and programming with lists. The programming language used is Standard ML. The second half of the course introduces the basics of the imperative model of computation using the Python programming language. It further emphasizes data-directed programming with abstract data types and object-oriented programming.

References:

The primary reference for the course is the Introduction to Computing notes by Prof. Subhashis Banerjee and Prof. S. Arun-Kumar.

Other references:

Course Format

The course will be conducted in a “flipped classroom” format. Lectures will be provided as pre-recorded videos, posted in advance on Impartus (which is accessible via the course Moodle page).

The class hours (Monday & Thursday, 9:30–11:00 AM) will be used for interactive Q&A sessions with the instructors. These sessions will be conducted on Microsoft Teams with the help of additional instructors from the CSE faculty. We will briefly review the previous lectures, demonstrate example problems, and clear students’ doubts. Students are expected to have watched the lecture videos beforehand, and bring their questions related to the material.

The lab hours (Monday-Friday, 1:00–3:00 PM) will be used for programming practice. These will be conducted on Microsoft Teams and led by the TAs. Students are encouraged to take the help of the TAs whenever they have doubts or are not sure how to make progress.

Contact Us

There are two preferred modes of approaching the course staff: Piazza and email. We will follow up on your Piazza forum note or email message, and may schedule a meeting with you to resolve the issue.

Piazza: Please register yourself on this course’s Piazza forum using the access code circulated on the mailing list. Here you can ask questions to the staff as well as discuss the course material with other students. You can also post anonymously to the whole class, or send a message privately to only the course staff. Please make your post public (anonymously if you wish) unless your question is specific only to you or contains private information. This way other students who may have a similar doubt can also benefit from the answer.

Email: If for some reason you are unable to access Piazza, you can also send email to col100staff@cse.iitd.ac.in. Note that emails must be sent from your IITD email, otherwise they will bounce. Please avoid sending emails directly to the personal IDs of the instructors or TAs except in exceptional circumstances. All instructors and TAs are a part of the col100staff@cse email group and will receive all emails that you send to it. Before you email, please see the nice set of guidelines on email etiquette by Prof. Amitabha Bagchi: Guidelines for emailing a professor or TA.

Honour Code

  1. All students are expected to follow the highest ethical standards.

  2. Collaborations and verbal discussions about the course material and assignments are encouraged. For each assignment, the names of all others you collaborated with or took help from must be declared in your submission.

  3. However, you are required to write up all assignment solutions entirely on your own, except where group work is explicitly authorized. This means you must not take others’ code, solutions, or other work, nor show, give, or otherwise allow others to see your solutions.

  4. You are welcome to refer to books, papers, and internet resources. However, the source must be clearly cited if any part of the solution (or even an idea) is taken from such a source. Also, you must not directly copy-and-paste solutions from such sources into your assignment solutions.

  5. Allowing your work to be available or visible to other students, whether deliberately or by negligence, is academic misconduct and will invite the same penalty as copying from another student.

Evaluation

Grading breakdown (subject to change):

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 do not break a leg or otherwise fall ill during examinations. Repeat examinations are harder by tradition.

Audit criteria: Earning marks equivalent to a B grade or better is required for audit pass.

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: TBA