Department of Computer Science and Engineering, IIT Kanpur

CS210: Data Structures

Dr. R. K. Ghosh


Home | Notice Board | Instructor | TAs | Students | Assignments | Schedule | Lectures | Resources

Term Projects

Deadline for forming teams and submitting the topic of term project is 25 Sept, 2002
 
Term project is a substantial part of the CS210 course. Please do your best to select an idea for the term project and then put in your best effort to produce a good software based on the idea. A few guidelines are given below to let you understand what is expected from you in the term project.
 
Guidelines
  1. The term project is to be written in Java. You may develop a console application or a Graphical Application (with a GUI).
  2. The project should be approximately atleast 1500 lines of code per individual. For example, a three member team is expected to produce around 4500 lines of code.
  3. GUI code will be counted upto a maximum of 500 lines. This is because Java GUI code can be very large in terms of lines of code. For example, if you write a code of 1500 lines with 1000 lines of GUI and 500 lines of non-GUI code, it will be counted as 500 + 500 respectively. (So that in this case your total lines of code will be 1000 instead of 1500)
  4. The number of lines of code is not the only criteria for judging the work you do. Your project should do a substantial amount of work. What 'substantial' means is difficult to define. For that reason, you are supposed to discuss with the instructor, your project idea and what you plan to do. To get a better idea, refer to the list of suggested project ideas.
  5. You may have better ideas than what are listed below. Feel free to discuss your ideas with the instructor.
  6. Important: When you pick up and finalize an idea, you are required to obtain instructor's consent before starting to work on it as a term project.
  7. You are not supposed to use external utilities or source code, unless required by the definition of problem. For example, you cannot do without regular utility programs that represent the shell command while designing a java shell command interpreter(See below). But in case of other programs which, say, generate output in the form of PostScript or LaTeX file, are supposed to do so on their own, without any use whatsoever of external utilities and/or code.
Project Ideas
The project ideas are divided into some categories as follows.
 
Text/Printing Utilities, Editors
An HTML editor (2 persons)
This can be either (almost) WYSIWYG editor. Better alternative would be an editor which will help write HTML documents by maintaining and displaying the document as a tree structure.
Word Processor (2 persons)
WYSIWYG Word processor with document formatting, printing and utilities such as spell check.
Vector drawing package (2 persons)
Like xfig. Drawing of points, lines, arrows, curves and shapes like boxes, circles, etc. Mainly for producing drawings for illustration purpose. Refer to xfig for more details. Output in ps format or jpeg, gif or bmp format.
Pretty Source Code Printing (2 persons)
Utility to format program code (C or Java) and print it to make it more readable. Can produce a PostScript file or a LaTeX file to facilitate printing on a laser printer.
 
Games
Billiards/golf game package (2 or 3 persons)
Implement a Billards/Golf game to be played by two players.
Playing card game package (2 persons)
Package of 2 or more playing card games like solitaire, freecell, etc. Mostly single player games.
Computer versus Human board games (2 or 3 persons)
Implement a game like Connect-4 (Plot-4) or Othello (Reversi) for two players. The game should be playable as computer versus human. The computer should play reasonably well against a human opponent and possibly try to win.
 
Simulators, Demos and Tutorials
Simulator for Turing Machine (1 person)
Given the specifications of the Turing Machine (input tape, transition table, etc), simulate the Turing Machine and show it graphically. Slow trace of the steps can be shown with a delay at each step. The specifications can be entered interactively or through GUI.
A demonstration package for network flow algorithms (1 or 2 persons)
A demonstration package for B-Trees (1 or 2 persons)
Animation based Vedic mathematics tutorial (1 or 2 persons)
 
Interpreters, Translators, Converters
jsh: A Java based shell command interpreter (1 or 2 persons)
Shell command interpreter. Should be able to pipe, redirect output, etc. Background execution of commands. Shell programming support like environment variables, loops, etc.
A Lisp/BASIC language interpreter (3 persons)
Command-line and file based Interpreter for Lisp or BASIC or a similar language. Complete language is expected to be implemented.
HTML to LaTeX converter (1 or 2 persons)
Parsing HTML document, translating the structure to appropriate LaTeX document.
LaTeX to HTML converter (1 or 2 persons)
Parsing LaTeX document, translating to appropriate tags in HTML.
Turing program generator for FSM (1 person)
Graphical editor for Finite State Machine. Conversion of the FSM entered by user to a turing machine. Can be collaborated with the Turing Machine simulator project for running the Turing Machine that is generated.
 
Utility Software
Midnight Commander like utility software (1 or 2 persons)
Utility using two file tree panes to transfer files to and fro between the panes. Usual file operations like create, delete, rename, move, copy, open etc should be provided. Advanced features like comparison of directories, synchronization of directories, support for ftp folders, etc. may be provided.
File Explorer (like Microsoft Windows® Explorer) (2 persons)
Develop a file explorer similar to Windows Explorer. Icons represent files. User can click/double-click to access files. Can delete, rename, or open files. Associate the files with applications based on the filename and extensions. Allow user-defined file associations. Shortcuts to files and folders and applications would be nice.
A mail management and interface package (2 persons)
Support for IMAP/POP. Viewing, forwarding, replying to mails. Attachments sending, viewing and saving facility. Address books and other general facilities.
 
Other
Search engine for geometric objects/patterns (2 or 3 persons)
Build a search engine for searching a database of simple shapes and/or simple patterns. The search engine should be able to search, for example, a particular shape in a combination of shapes. Develop a way to store shapes in a database and then implement methods to search shapes in that database.
Compressed trie based search engine (2 persons)
Trie is a data structure that provides prefix searches which finds applications in automatic word completion in word processors, command completion in user shell, URL completion in browsers, etc. The project is to build a search engine to search a trie for some data.
A small database package (3 persons)
Database with query/update commands. Subset of SQL commands can be implemented. A GUI for editing and querying the database can also be implemented in addition.
A graph plot package (2 persons)
Command-line based plotting like GNUPlot and/or GUI based plotting. Single function, multiple function, options for colors and output formats like gif, jpeg, ps, etc.
A package for writing parallel algorithms (2 persons)
Parallel algorithms editor GUI. Execution of the parallel algorithm entered by the user. User should be able to watch the program execution.
Java frontend for MySQL or PostgreSQL engine (1 person)
Form based GUI frontend to database like MySQL or PostgreSQL. Creation, updation, deletion of tables and records.



Home | Notice Board | Instructor | TAs | Students | Assignments | Schedule | Lectures | Resources
Page last updated 24 Sept, 2002