* Packet sniff a Windows-only consumer USB/Ethernet device and implement its communication into a Linux and/or mobile device client. (Ideas: audio gear, smart kitchen/coffee appliances, smart lights)

* Create a Docker image (plus ideally a GitHub Action or AWS Lambda) that will build and publish microcontroller binaries using some major vendor's board support files. AS FEW SETUP STEPS AS POSSIBLE is the goal: Upload "main.c" to a template repository (or attempt to compile and link all .c|.h files in the src folder) and a few minutes later, "out.elf" is the output artifact.

* Implement a data browser (or editor) for some abandoned but popular (or personally nostalgic) video game. If this step was easy enough, write a new game client in a modern engine. Props if it works in WASM. If reverse engineering is not forbidden in the EULA (or you are ballsy in your interpretation of your country's laws) release the client, source and/or a fully novel and functional (using the original binary) set of game data publicly.

* Write programs for a reasonably new protocol such as MIDI 2.0. Bonus points if you specifically copyleft it, but that won't stop Behringer from using it without attribution anyway.

* Link a QEMU (or Fast Model) emulation of a specific microcontroller (e.g. STM32F4) with an interactive circuit simulator (such as Falstad). This would need to include at least GPIO and timer subsystems on the MCU side. I think this would be the hardest practical project from this list but would generate a ton of research papers if successful (balancing resource consumption and accuracy as you approach real time; getting 2+ independent simulations to communicate with one another; improving power consumption estimates for a complete embedded system simulation) plus identify a lot of future work (a Falstad protocol analyzer widget, a Falstad SD/SPI flash storage device).

* Improve existing tools: write a Ghidra or KiCad plugin, add new file types to binwalk, etc. One example for Ghidra would be auto-detection and naming of FreeRTOS functions which could be later generalized to other RTOSes/compilers/architectures/preprocessor (FreeRTOSConfig.h) settings.

* Try to improve dead reckoning performance of a mobile robot using its sensor data (perhaps without GPS) under heavy vibration, crosswinds, uneven/sloped/slippery terrain, and any other conceivable interference. (This can be a nice data-heavy AI/ML problem, but a lot of intelligent people have already explored this particular problem.)

* Create a website, documentation, and community presence for any of the aforementioned projects.

* Figure out any improvement to the state-of-the-art in efficient cardboard box packing/nesting. This is vastly explored, but new constraints (e.g. load from back with gravity, contents are not convex, strength/weight is now a factor, effort required to repack a partial unload after a "sea journey" or "intense truck driving") make it possible to break existing algorithms. Success here = PhD-worthy accomplishment and potential to commercialize, plus a pigeonhole for your academic career as an advisor

* Figure out if there would ever be a way to make internet hyperlinks bi-directional. That is: removing a served page should notify all known domains that link to the newly removed paged to remove their link, and if one of your own link targets is no longer found, automatically change the link target to archive.org. Could this be implemented into all the major FOSS web servers on an opt-in basis? Then, a web developer should expect their links to almost always work despite the actions of the linked domains. What are the strong reasons this should not happen? (I would start with "what are trusted domains" and "abuse potential" and "cost of computing/network resources")

(Finished editing)