Project Ideas

A. Math

Distance Tool

Calculate the distance between 2 points in 2 dimensions, 3 dimensions, and 4 dimensions. Calculating Distance Between Points in N Dimensions

First N-Digits of Pi

Calculate the first n-digits of pi, using whatever techniques you can find. Try to calculate at least 5 digits of pi.

Text to Binary

Create a function that can take any string (or char array) as input, and return that text in binary.

Text to Hexadecimal

Create a function that can take any string (or char array) as input, and return that text as its hexadecimal representation.

Prime Number Checker

Write a program that determines if a given number is prime or not.

Factorial Calculator

Calculate the factorial of a given non-negative integer.

Simple Statistics

Calculate the mean, median, and mode of a set of numbers.

Prime Number Checker

Write a program that determines if a given number is prime or not.

B. Color

RGB to HSL Converter

Take RGB values input (from 0-255), and convert them into HSL (Hue, Saturation, Lightness) (Output values normalized (between 0-1) or Output values scaled back to (360 degrees, 100%, 100%)) Convert RGB to HSL

RGB to HEX Converter

Take RGB values input (from 0-255) and convert into hexadecimal representation, complete with the ‘hash’ symbol. (e.g. rgb(255,255,255) = '#ffffff') Convert RGB to Hex

C. Game

Tip

Consider using libraries like curses (for terminal control) or Rich (for text formatting and styling) to enhance the visual appeal of your console games.

Tetris

Create a simple game that drops different shapes of blocks from the tops of the screen. The player then has to guide the block left and right to the bottom of the screen. The Tetris block should detect collision between the walls and other Tetris blocks. The player should also be able to hold down button, to make the Tetris block drop faster. If a horizontal row gets fully filled with Tetris blocks, then remove those Tetris block that are apart of the line. If the Tetris blocks go past the top of the screen, game over.

Tic Tac Toe

Create a simple interface for playing tic tac toe. 2 player or single player with a computer player. Can either make tic tac toe in the terminal or with a GUI.

Hangman

The game should be able to generate a random word for playing hangman. When the user select a letter from the list of available letters, if that letter is in the word, we reveal each letter that matches in the word and proceed to mark out that letter from the available letters. If no match in a word, that letter is marked out from the available letters, and the next stage of hangman is added to the game. (Rope, Head, Body, Left Leg, Right Leg, Left Arm, Right Arm). If the player guesses the word before timer or set amount of turns then the player wins.

Pong

Recreate the iconic Pong game with two paddles and a bouncing ball.

Breakout

Build a Breakout clone where players use a paddle to bounce a ball and break bricks.

Snake

Implement the classic Snake game where players control a snake that grows longer with each food item consumed.

Mastermind

Create a code-breaking game where players try to guess a secret code by making deductions based on feedback.

Quiz Game

Create a trivia game with multiple categories and difficulty levels. The user should be able to select a category, and difficultly level, and then answer a series of questions. At the end of the game, the program should give the player a percentage score based on how many they got correct.

D. Physics

E. Sound

F. Art

Image to ASCII art

Should be able to accept an image, and convert that image into a representation of the pixels, using ASCII characters.

Paint Clone

Create a simple application that mimics the basic features of Microsoft paint. Users should be able to draw on a canvas with at least 1 color, and should be able to save their drawings.

G. Communication

H. Web

Port Scanner

Create a simple program that simple scans the ports of the computer and shows which ones are being used.

Youtube Video to MP3

Should be able to input a video link from youtube, and should be able to extract the audio into an mp3 and save it.

Static Website Generator

(Scriptable Templates + Content HTML + CSS). Should be able to take some plain text content, some html templates, and create static html files (and css if needed) for each page of content.

I. Cryptography

Password Generator

Create a simple program that can generate password of varying levels of security. Or just one level of security, super secure. Should always generate a new password.

Other Resources

Collection of How to Think about Different Challenges