Student Projects
Project Ideas
I've tried to make these all accessible to undergraduates, but the difficulty certainly varies. It's not a good idea to try to do a project that requires background in courses you haven't already taken. (E.g., you shouldn't try to take on a mobile app project unless you've taken the mobile app course.)
Playing Games
- I've written many playable JavaScript combinatorial games. It would be nice to implement more of these! Bonus: you could use my combinatorialGames.js script to start things off. There are many combinatorial games that haven't been implemented! Prereqs: Web 1.
- There are lots of non-combinatorial games that could have nice web-playable versions. Let's make one! Prereqs: (Advanced?) Web Programming.
- I think it would be really fun to write an online "Referee" that accepted AI player programs and ran a game or many games. This could be for Hanabi or Skip-Bo, or anything. Writing the code to run the game would be really hard. Writing the code for a single-working player would be pretty easy, but writing the code for an excellent player would be pretty tough. The engine is still the hard part. (That's what you have to code up.)
- We can use an arduino as a nerf turret. Can we use it in some robotics to make moves on a physical game board? The game would have to be something simple (like Semaforo or Tic-Tac-Toe). I really don't have any idea how this would work. Prereq: architecture, probably robotics.
Raspberry Pi
- There are some good lists of pi-projects. Remember that your project should be something new, but you might get some inspiration from things people have done before.
Math and Proofs
- Is it possible to prove whether it's possible for all eight players to simultaneously win a game of Tsuro? What about for all four players to win Blokus? (I think there you'd have to remove some pieces.) A simulation would take too long, but maybe there's a proof. (Apparently these have been shown, so we'd have to do something more general.)
- Think you've got what it takes to prove that a game is computationally hard with me? Let's do it! There are lots of games out there!
- Some non-combinatorial games I've designed have proving-elements to win the game. It would be fun to build a playable web version of these games that uses the proving part. Pre-reqs: Web 1.
Document Preparation
- I would love to have a web app that stitches together PDFs into one full thing for sequences of talks. Here's what I imagine: the administrator sets up the initial list of speakers (and times) as well as intermissions. Then the speakers load the website, choose their name from the drop-down menu, then upload their file. Everytime a file is uploaded, the overall PDF is updated to include all of them AND transition slides between them. This would be amazingly valuable! Pre-reqs: Web 1.
- The practice of figuring out finances during divorce proceedings is a bit antiquated. It would be nice to have a web-based system to speed things up, especially during mediation, which can easily cost the parties a total of $11 per minute. It would be nice to have a fillable-form that calculates all the totals on the fly and prints out to the standard formats used by NH courts. Even better would be if each party had a form, but could see the other's without editing it. One feature could be the ability to mark a challenge to the other party's document, then everything could continue until all challenges are gone.
Miscellaneous
- Hypermiling App: I'm very interested in hypermiling. When I'm driving in a new place, I'd really like to know what the hills look like coming up. Is there a way to combine Google Maps terrain with Google Navigation so that it shows me where the ascents and descents are coming up? Prereq: Mobile Apps.
Getting Your Project Set Up
- Think of some ideas! They don't have to be any of the ideas I listed above.
- Come talk to me about your idea(s).
- Which course would this project be a part of?
- CSC 4899 Senior Project: For projects done as part of the Senior Project course.
- CSC 3951 CS Research 1: For a research project you're doing with a faculty advisor.
- CSC 4952 CS Research 2: Doing an advanced research project. (You're probably doing a 3951.)
- HON 3955/3956 Honors Directed Study: 3955 is Falls, 3956 is Springs.
- HON 4955/4956 Honors Senior Thesis: 4955 is Falls, 4956 is Springs.
- Note: If your project is not part of a regularly-scheduled course, then you probably need to fill out the Directed-Independent Study Form. (Choose the "Directed Study" option. I can help you fill out this form.)
- Fill out a project proposal (.docx). (My proposal format is different from other faculty; let me know if that link doesn't work.) I want that proposal to be completed and accepted by me before I sign the forms to approve your project. That means you preferrably want it done before the semester begins.
- After I've accepted your project proposal, clean it up by deleting the instruction/sample text. Send it back to me and I'll print it out.
- Work with me to select a weekly meeting time for us. Find a time that works with my schedule. Meetings usually only last around 10 minutes, so we only need to find a 15-minute window to make it work. If we can't make a meeting time work for everyone in the group, we want to pick a time that works for the maximum number of you as possible. Make sure you come to my office for those meetings! What I'm going to do is check out how close you are to the stated goals for that week. If we miss for some reason, then I'd like you to be proactive in figuring out how to make the meeting up. It's only okay to have one unexcused missed meeing per semester. Any more than that, and I'm going to strongly consider cancelling the project.
- Get to work kicking butt on your project!
Actual Projects
Here are the projects of past and present my students have undertaken.
Florida Southern Projects:
- Devan Burke ('24) - Reinforcement Learning with Super Mario Bros. Using Reinforcement Learning to train a player to play the original Super Mario Bros.
- Raymond Riddell ('24) - Monte Carlo Tree Search. Implementing a Monte Carlo Tree Search algorithm to work for any combinatorial game.
- Quade Leonard ('25) - AI Nerf Gun Detection. Using the YOLO AI vision model to detect nerf guns in images.)
- Devan Burke and Raymond Riddell ('24) - Game of the Amazons. A JavaScript implementation of the popular combinatorial game Amazons. Includes challenging AI players.
- Austin Jackman, Hunter Odom, and Emily Pismenchuk ('24) - ASLphabet. A text-to-image (and maybe reverse) ASL alphabet interpreter.
Plymouth State Projects:
- Austin Bell ('22) - Alpha Bravo Fitness. An online fitness routine manager that tracks routines and provides feedback and suggestions.
- Aaron Binning ('22) - Arduino Window. An Arduino-powered robot that opens and closes a window based on differences in temperature.
- Evan Finnegan ('22) - Rental Property Setup. An online rental property manager and web presence.
- Lucy Laferriere ('22) - Friendly Chatbot. A discord chatbot implemented in Python that holds friendly conversations using NLTK.
- Max Schlichte ('22) - PyGame Pac Man. An implementation of Pac Man using PyGame.
- Alston Stone ('22) - Bro Bot. Bro Bot is a robot that measures distance in order to play beer pong.
- My Tran ('22) - Vehicle Identifer. Photo analyzer to identify vehicles using Python and OpenCV.
- Connor Henderson ('22) - Momentum. Momentum is a 3D platformer game using a grappling hook created in Unreal Engine.
- Case Merrick ('22) - Samurai Trainer. Samurai Trainer is a VR game created in Unity where you can slice through a variety of objects around a town.
- Charlie Hemenway ('20) - Queer Dating App. A dating app that takes into account multiple queer sexualities and gender identities.
- Amelia Rowland ('20) - Playable Red7. A Javascript version of Red 7.
- Stephanie Coffman ('19) - Cryptography. Study of cryptography, with an implementation of a Merkle Hash Tree in Python.
- Madeleine Gibson ('20) - Master-Worker Matrix Multiplication. A parallel, object-oriented implementation of the master-worker pattern for matrix multiplication.
- Stephanie Labeck ('19) - SpotiLED. An LED light visualizer that uses data from the Spotify API.
- Michael Titterington ('19) - Machineball. A Python-based machine learning application to predict past, current, and future Major League Baseball playoffs.
- Gage Merrick ('19) - Rubics Cube Video Timer. A web-based Rubik's Cube timer with synchronized video and detailed solving statistics. Includes an AI coach for improvement.
- Nate Mozinski ('19) - Combinatorial Game Web Display. An online display for combinatorial games. Showcases two AI players competing in continuing rounds of RotisserieNim and Col.
- Lucien Pease ('19) - Ainidor. A turn-based resource management game, implemented via a web app.
- Thomas Slyne ('19) - Online Shop Monitor. A Python-based web scraper for gathering prices of sneakers. It notifies the user when a new product is launched. Users can update keywords through a Discord server, tailoring the search to their desires.
- Todd Kosakowski ('19) - Face recognition with OpenCV on Raspberry Pi. This project leverages OpenCV to process a live streaming video using Python. The program will be trained on a data set and then used to identify faces of students and staff.
- Candace Boris ('18) - Instant Coffee, a Java EE Learning App. Instant Coffee details all aspects of getting started in Java EE, including setting up a WebLogic server and an Oracle database, assigning user roles, configuring the project, creating a simple, but complete MVC application with CRUD functionality, user authentication, input sanitization and search.
- Dan Burgess ('18) - Genetic Algorithms: Spider Webs. A graphical Java program that experiments with genetic algorithms applied to spider webs. The program uses the process of natural selection to optimize the effec-tive surface area of a spider-web-like shape.
- Matthew Ferland ('18) - Teaching an Old Plumber New Tricks. A program that plays classic video games using input from the viewer to determine whether or not it is doing good or bad.
- Austin Ash ('18) - Online Automata. A web app to simulate finite-state automata.
- Charlie MacDougall ('18) - MAC Login System. Update the MAC so visiting students can log in with a card swipe.
- Matthew Ferland ('18) - Game Simulations/Hardness. Showed that Slimetrail is PSPACE-complete on graphs.
- Greg Mallon ('17) - PainTrac. An application for tracking chronic pain.
- Kenny Manivong ('17) - YouTube Audio Playlists. A web tool for creating and storing playlists from YouTube audio.
- Jeremy McLeod ('17) - Hero Quest in Java. A Java implementation of the game Hero Quest.
- Charlie Miller-Nelson ('17) - Outdoor Center Rental Software. An application to correctly manage equipment rentals.
- Frank Pattiasina ('17) - Bolt. An app for studying with flash cards.
- Dan Burgess ('18) - Voting Simulation App. An interactive web tool to simulate results of voting trials.
- Mihai Ene ('17) - Web-Based Resource Management Tool. An online food-ordering system for Biederman's.
- Gage Lirette ('17) - SysAdmin, The Game. A web-based quiz game covering topics from CS 4220.
- Beth Longe ('17) - Dawn Patrol. A mobile app for surfers, detailing coastal weather and ocean conditions.
- Tommy Guthrie ('16) - Jivin' Jukebox. A Raspberry-Pi jukebox that generates a random playlist from songs submitted via the web.
- Kelsey Neil ('16) - Love Letter. A web-implementation of the card game, Love Letter.
- Josh Barton ('15) - Java FX 8 Image Utility Application. A 3-in-1 image processing, viewing, and browsing application.
- Zack Lyons ('15) - Martian Chess AI. JavaScript-based implementation of 2-player Martian Chess.
- CJ Morrison ('15) - JavaScript Dungeon. A turn-based JavaScript RPG.
- Stephen Schatzl ('15) - Self-Service Payroll. A self-service payroll application that allows employees to update their own hours.
- Bryan Sopko ('15) - Plymouth State Virtual Walk. A virtual tour that allows prospective students to familiarize themselves with campus.
Colby Projects:
- Michael Goldenberg ('14) - Max-Nim Winning Strategies. Independently found the winning strategy for Max-Nim, also known as Greedy Nim.
- Ben Borchard ('14) - Chrome Applications and Extensions. Created Chrome extensions to apply the Most Recently Used (MRU) protocol to tab switching, and use the arrow keys to move between Google search results.
- Hieu Phan ('14) - HTML5 Game Development. Created Tetris that can be played by two remote players.
Wittenberg Projects:
- Brittany Rickards ('13) - Earning Your Horn. Implemented a Java game where a unicorn has to catch falling stars.
- Patrick Copeland ('12) - Go and Monte-Carlo Tree Search Algorithm. Wrote a game-playing program in Chapel and Python using advanced techniques and applied it to Go.
- Will Herrmann ('12) - Creating a Fun Program that is Simple and Easy to Use. Applied User-Centered Design to create the Savage Worlds character generator, Wild Card Creator.
- Andy Heinlein ('11) - Mad Rooks. Created a playable Mad Rooks Android App.
- Aaron Dugger ('10) - Merkle Hash Trees. Studied cryptography, then implemented the Merkle Tree Hash in Python.
Boston University Project:
- Ryan Fleisher and Bob Solorio ('09) - Atropos for Facebook. Implemented elements of Atropos in php to use in a Facebook app.