Résumé:

 

 


Projects:

 

EZRequisition 2.0 -- powered by Visual Studio .NET
Graduate Student Management System -- powered by
Software Quality Toolkit (Defect Tracking) --Swing, Java RMI, and JDBC
Bookone: On-line Bookstore  -- JDBC, Java Servlets, JavaScript, CSS, and DHTML
C++/C Projects
Simulation on heat flow through a sample of liquid helium -- Fortran 90, C, and MPI
Miscellaneous -- Standard ML, Squeak Smalltalk, Prolog

 


 

EZRequistion: an electronic requisition system

 

Powered by Microsoft Visual Studio .NET, this project was a migration of standalone windows application written in Visual Basic 6.0 to Web-based application using .NET technologies.

Key techniques: ASP.NET, VB.NET/C#.NET, ADO.NET, Crystal Reports, and SQL Server 2000.

Sample run (user: rvb; password: rvb) Source code documenation

 

 

Database: Graduate Student Management System (GMS)

 

Powered by Oracle8i Enterprise Edition Release 8.1.6.1.0 and JServer Release 8.1.6.0.0,

the system was designed to help the people (students, faculty, and department administrator) involved in the Computer Science Department to systematically organize their activities.  Through the system: students can check their class schedule, grades, view professor's research activities (if he/she needs research assistants, for instance), and particularly, get warning messages about the important paperwork which needs to be submitted once they are ready to graduate; faculty can view the students' information, publish recruiting announcements, and check and modify his/her teaching schedule; and department administrator can be far more easily than ever to administrate the department's activities (adding/removing classes offered, managing people's information, and recruiting new faculty and students and so on.)

Key techniques: entity-relationship (E/R) diagram; conversion of E/R design to relations; creation of SQL schema; web-based interaction with the database, including selection, deletion, and updates; PL/SQL packages; and stored procedures.

More details can be found here (in PDF)

 

 

Tool: Software Quality Toolkit - A Defect Tracking System (Webpage)

 

Powered by Java and MySQL, the Software Quality Toolkit provides users at all ends of the software spectrum the ability to report and track the quality of any software project. For the user of the software, the toolkit provides the ability to report software defects to the software developer from their desktop. The software tester has the ability to report detailed software problems to the developers. Management can use the toolkit to track software defects and compile statistics. For the software developers, the toolkit provides a tool to track and maintain software defects, centralizing the defect – reporting process.

Key techniques: 3-tier Architecture, Java Swing, RMI, JDBC, MySQL

 

 

On-line Bookstore: Bookone

 

Powered by Apache Web Server, Tomcat 3.1, and MySQL, this project was designed to implement an on-line web store in the CS class of Web Technologies and E-Commerce.  Some popular features of B2C, such as search, personalization, and persistent catalogs, were successfully carried out.

Key techniques: HTML, JavaScript, Java Servlets, JDBC, and MySQL.

Source code:  bookone.tar.gz     User Guide in PDF

 

 

C++/C Projects:

 

The Game:

"Triangle of Zinthar" is a 'Long Fun' game designed and built based on a common infrastructure called TheGame('TG'). TG is a simple client-server internet infrastructure for grid-based multiplayer games, supporting run and shoot styles of play as well as exploration and logical puzzles style. TG contains a server program called 'tgs' and a human-interface client program called 'tgc'. The server 'tgs' accepts network connections and performs all the mechanics of running TG play; the client 'tgc' connects to some TG server through the network, and performs all the mechanics interacting with a human player, rendering game messages as they are received, and interpreting the human's commands as messages to send up to the server for execution. The communications between 'tgs' and 'tgc' are based on a protocol called 'The Game Wire Protocol' ('TGWP'). Our system is using the latest version of TGWP, TGWP2.

Source code & spec:  Nicer Doxygen view   Download

Huegene:

A software to conduct the artificial life research: individual efficiency and ecological stability. It involves tracing the lives of simple simulated creatures called Pops and Mibs as they live and die and evolve over time on a two-dimensional grid of 'location.' A Model-View-Controller architecture is utilized in the implementation of HueGene.

Source code & spec:  Nicer Doxygen view   Download

NGRAM, a markov chain text generator:

NGRAM is a program for generating text using a Markov model inferred from a sequence of bytes; it makes extensive use of the Hash template class that is also included in this package. The hash table is built from scratch, based on "open-addressing" scheme.

Source code & spec:  Nicer Doxygen view   Download

Modeling the World Wide Web:

The World Wide Web (WWW) is generally viewed as one of very complex networks.  It is believed that the WWW follows a scale-free power-law distribution of links.  There are lots of models which have been developed to simulate this feature.  In this project, I fully implemented the Barabasi-Albert Model and the Steady State Model and gave a detailed comparison between these two models based on the numerical results.

Source code: BAmodel SSmodel   report in PDF

Arbitrary precision arithmetic on integers:

The built-in C++ integer type is 32-bit wide -- thus the maximum unsigned number is 2^32 or roughly 4,000,000,000 (4 billion).  This is far too small in applications such as cryptography.  We implemented a LongInt class to represent a huge integer with several hundreds of digits.  The comparison and other traditional operations such as addition, subtraction, multiplication, exponentiation, division, and modulo are supported.

Source code:

The Dictionary:
A dictionary is built to translate between English and another language using the Roman alphabet.  Binary tree is used to contain the words in order.  Commands supported in the program: c - clear entire tree; l word - look up "word" and give its translation, or report that it is not in the dictionary; i word trans - add "word" to the dictionary with its translation "trans" (or change the translation of "word" to "trans" if there already was one); d word - delete "word" and its translation form the dictionary; p - print the entire tree; r filename - read the dictionary in from "filename" (which will add additional words if you do not clear the tree first; w filename - write the dictionary to "filename".

Source code: dict.zip

Postfix Calculator:

It supports the following operators: +, -, *, /;  ~ (sign change); c (clear top of stack);
C (clear entire stack); s (swap); d (duplicate); a (clear the stack and replace it with the average of all the entries); ^ exponentiation.

Infix to Postfix Conversion:
The priority of operators are defined as the following way from the highest to lowest:
^, * and /, + and -.  During conversion, numbers are simply printed out so we only need a stack to keep track of operators.

Source code: calculator.tar.gz

Game: Blocks World 

There have 10 blocks which all start off on the "floor." The user has three commands (here i and j are numbers from 0 to 9): p i j - put block i on block j; t i - take block i off whatever it's on and put it on the floor; q - quit.  Each block only has room for one block on top of it, but they can make "towers" with 1 on top of 4, 5 on top of 1, and so on. When we move a block, all the blocks above it should come with it.  If we try to put something on top of a block that already has something on it, the program should refuse.
Source code: block.zip

Measuring system call time:

This small project develops a means to use gettimeofday to measure the time taken for a repeatable operation, such as the getpid system call, in milliseconds, to an accuracy of two decimal places.

Report and Source code (pdf)

Measuring process creation time:

In this project, we measured the number of the processes the system can create and the time taken by each fork + wait in either case that each child process exits immediately or executes a very simple program before exiting.

Report and Source code (pdf)

Timing a single request-reply interaction on intra- and inter- machines:

A server and a client process are created and used to measure the time taken by a single request-reply interaction.

Report and Source code (pdf)

 

 

Simulation:

 

The tool FLOW is used to simulate the interface advance of liquid helium near the critical temperature T{lambda}.

Report in PDF: userguid.pdf

 

 

Miscellaneous:

 

A Disassembler for PowerPC ISA:

Implemented in Java.

Source code: disassember

Pure lambda calculus interpreter:

A lambda calculus interpreter based on Beta and Eta conversion and substitution rules.

Source code: click here

Implementation of Martelli-Montanari unification algorithm:

The algorithm is implemented using SML.

Source code: unify.sml

Implementation of Grammar Specification Language:

Specification Source code: part1 part2