General Information
Co-Instructor: Subodh Sharma (email: svs at cse.iitd.ac.in)
Semester: I, 2022-2023
Timings: Mon/Thur 16:30-18:00
Class Venue: LH 121 (Group 11-20)
Lab Venue: LH 502-505
Notice
- All mails to the course instructor MUST have COL100 as the subject.
- Most of the reading material in this course will be available in PDF formats. To view PDF files you may download Adobe Acrobat Reader.
Honour Code
- All students are expected to follow the highest ethical standards.
- Collaborations and discussions are encouraged. However, all students are required to write up all solutions entirely on their own. Any collaboration, or help taken, must be declared.
- Students are encouraged to refer to books, papers and internet resources. They may even consult other individuals. However, the source must be clearly cited if any part of the solution (or even an idea) is taken from such a source.
- Failure to declare any help taken will be interpreted as academic misconduct. Any breach of academic integrity will result in strict disciplinary action with a referral to the Institute Disciplinary committee.
Course Overview
Click here to see what the Courses of Study booklet has to say.
COL100: Introduction to Computer Science is intended for First Year B. Tech. students. The course COL100 addresses on the following issues:
- Problem formulation in a precise and concise fashion and independent of language considerations.
- The design of an algorithm from the problem specification – its correctness and analysis of its efficiency.
- 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 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 programming language used for functional and imperative programming is Python.
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.
References
The primary references is going to be the
Lecture Notes on Introduction to Computing .
Other References
-
Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Sussman with Julie Sussman, MIT Press, 1985.
-
How to solve it by Computer by R. J. Dromey, Prentice-Hall India EEE Series.
-
Python resources:
- http://www.greenteapress.com/thinkpython/thinkpython.pdf
- http://docs.python.org/tutorial/index.html
- http://mcsp.wartburg.edu/zelle/python/
- https://jobtensor.com/Python-Introduction
Frequently Asked Questions
COL100 Frequently asked questions (available locally within IITD).
Administrative Information and Grading Policy
Grading Policy:
- Midterm - 25%
- Major (will include the entire syllabus) - 40%
- Labs - 15% (You can miss 2 out of n labs)
- Quiz - 5%
- Lab Test - 15% (Two lab test of 7 and 8 marks, respectively)
Note that one will have to score a minimum of 10 in the Major, MidTerm evaluations and Labs (Lab + Lab Test) to pass the course. Grading will be on the basis of absolute marks.
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. Please inform the instructor if for any reason you cannot attend a class. 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, I will not consider any assignments turned in late. In cases of illness I may consider giving an extension, provided the student informs me as soon as possible.
Class notes and Programs developed in the class
Week | Monday | Thursday | Supplementary Reading | Programs in class |
---|---|---|---|---|
1 | Oct 31 L1:Introduction |
Nov 3 L2:Basics of Programming |
Read Chapter 1,2 of the Lecture Notes and solve Chapter 2 exercise questions 1,2,6,9 | |
2 | Nov 7 L3:Evaluation of Recursive Functions, Time Complexity Analysis, Examples |
Nov 10 L4: Tail recursion, Invariants, examples |
Read Chapter 3 of the Lecture Notes and solve all back of the chapter problems | |
3 | Nov 14 L5:Scoping rules, More on recursion, |
Nov 17 L6: Higher Order Functions |
Read Chapter 5.2 of the Lecture Notes and solve all back of the chapter problems | |
4 | Nov 21 L7:More on Higher order functions, Imperative programming -- data storage stuctures: tuples and lists |
Nov 24 L8: More on lists -- Application of Higher order functions (Maps, filters and Fold functions), Dictionaries |
Read Chapter sections 4.1, 6.1, 6.2, 7.1, 7.2 and 7.3 of the Lecture Notes and solve all back of the chapter problems |