On this page are a few projects I have enjoyed completing! All projects listed are on my git linked on this website.

Billiards Action Webserver

PoolTable

Description:

The Billiards Action Web Server is a full-stack project that animates a pool shot. By adjusting the angle and power of the cue ball’s strike, the server dynamically determines which balls sink into the pockets, providing the user with a realistic and interactive billiards experience.

This game has a C library that manages the various objects that would be on a pool table such as still balls, rolling balls, holes, a table, 4 cushions surrounding the table, and a cue stick. Memory is allocated for all these objects that are defined as enums and structs to account for varying coordinations.

Then Python and SQLite act as a way to create databases and tables to save elements of the game such as time, players, shot #, and ball state (rolling, still, not on table, etc…)

The front end uses HTML/CSS to structure the page with input fields, buttons, and an SVG of the pool table. The JavaScript is used to handle user interactions through event listeners, drawing a line from the cue ball to the cursor to indicate shot direction and length/power, and sending data like Game Name, Player names, and shot velocity to the server via POST requests when action buttons are clicked.

Languages/Tools:

C Python SQL HTMLCSSJS HTMLCSSJS

Reflection:

Learning Outcomes Improvements
Checkmark

A strong backend with no memory leaks ensures a better overall project and a nicer user experience.

Pin

Lacking logic surrounding game rules that needs to be implemented.

Checkmark

Python acts as the glue between a C backend and front-end JavaScript to create a responsive game that stores game state in relational databases.

Pin

Working towards a server logic that allows users to compete against each other.

Checkmark

A bigger project has many moving pieces, so setting frequent deadlines is important to ensure a successful outcome.

Pin

More visually appealing game set up on the front end.

Digital Mancala Game

Mancala

Description:

The project consists of 11 executable classes and several testing classes. Out of these, 10 classes represent individual components of the full Mancala game, which are utilized by the TextUI class. The TextUI class interacts with the MancalaGame class, which in turn relies on the Board class to manage game functionality.

With JUnit tests, I ensured that each smaller component of the program worked correctly, which made the process of testing and debugging much easier. I made JUnit tests as I developed the software to not test all at once at the end.

Languages/Tools:

Java git Docker

View Test Document:

cv icon

Reflection:

Learning Outcomes Improvements
Checkmark

Refactoring code is good practice for improving its cleanliness, readability, and reusability. By making code more reusable, it becomes easier to maintain and manage over time.

Pin

Adding a GUI to make the game more user-friendly.

Checkmark

Testing in smaller parts allows for simplified debugging, detecting bugs earlier, and allows to refactor code easily.

Pin

Adding more detailed test cases.

Checkmark

Abstraction, encapsulation, polymorphism, and inheritance

Pin

Continue refactoring and maintaining code.

Personal Portfolio

Web Browser

Description:

This portfolio website shows my interest in programming through the use of HTML, CSS, and JavaScript. It features various pages that highlight who I am, my work experiences, technical skills, projects I've completed, and a way to contact me.

My goal was to create a responsive layout that works across all screen sizes and operating systems. To achieve this, I used minimum and maximum @media queries. Additionally, I got to be creative in the design process, allowing me to reflect on my experiences.

Languages/Tools:

HTMLCSSJS git

Reflection:

Learning Outcomes Improvements
Checkmark

An important first step for me was ensuring a well-structured HTML page.

Pin

A more detailed flowchart for my internship goals.

Checkmark

Users may not know an element on the page is interactive, so anything that is needs to be obvious.

Pin

Some elements are not aligned on different screen sizes, so improving the responsiveness of my website.

Checkmark

Basic design principles such as contrast, proximity, colour, and space.

Pin

Continuing to get feedback when it is hosted.