Isometric Game Engine
This is an isometric (2.5D) game engine.
The goal of this project was to write code to handle the various components of an isometric game engine.
I wrote it in Java using the Lightweight Java Game Engine (LWJGL), a library that provides bindings for OpenGL
and other C/C++ libraries.
It handles the following:
- Display and process grid-based tiles.
- Display and process entities and objects.
- Provide stochastic process for random game events.
- Provide finite state machine for orderly or sequencial game events.
- Uses object oriented programming to organize similar classes.
You can find the code for the engine here. You can find the code for a demo game here.
Logisim uMips processor
Logisim is a program that simulates digital logical circuits. Using this tool, I designed a processor for a simplified version of MIPS assembly language. Above is a high level view of the schematics. The architecture consists of the following:
- 1 hexadecimal instruction memory
- 1 instruction decoder
- 1 ALU
- 4 registers indicated by LEDS at bottom-right
This project was made for CS447, a course on computer organization and design.
PostgreSQL database project
This is a flight and airline management program written in Java and PostgreSQL for CS 1555, a database management course. The goal of this project was to keep track of a number of airlines, their airplanes, and their flight schedules: time, date, start, destination, plane. The databse also holds discounts for specific customers, and plane capacities. The database also required various triggers to handle events like a plane filling or a flight being canceled. Using this information, the Java program can take a start and a destination city and calculate the most efficient trip by generating a Graph and running a BFS with the starting and destination city.
Web Development and Flask
For CS 1520 Programming Languages for Web Applications, I wrote four projects involving Javascript
(frontend) and Python/Flask (backend).
The first project was to create a 2-player Battleship game using pure HTML/JS.
Building this project taught me advanced ways to manipulate the DOM and the basics of event driven
programming.
The following three projects used Python and Flask, a microframework for building web applications.
In addtion, SQLAlchemy was used as an ORM for the database of these projects.
Each of these projects were similar in their setup, but varied by requirements in order to demonstrate
different techniques when building web apps.
Here is a list of projects 2-4:
- Create a server to handle a Catering Company's Website
- Owner's page: create and display employee accounts.
- Employee page: signup and view catering events.
- Client's page: register, request and view events.
- Create a chatroom server using Ajax.
- Server handles multiple chatrooms.
- Each chatroom must update previous chatrooms without refreshing page.
- Create a RESTful API to handle a budgeting application.
- Budget Categories can be created with a dollar limit and destroyed.
- Expenese are added and the respective category amounts are updated.
Cloud Computing Project
This term project was created for CS 1660 Intro to Cloud Computing. The goal of this project was to create an application that uses Hadoop for processing very large datafiles, ideally greater than 182MB. The application allows the user to create an inverted index on multiple large textfiles. These inverted indices can then be used to find where a given search term appears, or to calculate the top N frequent terms.
I used Google's Cloud Platform as to host the Hadoop Cluster. They provide a very convinient interface for their suite of cloud computing tools. A java GUI provides an interface to upload files to the GCP cluster, and to retrieve the results of the queries.
I think this course was particularly valuable, as many large companies are pushing to migrate their monolithic
applications to a distributed, cloud paradigm.
In this course I did a few other smaller assignments worth noting.
The first assignment was to create a simple Java GUI, then run it inside a Docker container.
The second assignment involved using Amazon's Web Services to create a DynamoDB and a bucket to hold
loosely structured data from a hypothetical experiment.
Other assignments were similar to the term project but much simpler.
Here are links to their respective github repos.
Term Project
AWS Assignment