|
CSL102: Introduction to Computer Science
This is the course page for CSL102: Introduction to Computer Science, for Semester I, 2012-2013, being taught by Subhashis Banerjee (suban AT cse.iitd.ac.in) at the Department of Computer Science and Engineering, IIT, New Delhi.
Notice
|
Miscellaneous
|
Overview
|
Prerequisites
|
References
|
Codes discussed in class and other utilities
|
Programming assignments
|
Tests
|
Computer usage
|
Administrative Information and Grading Policy
|
Roll and Grades
|
Attendance
General Information
Notice
- All mails to the course instructor MUST have CSL102 as the subject.
- Click here for downloading
the latest versions of SML for windows or Linux.
- Most of the reading material in this course will be available in
PDF formats. To view PDF files you may download Adobe Acrobat Reader.
- Course lecture notes are now available at Scoops.
- Minor I solutions now available.
- Minor II solutions now available.
- Notes on numerical computation now available.
- A short tutorial on object and classes in Python. Also see http://docs.python.org/2/tutorial/classes.html
- For those who have missed the major examination for a valid reason, the re-major examination will happen in the first week of January, 2013. Please submit medical certificates or other relevant documentation by Monday (26.11.2012).
- For those who have missed minor 2, there will be a re-minor on 26.11.2012 at 0900. Please report at 0855 in front of my office (Room 429, Bharti building) with medical certificates or other relevant documentation.
- Major solutions now available.
Miscellaneous
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:
- 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 languages used for functional
and imperative programming are Standard ML and Java, respectively.
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.
None.
Primary reference:
Other references:
- Click here for downloading
the latest versions of SML for windows or Linux.
- Unix tutorial for beginners
- SML Tutorial (pdf)
- SML Tutorials
- Python resources:
- http://www.greenteapress.com/thinkpython/thinkpython.pdf
- http://docs.python.org/tutorial/index.html
- http://mcsp.wartburg.edu/zelle/python/
- Java Tutorials
- Programming Principles in Java by Dave Schmidt , a draft of a forthcoming book with the kind permission of the author.
- Java Technology Home Page .
- Pascal Programming Manual by Nicholas Wirth.
Click here to access the programs developed
in the class and other miscelleneous utilities (like random number
package in ML).
-
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''.
-
The Java/ML/Scheme interpreters can be invoked by typing ``java/sml/scm'' at the
UNIX prompt. Please get in touch with the teaching assistants if these commands do not work.
-
To compile a Pascal program contained in a file, say `prog.p',
use the command ``pc prog.p -o prog''. This will create an executable
file called `prog' provided there are no compilation errors.
- Click here for downloading
the latest versions of SML for windows or Linux.
Grading Policy:
Minor I - 22.5%;
Minor II - 22.5%;
Major - 30%;
Programming assignments - 25%;
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:
Subhashis Banerjee / Dept. Computer Science and Engineering / IIT Delhi /
Hauz Khas/ New Delhi 110016 / suban@cse.iitd.ac.in
|