Course Projects

All Semesters


Software Methodology [CS213]

Chess This command-line program, built in Java, establishes a manual 2-player game of chess. It detects illegal moves, supports special moves like en passant, castling, and pawn promotion, and ends once a checkmate occurs.

A printed command-line representation of a chess game. A checkered, 2D grid represents the board and pieces (for example, wp represents a white pawn, bR represents a black rook, etc.). The picture depicts black moving a pawn from location h7 to h6. White then attempts to move a pawn from d2 to e3, but the program informs the user that the move is illegal.

JavaFX Photo Library This photo library, built using Java, JavaFX, and XML, is an application that supports user authentication, image upload, and image organization via albums, search functions, tags, and date-times.

A JavaFX GUI of an album and photo display. Taking up the entire left slide, the display is currently selecting a picture of Armin Arlert, the best character from Attack on Titan. The right side displays details (an arbitrary caption and date time), and the photo has no tags. Below the details, there is a scrolling panel with all the images currently in the album. The images are Mob from Mob Psycho 100, Armin, and Tsukishima Kei from Haikyuu!!. These characters are top-tier.

Android Photo Library This photo library, built using Java in Android Studio, is a phone app that supports user authentication, image upload, and image organization via albums, search functions, tags, and date-times.

Two screenshots of an Android app. On both screens, we are on the 'Search Photos' page. The first screenshot has black search queries. The album itself contains three images below the search bars (one for location, one for people): the Eiffel Tower, Times Square, and the Great Wall. The second screenshot searches for 'new york', and the album is now filtered to just the Times Square image.

Systems Programming [CS214]

Where's the File? Where's the File? (WTF) is a fully functional client-server version control system written in C. Through sockets, file I/O, and multithreading, it allows up to ten clients to interact with, push projects to, get projects from, and otherwise modify a repository in a remote server. While a local version of the repository exists on the client-side, the server maintains the version most recently pushed while keeping track of the project's history. WTF supports the following commands: configure, checkout, update, upgrade, commit, push, create, destroy, add, remove, currentVersion, history, and rollback.

View source here.

Data Management [CS336]

Train Scheduler Train Scheduler is a full-stack train booking web app that stores train routes and user data via efficient database schema. Users can search train routes stored in an AWS RDS database, create an account to create, modify, and delete reservations, and browse available schedules. The app also supports admin and employee configuration – employees can answer customer questions in a forum, and admins to view sales reports and customer employee information. It is hosted on an AWS EC2 instance through Apache Tomcat and leverages SQL and Java Servlet Pages to provide functionality to the user.

Two simple HTML tables displaying information about current and past train reservations. Both have the same columns: reservation number, total fare, passenger name, booking date time, departure date time, arrival date time, and travel time (cut off for current reservations).

Intro to Artificial Intelligence [CS520]

A* Maze Solver A Python agent is put into an NxN maze and attempts to reach the goal using a repeated A* algorithm with a Manhattan distance heuristic.

View source here.

A command-line representation of a maze. The user has specified that the maze be 5x5 in dimension and 30% filled with obstacles. The program solves the maze and prints out the maze with a solution path. The trajectory length is 11, the number of cells processed is 16, and the time to solve is 0.0064518 seconds.

Partial Sensing Maze Solver A Python agent is put into an NxN and learns about its environment through logical inference. As it attempts to reach the goal using a repeated A* algorithm, it maintains a knowledge base that updates with new information every move, allowing the agent to make informed decisions.

View source here.

Probabilistic Maze Solver A Python agent is put into an NxN maze where each available location has one of three terrains. The probability of the agent accurately detecting an unknown goal cell depends on the terrain type. The agent learns about its environment and uses probability to identify (1) the cell with the highest chance of containing the target and (2) the cell that gives the agent the highest chance of successfully finding the target. Using a repeated A* algorithm, the agent examines cells and updates probabilities until it finds the goal.

View source here.

Maze Neural Network We built four TensorFlow neural networks in Python to mimic the original agent from project 1 (A* Maze Solver) and the logical inference agent from project 2 (Partial Sensing Maze Solver). For each project, we developed, trained, and, tested Keras models with full dense layers and convolutional neural networks.

View source here.