My latest project
is an extension of the
VisAD package .
Here
is the code and
here is the API
generated by JavaDoc. For a complete description (in English)
please refer to my
Master's Thesis.
It's all part of the research done by the
Scientific Database Research Group
at the University of New Hampshire.
(some) applications written
- a multi-resolution and adaptive resolution isosurface
renderer in Java
- a 3D drawing application in Java (bare-bones)
- FTP client and server in C for Unix/Linux (scaled down)
- POP3 client in C for Unix/Linux
(some) algorithms written
- marching cubes algorithm in Java
- binary space partitioning algorithm in Java
- depth first search alogorithm in C
- parallel matrix algebra in C
- quicksort in C
- class: Computer Graphics,
University of New Hampshire
- language: Java 1.1 and 1.2/2.0
- input: event driven
- output: 3 dimensional
projection onto a 2 dimensional display
- brief description:
This program features the following
- 3D Projection onto a 2D display:
Draw3d.java,
DrawCanvas.java,
View.java,
Shape.java,
Solid.java,
Cube.java,
Tetrahedron.java,
Face.java,
Point4.java,
NDCpoint.java
- The Binary Space Partitioning Alogorithm:
BSPTree.java,
BSPNode.java,
Plane3d.java
- Solid Object Definition:
SolidObject.java,
SolidObjecPoint.java,
SolidObjectList.java
Instance.java,
- Serialization:
InSerialize.java,
OutSerialize.java,
Cube.java,
- Java 1.2/2.0 Swing Components:
Swing3d.java,
ApplicFrame.java,
AutoRotate.java,
JNameDialog.java,
JRotateDialog.java,
JSlider.java
Here is the
Makefile.
- class: Operating Systems,
University of New Hampshire
- language: C for UNIX
- input: commands from user
- output: a message indicating
success or failure.
- brief description:
This program develops an NFS simulator using messages
to communicate between the client and server
(machines). (Since message queues are
used, the client and server are on the same machine.) The
server supports multiple clients.
A set of procedure calls are provided that enables an application
program running on a client machine to perform standard UNIX
file system operations on the remote files. Each of these routines
communicates with the server via messages which are packed using a
prearranged protocol. Note that the message format protocol is
designed such that the file server is stateless .
Therefore, every message is self contained.
Here is the
Makefile.
- Source Code:
client.c
The client program is interactive and continually prompts the
user for the operation to be performed and the parameters for this
operation. The client then packs this information in the standard
message format and sends it to the server. When a response is
received from the server, the status of the request and the
response are displayed on the output screen. Multiple client
processes can be running simultaneously.
message.h
-contains definitions of message queue data structures.
server.c -
The response from the server has fields that refer to the status
(whether the request could be carried out).
The file operations supported for this NFS simulator are mapped
directly onto the UNIX file system operations. The following file
operations are supported:
1. Create a file. This function maps into the
creat() system call. The user supplies the file name and the mode
parameter.
2. Read a file: This function maps into the
open(), lseek(), and read() system calls. The user supplies the
file name, seek offset, and the number of bytes to be read.
- class: Operating Systems,
University of New Hampshire
- language: C for UNIX
- input: any data file
- output: blocks of data
from a software cache
- brief description: The
program simulates a buffer cache mechanism
to store copies of recently read blocks of disk files. All read
operations are block oriented. Assume that the block size is 512
bytes. When a read of file data is to be performed, the buffer
cache is searched first for the data. A hash table
is used to locate these blocks. If the desired block is
not located in cache, then the data is read from the disk. A copy
of this data is stored in the cache. The cache uses the
Least Recently Used (LRU) page replacement
policy.
- Source Code:
xread.c
-the main program that continually prompts the user for input data
which includes: file name, seek address (byte offset 0), and
number of bytes (not blocks) to be read. It then prints the
bytes read to screen.
cache.h
-contains definitions of cache data structures.
cache.c -contains
all the software cache buffer functions.
Here is the
Makefile.
- class: Operating Systems,
University of New Hampshire
- language: C for UNIX
- input: matrix data files
- output: more matrix data files
- brief description: The
program simulates matrix algebra in parallel in
the following manner: The parent process forks off 3 child
processes, one for matrix addition, one for matrix subtraction,
and a third for matrix multiplication. The child processes are
each their own executables. It's a handy demo of the
fork(), exec(), and wait() system calls.
- Source Code:
matrix.c
-the parent process,
child1.c
-the child process that performs matrix addition,
child2.c -the
child process that performs matrix addition,
child3.c -the
child process that performs matrix multiplication (tricky).
Here is the
Makefile.
- class: Database Techniques,
University of New Hampshire
- language: C, SQL
- input: sample database
- output: sample queries
- brief description: The
first program populates a sample database. The second program
runs some queries on it showing results. The code is SQL
embedded in C. This is no ordinary version of SQL
though. This is SQL for POSTGRES95, a database
management system developed at the
University of California, Berkeley. Thus, it's not quite as user
friendly as other standard versions. For example, aggregate
functions like SUM() are written separately by the programmer.
The database keeps track of a company's employee expenses.
- Source Code:
projectdb.c
populates a sample database and
project.c
runs the queries.
- class: Operating Systems,
University of Massachusetts
- language: C++
- input: a list of characters
or numbers
- output: a sorted doubly
linked list of data
- brief description: The
program creates a doubly linked list of the
data and sorts it using the bubble sort algorithm.
It also uses a template class to operate
on either characters or integers.
- Source Code:
dlist.h
contains the class definitions
dlist.cc
contains the procedures.
- class:
Architecture and Assembly Language, University of Massachussetts
- language: SAL
(Symbolic Assembly Language)
- input:
2 numbers read in from the keyboard,
one character at a time, separated by a comma
- output:
the addition of the 2 numbers
- brief description:
This program adds 2 numbers.
It performs a number of checks like to see that the numbers are
within the proper range and also to see if there's a comma.
It also adds negative numbers.
-
Source Code
- class:
Architecture and Assembly Language, University of Massachussetts
- language: SAL
(Symbolic Assembly Language)
- input:
a string read in from the keyboard,
one character at a time using I/O interrupts
- output:
another string identifying each character
in the input string as upper case, lower case, or numeric
- brief description:
This program reads in a
string using interrupts and then determines whether each character
is upper case, lower case, or a number. The output must be
done one character at a time, also using interrupts.
-
Source Code
- class:
Algorithms, University of Massachussetts
- language: C
- input:
file -a dictionary of about 70,000 entries
- output:
a list of all anagram classes in the dictionary
- brief description: For example:
tops, stop, opts, and pots form an anagram class. The program must
run as fast as possible and use 2 vital sorting algorithms. (Uses
two versions of the Quicksort algorithm)
-
Source Code
- class:
Algorithms, University of Massachussetts
- language: C
- input:
file -a graph with up to several thousand nodes
- output:
whether or not the graph is 2-colourable
- brief description:
An efficient program to
determine whether or not an undirected graph is 2-colourable. The
Depth First Search (DFS) algorithm is implemented.
-
Source Code