|
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
|
General Information
| Timings | Class Room |
Instructor |
Practicals |
Section 1 (Morning): | Mon, Thu: 8:00am - 9:20 am |
VI LT 1 | Parag Singla |
Groupwise Schedule |
Section II (Afternoon): | Mon, Thu: 2:00 pm - 3:20 pm |
IV LT 3 | Huzur Saran |
Groupwise Schedule |
Teaching Assistants
Notice
- [Apr 15, 2013]: New!
Assignment 6 is Out!. Due date: Tuesday Apr 30, 11:55 pm.
- [Apr 2, 2013]: Assignment 5 is Out!. Due date:
Monday Apr 15, 11:55 pm.
- [Feb 11, 2013]: Assignment 4 is Out!. Due date: Saturday Mar
2, 11:55 pm.
- Quiz 1 on Monday Jan 28. 7:00 pm : 7:30 pm. Venue: V LT 1 (morning class), IV LT 3 (afternoon class)
- Practice Questions have now been posted for quiz 1 and minor 1.
- Assignment 3 is Out!. Due date: Friday February 1, 11:55 pm.
- Assignment 2 is Out!. Due date: Wednesday January 30, 11:55 pm.
- [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.
- [Jan 6, 2013]:
Assignment 1 is Out!. Due date: Sunday January 13, 11:55 pm.
- All mails to the course instructors/TAs MUST have CSL101 as the subject.
- 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.
Miscellaneous
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:
- 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 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:
- Python tutorial
- Python Programming: An Introduction to Computer Science
by John Zelle. Includes a downloadable graphics package.
- Unix tutorial for beginners
- How to solve it by Computer by R. J. Dromey, Prentice-Hall India EEE Series.
- Structure and Interpretation of Computer Programs by
Harold Abelson and Gerald Sussman with Julie Sussman, MIT Press, 1985.
-
Introduction. Basics of Sets, Functions, Relations. PMI
- Basic Constructs in Python
- Functional Model of Computation
- Writing Basic Functions, Combining Functions
- Inductively Defined (Recursive) Fuctions
- Proving Correctness Using PMI
- Time Complexity and Order Notation
- Examples of Recursive Problems
- Factorial, Fibonacci, Fast Power, GCD etc.
- Tail Recursion
-
Lists and Strings
- Imperative Model
- Invariants for Proving Correctness
- Examples of Imperative Programs
- Reversing a list, Finding Min/Max, Searching etc.
- Binary Search, Selection Sort/Bubble Sort
- Primality Testing
- Gauss Jordan Elimination:
Slides
Program
- More Examples
- Partitioning a list, Palindrome Checking
- Calculating Value of Pi, Removing Duplicates in a list etc.
- Quicksort, MergeSort, Insertion Sort
-
File Input/Output
- Hashing
- Signficance, Basics
- Avoiding Collision
-
Object Oriented Programming
Slides
Documentation
- Implementing Linked Lists
- Graphics (Not a part of the syllabus for the major)
Solutions
- 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.
-
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''.
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.
|