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.)
I would love to have a web page that shows abstract board games being played between (computer) players. The page would display:
- A graphical version of the current game, changing as plays are made.
- The current player who is deciding their move.
- The record between the two players.
- Perhaps some smaller images from the previous few moves?
- Perhaps more information if there's an entire tournament going on.
There are some extra parts to this project:
- The actual code running the game should probably be running from elsewhere, so making that would be a part of the project.
- Adding new players would be awesome, though there's a bit of a security risk to allowing just anyone to upload code...
- Further bonus awesomeness: one of the players is running code remotely.
- The best game to use would be one from the data structures course. Then we'd have tons of players we could use.
This project would be a great thing to show off at department open houses! Open a tablet to the webpage, and have one of the players running on a Raspberry Pi... that would be pretty awesome to show off! Prereqs: data structures and (advanced) web programming.
- 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 a Hanabi-Game bot that accepted 2-5 AI player programs and ran the game. 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.
- Create a Monte Carlo Method AI to replace my brute-force AI across all games in my combinatorialGames.js classes. (You really only have to implement it once; all the games have the same interface, of course.) Prereq: algorithms.
- 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.
- I would love to have a little cluster of, say, three Pis where we can show some computational speedup by using the processing power of all three. In particular, I'd like to try running some code in Chapel that makes use of all three of the Pis. I don't know how hard it would be to get them all working together. It might be a hard enough project just to get them all talking to each other, and have some graphical monitor of the CPU usage of each.
- 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...
- 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.
- 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!
- 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. I know a lawyer in Plymouth who might be willing to act as a client for this.
- There's a bunch of standard things that are needed to create a Plymouth-State syllabus. Unfortunately for us professors, we have to copy/paste a bunch of things over and over. (Well, I don't, but many do.) It would be nice to have a web form that generated the syllabus (HTML version, maybe with a PDF option) after filling in a bunch of fields. Even better: allow the user to save their fields a JSON object, so the fields could be reloaded for next year.
- For the BOSPRE programming competitions, the final format of the results is really ugly. I would like this to instead have a really nice display. It would be great for someone to write a program that converts the ugly text into a nice HTML page with all the scores laid out.
- There are a ton of other on-campus documents that need a nice way to generate them. Seriously. Right now we pass around a bunch of Word documents. Aaaaaah!
- 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.
- Plymouth State Media: We could really help out the admissions office by using some of the new tech we got. We could add some virtual tours by using a GoPro and walking around 1-on-1 with one of the campus tour guides. Then we could upgrade that using the VR-camera to record a tour following an actual tour group around. There have got to be some technical details using these and then hosting the content online.
- FiM++: There is a programming language called FiM++ where every program reads like a letter to Princess Celestia. It would be great to write a compiler/interpreter for this that translates to another language.
- Data Structures Grading: I have to babysit my code to grade data structures quite a bit. It consists of shell scripts that run a bunch of Java code. I wind up having to copy-paste the output of the Java code into a separate text file part-by-part (and it's not printing super nicely). I want help cleaning this up, creating a nice program that I don't have to interact with nearly as much. (This would free me up a bunch during lab.)
- Where is Kyle?: I am willing to wear an RFID tag (or something) when I'm on campus which is read by some doorways in Memorial. This should update to a webpage to let people know where I am.
Here are the projects of past and present my students have undertaken.
Boston University Project: