Project Ideas

If you are unsure what might make a good senior project, here are a few ideas (that are interesting to me). You may or may not find these ideas interesting. You are not required or expected to choose one of these ideas! I only present this list as a starting point. Note that some of these ideas are complex and would need to be significantly scoped to make them realistic.

Table of Contents

  1. VTank
  2. Cluster Management
  3. The Vermont 251 Club
  4. Gliese 710
  5. Open Watcom
  6. CubeSat

VTank

In the late 2000s, Vermont Technical College had an initiative whereby students were paid to work on a significant software project over the summer. It was called the "Summer of Software Engineering" (SoSE). One project developed by SoSE was VTank, a networked, multi-player tank game.

VTank was quite involved. It included a client, in C#, that used Microsoft's XNA gaming engine for 3D graphics. It included a server, in C++, that managed the game world and sent updates to all players (each player ran their own client). It included a map editor, also in C++, that used the wxWidgets graphical library to allow new game worlds to be created. It included a website that allowed players to create accounts, outfit their tanks, and communicate with each other. Communication across the network was done using a middleware framework called Ice. See the VTank GitHub repository for the complete source code and documentation of the system. There are two short videos on YouTube that show off the game play. The first video is at an earlier stage of development than the second video.

VTank is very old now (about 15 years). The tools and libraries used in its construction are now outdated. In particular, Microsoft no longer supports the XNA game framework. Thus, the system needs to be updated and the game engine needs to be changed for something more modern, probably Unity, which supports C#. There is a "reloaded" branch in the VTank GitHub that is intended to hold this update, but essentially no work has been done on it.

Working on this project will entail a fair amount of time just learning how the existing system works and is organized. This is, however, extremely realistic (it is rare in industry that you have the luxury of starting a project from scratch). Also, because of the size of the project, it would be necessary to find a part of the work that would be manageable in the time available. Completely updating the entire system is probably not feasible in a single year by a small senior projects group. However, I would love to see the system work again, even if it takes a couple of years to do that.

Cluster Management

This is primarily an IT-oriented project.

VTSU has a small, four-node cluster in the "400 Building" on the Williston campus. This cluster is used to support various classes including Parallel Programming, Big Data Processing, and others. Although it is a working cluster, it is scheduled to be used only one class during the 2023/2024 academic year (Parallel Programming during the Spring 2024 semester). Thus, this is a good time to think about overhauling the cluster configuration.

The problem with the current configuration is that each node is managed independently; there is no real integration of the nodes. For example, if updates need to be applied, they must be applied to every node separately. This is feasible for a four-node cluster, but it is not feasible for a larger cluster. It is also not the way real clusters are managed. I would love to see "proper" clustering software installed on the nodes that could integrate the nodes together more conveniently.

This project would entail researching available clustering options, setting up a test cluster to experiment with those options, and then planning a way to update the existing "production" cluster without disrupting it too much. It would also require documenting the procedures so future VTSU students and faculty can continue to maintain the new system. Of particular interest would be the procedure for adding new nodes to the existing cluster and integrating the new nodes into the existing management system.

The 251 Club of Vermont

The 251 Club of Vermont is an organization of people who try to visit all 251 (actually 252... long story) towns in Vermont. They are a small organization of people who just like traveling around the state. They have a website, a newsletter, and an annual meeting. What they don't have is a mobile app.

You will notice on their website that if you are a member (there are dues involved), you can log in and then leave information about the towns you visited as a way of keeping track of your progress. I have been in contact with the head of the organization about the idea of creating a mobile app for their members that makes it easier to upload and share photos or text messages about towns and maybe provide some other services. They were quite interested in this. It would be great to see this implemented as a senior project.

In fact, when I last taught Software Engineering, I had the class work on this project. That was interesting and useful, but none of the projects reached a level of maturity suitable for actual deployment (none, for example, interacted with the 251 Club's website). So the matter remains open for further (re)work.

Gliese 710

Gliese 710 is a star that will make a (relatively speaking) very close approach to the solar system in about one million years. In fact, it will likely pass through the Sun's Oort Cloud, a spherical region of space containing many cometary bodies left over from the formation of the solar system. As a result, it may disrupt the orbits of many of those bodies and cause an unusually large number of them to fall into the inner solar system, increasing the chance of a large collision between a comet and the Earth.

I think it would be interesting to create a program that explores this issue by using a Monte Carlo simulation. That entails picking a "random" comet in orbit around the sun and simulating the effect on that comet by the passing of Gliese 710. To get good statistical information, it would be necessary to simulate the effect on millions, and perhaps billions, of randomly selected comets. This would likely take a long time to compute.

To speed up the computation, I visualize the program taking advantage of various parallel technologies: the cluster, GPU accelerators, or both. It also may be possible to use cloud resources to speed up the computation. Finally, a version of the program that takes advantage of BOINC would be interesting.

This program would have to be written in a high-performance language that is good for scientific computing (C, C++, Fortran). It might also be possible to write it in the high-performance scripting language Julia (or perhaps the prototype could be written in Julia and converted to some other language later, if necessary).

I have a GitHub repository started for this project, although there is not much in it.

Open Watcom

In the past, I was the official maintainer of the Open Watcom project. This project is an open source C, C++, and Fortran compiler suite with accompanying libraries and tools. Open Watcom is based on the old, commercial Watcom compiler. These days its claim to fame is that it is the only actively maintained compiler suite for several obsolete platforms (MS-DOS, Windows 3.1, OS/2) although it does support modern Windows and Linux systems as well. Its ability to support the old platforms makes Open Watcom interesting to the small, but active community of people still using those platforms where Open Watcom is the only compiler available that can still generate code for them.

Open Watcom is a huge project (over 2 million lines of code), but it has many aspects. As the former maintainer and long-time contributor, I have interest in continuing the development of Open Watcom and in assisting anyone who is interested in helping. There are many areas where help is needed; and not all of them entail programming. One advantage to working on a project like this is that it would give you experience working on a real open source project with people outside the VTSU community. That kind of experience would make a great addition to your résumé.

I have a separate space on this website for Open Watcom that includes a list of possible projects. Be aware that my list reflects my personal interest. Other projects are also possible.

Also see the Open Watcom repository on GitHub.

CubeSat

For many years, there has been a group at Vermont Technical College working on writing flight software for CubeSat spacecraft. In 2013, that group launched a CubeSat into low-Earth orbit where it flew for two years before reentering Earth's atmosphere and burning up. Since then, the group has been working on "CubedOS," a general purpose flight software framework that could be used for many missions.

Currently, the CubeSat project is "on hold" due to a lack of faculty resources and other factors. However, this past summer significant work was done on the project by a student who has since transferred to another school. The materials are still available and many avenues of development are still open.

I was the software director of the CubeSat Laboratory group. I am no longer in that role officially, but as the instructor of Senior Projects, I'd be happy to work with you on some aspect of the CubeSat project for your senior project if that interests you.

The CubeSat group has traditionally written the software that flies in space in the SPARK dialect of the Ada programming language. This is a special programming language for building ultra-reliable software systems. However, if you would rather not learn SPARK and Ada, there are potential projects that involve other things. For example, the CubeSat Laboratory website needs work. One of our tools (Merc) is written in the functional language Scala. A tool for scripting CubedOS commands in Python was in the early stages of development.

The CubeSat Laboratory GitHub organization contains several repositories of potential interest.


Last Revised: 2023-08-22
© Copyright 2023 by Peter Chapin <peter.chapin@vermontstate.edu>