CS699 : Software Laboratory 2001-2002
Welcome to the course homepage. Your course instructor is Uday Khedker and TA's are
Manish Bhide and
Tanmay Pradhan.
-
This course is going to concentrate on some tools of programming and some good
practices of programming. It will be centered around the Linux/Unix programming
environment.
I need to gather some information about your
background. (This link is likely to be available during office hours only.)
-
We will communicate through this page, through email, in person in the class and /or
laboratory. This being a lab course, there will be very few lectures; most of the
learning will have to be self learning, though I will engage introductory lectures for
topics which are totally unfamiliar to you.
-
This page will be updated from time to time. Assignments will be announced through
this page (submission too will possibly be through this page).
-
You will find the latest
announcements highlighted in this colour.
Please ensure that your browser does not hide the back ground colour of this
statement.
A weighted summary of marks obtained is
available.
The grades for this course are out.
Announcements
Suggested reading material
There are several documents and tutorials available on the internet. You could
begin with the ones available locally.
There are some books that I have found very useful. I will keep adding names
to the following list from time to time.
-
The Unix Programming Environment. Brian W. Kernighan and Rob Pike.
Prentice Hall of India Pvt. Ltd. (1984)
Even though this is a very old book, it remains probably the best
tutorial introduction to harness the power of unix.
It describes the preliminary unix commands; the file system; shell
programming; the filters like sed, grep, awk; program development tools
like lex, yacc, make; as also some system calls.
However, this book is not a substitute for the manuals.
-
SAMS Teach Yourself Perl in 21 Days. Laura Lemay.
Indian edition by Techmedia (1999)
The market is replete with books on Perl. The O'Reily books are
considered good introductory books but I found this book to be
better than the O'Reilly book ("Programming Perl"). I have used both the
books but I feel I learnt
more and faster from this book.
There is a lot of online documentation on perl.
You can try www.perl.org for authentic documentation.
Some documentation is available
locally too.
- Little Quilt Definition :
Programming Languages: Concepts and Constructs. Ravi Sethi. Addison-Wesley,
1996. For
those within IITB, a (reasonably legible make do) version of the relevant pages is
available here.
- Lex and Yacc
- General programming principles (Systematic program development, interfaces,
debugging, testing, portability etc.)
Lecture Schedule
- Introductory lecture at 3:00 on Friday, 27 July 2001.
Venue : Seminar Hall (If it is not free, we'll find some other place.)
This is what we covered in the lecture.
-
Lecture on shell programming at 3:00 on Friday, 3 August 2001.
Here are the programs used in the lecture.
-
Lecture on Make, RCS, and LaTeX on Monday (20 August) at 2:00.
This was followed by another lecture on Tuesday (21 August) at 5:30.
The sample files created during the lecture are available.
- Lecture on Perl on Friday 24 August at 3:00. If required, a followup lecture
will be held on Saturday.
Perl program and the data files used in the lecture are available.
- Lecture on Lex & Yacc was held on Friday (12 October, 2001) at 5:30.
The programs used in the lecture can be downloaded.
- A lecture on systematic program developement will be held on Saturday (13 October,
2001) at 4:30.
The example programs that will be used for the lecture are available.
Measuring the workload
It has been been brought to our notice that many of you are spending too much time
on the assignment. We are trying the correct the process that you follow by
holding separate lecture and laying out the desirable process.
However, this will not solve the problem completely. The complete solution lies
in identifying very objectively, the amount of time that you actually spend. Once
you have that hard data in front of you, it will be much easier for you to
find out the time-hogging activities and plan your work appropriately.
If you can cultivate this habit (particularly in the context
of proramming, where it is very easy to spend a lot of time
without realising it) it will be extremely useful for you in future.
- Accordingly, it has been decided that all of you will log your
time in a time record log on a daily basis and submit the same
to me before lunch time twice in a week on every Monday and Thursday
through you CR.
- The CR should sort these sheets according to the roll number and
hand them over to me.
- The forms will be available in the office beginning Monday late afternoon.
You should collect a form the office as and when required.
-
A soft copy of the form has been made available
for you to go through it. Please do not print it; please use the
duplicated forms available in the office.
-
A sample copy of a filled up form is also available.
Assignments
- Design your homepage.
It should include
- more than one html file,
- an externally linked CSS style specification,
(Font size changes using CSS only)
- an absolute and a relative hyperlink,
- a few images
- numbered, unordered, and description lists,
- table with header, footer, and caption,
- navigation bar included using PHP into each page,
It should be possible to change color and font of section headers as
well as the color of the navigation bar by changing just one line in
the style file.
Use of netscape composer is strictly prohibited.
Submission Deadline : Friday, 3 August 2001.
Mode of Submission : Please follow the following steps :
- Combine the multiple files into a single file by using the command "shar".
For more details see the man page by giving the command "man shar".
- Mail this single file to "CS699@chandra".
- Keep all your files in the directory "public_html" in your home
directory.
Marks for this assignment are out.
-
Shell Programming
Write an interactive spell checker by
- using the program ``spell'' (see ``man spell'')
- collecting the mis-spelt words in a temporary file
- searching each mis-spelt word in the source
- showing the context
- show the preceding as well the following line apart from the current line
- put the mis-spelt word in a pair of * *
- asking the user for the correct spelling
- inserting the correct spelling in the document
This spell checker
- should work on multiple files
- should echo the usage
- should indicate errors
- if an input file can't be read
- if the corrections can't be written onto the file
- if an input file is empty
Submission Deadline : Friday, 17 August 2001.
Mode of Submission : Mail your program file to "CS699@chandra".
Marks for this assignment are out.
- LaTeX
Write a short synopsis of your B.Tech./B.E. project report in LaTeX.
The document should have the following features -
- Bibliography (Created using BibTeX)
- Footnote(s)
- Sidenote(s) (should be highlighted in different color)
- Should have 2/3 figures placed side-by-side on a single page.
- Colored graphs/figures
- Tables
- Formulae
The assignment may carry credit on the complexity of the table and the
formula used.
A sample ps file has been made available.
Use of a Makefile (with RCS commands) for creating the postscript
file is compulsory.
Submission Deadline : Monday, 27 August 2001.
Mode of Submission :
Combine all the source (including the makefile) into a single file by
using the command "shar". Mail the file to "CS699@chandra".
Submissions without a Makefile (with RCS commands) will receive negative credit.
Marks for this assignment are out.
- Perl
The GNOME address book does not have a facility to print the data in the
address book. Write a Perl program to read the GNOME address book and generate
a LaTeX file, convert it to a postscript file, and display the address book
using "gv" or "ghostview".
Your program should allow the user to
- specify the
fields that should be included in the generated file.
- specify a field which would be used as the key for sorting the
entries. Name should be used as the default.
Submission Deadline : Monday, 10 Sept. 2001.
Mode of Submission :
Mail the program to "CS699@chandra".
- BibTeX server and client for publication reference sharing
- Stage I : Server part
- The server should accept BibTeX files and generate HTML file.
- The HTML file should have entries sorted by author, year of
publication, publisher.
- Stage II : Client part
Generate a form that accepts
- Queries on this database on the server side. The queries can be
of the type ``Show me all the papers by author XYZ'', or
``Give me all the BibTeX entries of author XYZ''.
The result of the query should be an HTML file that shows the
references or the corresponding entries of the BibTeX file.
- New data to be integrated the into its repository such
that they are no duplicate entries.
Sample BibTeX files are available.
Use perl for your implementation.
Submission Deadline for Stage I : Friday 28 September 2001.
Submission Deadline for Stage II : Friday 5 October 2001.
Mode of Submission : Mail your program file to "CS699@chandra".
- An interpreter for Little Quilt.
Little Quilt is a very small language for designing quilts. It is based on
ML syntax. The language definition can be found in the book Programming
Languages: Concepts and Constructs. Ravi Sethi. Addison-Wesley, 1996. For
those within IITB, a (reasonably legible make do) version of the relevant pages is
available here. Please do not try to print the pages. If you need a
hard copy, take one from me and make as many xeroxes as you like.
(An Indian edition of the book is available locally and is strongly recommended
if you are interested in understanding different programming paradigms.)
A reference implementation of the little quilt
interpreter and some examples of
little quilt programs are also available. The binaries have been
created for execution on x86 based linux platforms. You are advised to execute
the programs on athira.cse.iitb.ac.in. The interpreter generates postscript files
which can be seen using gv (or ghostview).
The overall work has been divided in four phases.
- Validating little quilt programs syntactically.
- In this phase you design a scanner and a parser for little quilt
using lex and yacc (or
flex and bison).
- Submission Deadline : Wednesday 17 October 2001.
- Mode of Submission : Mail a shar file (containing the makefile,
lex, and yacc scripts) to "CS699@chandra".
If you want a lecture on lex and yacc to be held,
please find out a free slot and the availability of Seminar Hall and
let me know.
- Generating the expression tree for a little quilt program.
- The generated expression tree should consist of the operations
turn and sew, and the constants a and b
only.
- For simplicity, fun declaration has been excluded from this
phase. However, you have to implement the val declaration
(which can be viewed as constant function or parameterless function.)
- You should have a print routine which would output the textual
version of the expression. It should be possible to disable the
generation of this output by merely recompiling the source
without modifying it.
- Submission Deadline : Wednesday 31 October 2001.
- Mode of Submission : Mail a shar file (containing the makefile,
lex & yacc scripts, and c/c++ source files) to "CS699@chandra".
- Evaluating the expression tree and generating a matrix representing the quilt.
Each element in the matrix corresponds to a cell in the quilt with
appropriate orientation. The
exact format of the matrix can be seen using the reference implementation.
- Submission Deadline : Saturday 10 November 2001.
- Mode of Submission : Mail a shar file (containing the makefile,
lex & yacc scripts, and c/c++ source files) to "CS699@chandra".
- Including the fun declarations in the interpreter.
- Submission Deadline : Monday 3 December 2001.
- Mode of Submission : Mail a shar file (containing the makefile,
lex & yacc scripts, and c/c++ source files) to "CS699@chandra".
The definition of little quilt allows let declarations within the body
of the function (i.e. the right hand side of fun declarations).
Examples qbonus1 and  qbonus2 use the let declaration
in such a way.
Implementing this feature is not mandatory; however implementing it (subject to
other features working correctly) will fetch you bonus marks.
Back to top of the page
Back to main page
Last updated on 12 October 2001.