From 7c1a1df1582aad60dca7510bc28d0fd948558a1d Mon Sep 17 00:00:00 2001 From: Lihui Zhang Date: Wed, 11 Jun 2025 18:50:02 -0400 Subject: [PATCH 1/2] Sort project ideas by alpha order --- wiki/resources/general/project-ideas.md | 99 +++++++++++++------------ 1 file changed, 51 insertions(+), 48 deletions(-) diff --git a/wiki/resources/general/project-ideas.md b/wiki/resources/general/project-ideas.md index fba0ca5..6bb35ec 100644 --- a/wiki/resources/general/project-ideas.md +++ b/wiki/resources/general/project-ideas.md @@ -19,23 +19,23 @@ is meant to be a source of inspiration rather than a list of projects to make. ## Videogames and Graphics -- Snake game -- Tetris -- Minesweeper -- Hangman -- Tic-Tac-Toe - - Hard mode: [Ultimate Tic-Tac-Toe](https://en.wikipedia.org/wiki/Ultimate_tic-tac-toe) - Battleships -- Write a raytracer[^raytracing] -- Make a platformer game -- Tower defense game -- DOOM clone - Blackjack -- Mancala -- Single-player survival game -- Dungeon crawler console game[^dungeon] - [Breakout]() game - [Cookie clicker](https://orteil.dashnet.org/cookieclicker/)-like game +- DOOM clone +- Dungeon crawler console game[^dungeon] +- Hangman +- Hard mode: [Ultimate Tic-Tac-Toe](https://en.wikipedia.org/wiki/Ultimate_tic-tac-toe) +- Make a platformer game +- Mancala +- Minesweeper +- Single-player survival game +- Snake game +- Tetris +- Tic-Tac-Toe +- Tower defense game +- Write a raytracer[^raytracing] [^raytracing]: For an introduction to concepts see @@ -81,42 +81,45 @@ is meant to be a source of inspiration rather than a list of projects to make. ## Applications and Tools +- Calendar - Text editor - To-do list -- Calendar - Version control system (like git) ## Algorithmic and Number Crunching +- [Caesar cipher](https://en.wikipedia.org/wiki/Caesar_cipher) encoder/decoder + - Bonus: Make an auto-decoder which makes guesses based on + [frequency analysis](https://en.wikipedia.org/wiki/Frequency_analysis) +- Chess engine +- Data compression[^compression] +- Given an amount of money, convert it to the fewest number of bills and coins +- [Julia set](https://en.wikipedia.org/wiki/Julia_set) fractal +- [Mandelbrot set](https://en.wikipedia.org/wiki/Mandelbrot_set) fractal + - Bonus: Make a visual representation of the iterative steps- [Nonogram](https://en.wikipedia.org/wiki/Nonogram) generator +- Maze generator +- Maze solver +- Pi calculator - Prime number checker -- Sieve of Eratosthenes - Rubix Cube solver -- Pi calculator +- Sieve of Eratosthenes +- Sudoku solver - Test the Collatz Conjecture for large numbers - - Bonus: Make a visual representation of the iterative steps -- [Mandelbrot set](https://en.wikipedia.org/wiki/Mandelbrot_set) fractal -- [Julia set](https://en.wikipedia.org/wiki/Julia_set) fractal -- Maze solver -- Maze generator - Traveling salesman problem -- Data compression[^compression] -- [Nonogram](https://en.wikipedia.org/wiki/Nonogram) generator -- Sudoku solver -- Chess engine -- Given an amount of money, convert it to the fewest number of bills and coins -- [Caesar cipher](https://en.wikipedia.org/wiki/Caesar_cipher) encoder/decoder - - Bonus: Make an auto-decoder which makes guesses based on - [frequency analysis](https://en.wikipedia.org/wiki/Frequency_analysis) [^compression]: Hint: Start with learning about [Huffman Coding](https://en.wikipedia.org/wiki/Huffman_coding) ## Scientific Computing and Simulation -- Electrical circuit simulator -- Simulate collisions of a bunch of balls -- N-body simulation +<<<<<<< HEAD:wiki/resources/general/project-ideas.md +======= - Agent-based simulation[^agents] +- [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) +>>>>>>> 736e3b6 (Sort project ideas by alpha order):src/resources/general/project-ideas.md +- Electrical circuit simulator - Fluid simulation[^fluids] +- N-body simulation +- Simulate collisions of a bunch of balls ### Cellular Automata @@ -136,37 +139,37 @@ is meant to be a source of inspiration rather than a list of projects to make. ## Data Structures -- Linked list -- Dynamic array / vector - Binary tree - Explore traversing the tree (pre-order, in-order, post-order) - Implement a binary search tree +- Dynamic array / vector - Hash table - LRU cache (a fixed size cache which evicts the oldest items when needed) +- Linked list ## Concurrency and Parallelism -- Spin lock -- Thread pool +- Explore CUDA +- Explore x86 SIMD - Message passing interface - Parallel matrix multiplication algorithms -- Explore x86 SIMD -- Explore CUDA +- Spin lock +- Thread pool ## Parsers, Compilers, and Interpreters - CSV parser -- JSON parser -- Parse and evaluate simple math formulas (e.g. `1 + 2 * 3`)[^expressions] -- [BrainF\*ck](https://en.wikipedia.org/wiki/Brainfuck) interpreter - - For extra challenge: Create an optimized interpreter or JIT compiler - Create a simple interpreter or compiler - - Check out [Crafting Interpreters](https://craftinginterpreters.com/contents.html) for a great tutorial on relevant - concepts - Also check out out list of [Compiler Development Resources](../advanced/compiler-development.md) + - Check out [Crafting Interpreters](https://craftinginterpreters.com/contents.html) for a great tutorial on relevant + concepts +- JSON parser - Lisp interpreter - Lua interpreter +- Parse and evaluate simple math formulas (e.g. `1 + 2 * 3`)[^expressions] - Regular expression parser / evaluator +- [BrainF\*ck](https://en.wikipedia.org/wiki/Brainfuck) interpreter + - For extra challenge: Create an optimized interpreter or JIT compiler [^expressions]: Hint: It may be helpful to learn about @@ -177,20 +180,20 @@ is meant to be a source of inspiration rather than a list of projects to make. ## Systems Programming - 8 bit computer emulator, e.g. for [CHIP-8](https://en.wikipedia.org/wiki/CHIP-8)[^chip-8] -- Implement a simple malloc -- Write a Shell -- Disassembler - Assembler +- Disassembler +- Implement a simple malloc - Simple operating system kernel +- Write a Shell [^chip-8]: Here's a helpful guide to get started with CHIP-8: https://tobiasvl.github.io/blog/write-a-chip-8-emulator/ ## Networking -- Simple chat application over TCP - Implement a simple HTTP server - Implement the [RCON](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol) protocol (used for issuing commands to some game servers, like Minecraft) +- Simple chat application over TCP ## Problem Sets From 90e04ca6bc4efc02aff80403dcd1e7badd482f15 Mon Sep 17 00:00:00 2001 From: Lihui Zhang Date: Sun, 20 Jul 2025 15:05:49 -0400 Subject: [PATCH 2/2] Fix order of compile dev resources --- wiki/resources/general/project-ideas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/resources/general/project-ideas.md b/wiki/resources/general/project-ideas.md index 6bb35ec..f23db1b 100644 --- a/wiki/resources/general/project-ideas.md +++ b/wiki/resources/general/project-ideas.md @@ -160,8 +160,8 @@ is meant to be a source of inspiration rather than a list of projects to make. - CSV parser - Create a simple interpreter or compiler - - Also check out out list of [Compiler Development Resources](../advanced/compiler-development.md) - Check out [Crafting Interpreters](https://craftinginterpreters.com/contents.html) for a great tutorial on relevant + - Also check out out list of [Compiler Development Resources](../advanced/compiler-development.md) concepts - JSON parser - Lisp interpreter