Writing software code has always been fun and enjoyable to me. But as software programs become complex, there is a greater emphasis on the need for a robust design and architecture. A complex software like a spread sheet can be developed bottom up, by first building the basic components and then wiring them up, as we show in our java script based spread sheet application. An object oriented design can be used to develop a software application right from the requirements stage, like we show in our Library management system. When object oriented programming is not supported, for example, an application written in C, the modularity in the code becomes important in preventing defects. Following is the list of projects in this page,
Web Based Online Spread Sheet Application
This project was done at IIIT-B during Fall 2009 as part of the ‘Programming Application Software’ class under the guidance of Prof. Chopella.
The project aims to create an online spread sheet application where users can add / delete rows & columns, perform arithmetic operations, evaluate expressions, summations, etc. The users can save their work and retrieve it later. Developed using Java script, Ajax, Html, JSON and Yahoo User Interface (YUI) libraries. A key feature is the automatic updation of dependent cells and detection of cyclic dependencies using data dependency graphs. The user interface supports intuitive operations like right click to insert rows, double click to select cells, menus, etc. For data persistence, we use a java script based server like ‘Plain Old Webserver’ or ‘Browser Server’. The input to the cells of the spreadsheet accepts the following grammar,
Input Grammar (BNF)
Number :: = range(0-9)
Operators::=+, *, -, /,
Alpha ::= range(A-Z)|range(a-z)
Address :: = sequence(repeat1(Alpha),Number)
Expression ::= wsequence(“(”,Operators, Address|Number|Expression, Address|Number|Expression, “)”)
Keywords ::= “SUM”|”PROD”
Functions ::= wsequence(“(“,Keywords, Address, Address, “)”)
Formula ::= Number|Address|Expression|Functions
For example, an expression could be (+ 2 3), which evaluates to 5. It could also be a nested expression like (* 3 (+ 4 5)) which evaluates to 27. Cell addresses are specified as <col num><row name >, for example, A1 represents cell at column A and row 1. Hence an expression that uses cell address could be (+ A1 4).
Downloads: Source Code Implementation Details Screenshot Design Document
Click Here to access this app. [Note: Some of the features (save, open, auto save) have been disabled]
Following is a demo of this application.
Virtual File System with GTK based User Interface
This project was done at IIIT-B during Fall 2009 as part of the “Data Management” class under the guidance of Prof. Chandrashekhar Ramanathan.
The goal of this project is to build a virtual file system (VFS), which allows basic operations on files / directories like create, delete and search. The VFS is persisted in a file on the local drive which allows it to be easily transferrable. In our implementation, we use several data structures like n-ary tree to store the directory structure, binary search tree to perform efficient file search, hash tables to detect duplicate files and linked lists to maintain empty blocks. The VFS also supports trash functionality to delete and restore files. The major challenges involved persistence and synchronization of different data structures. The source code is written entirely in C and uses GTK libraries to implement a graphical user interface.
Downloads: Readme Source Code Makefile
Following is a demo of this application in action, please use the full screen view for a clearer picture.
Library Management System
This project was done at BITS, Pilani as part of a class on ‘Object Oriented Programming with Java’ during Fall 2005. The goal of this project is to use an object oriented approach to the design and implementation of a Library Management System. We start with the requirements document and perform a noun phrase analysis to identify the possible objects (or Classes). We then identify the use cases and derive the sequence diagrams for each of the use case. We identify the different states of the system and draw the corresponding state diagrams displaying the transition between the states.
Downloads: Readme Source Code Executable Binary Requirements Document Design Documents
Screenshots
Online Student Enquiry and Registration System
This work was done as part of a summer internship at Marshall's point, Chennai, India during may-july 2003. The project aims to develop an online student enquiry and registration system. It allows new users to make an enquiry on the classes offered, allows a registered student to register other classes and allows an administrator to view enquiries and modify classes. The server side scripting was done using ASP, client side validation using VB script and front end using HTML / DHTML. Microsoft Access was used as the backend database. Download: Source