A community project of programming challenges based on this
- fork the project
- submit issus to tell me you participe and send me the link of your fork
- when you finish a project, check the corresponding box in the README in your fork
-
Do your own research. It’s an incredibly useful kill which can be applied to and can be applied to anything else.
-
If a problem seems difficult, good! Draw it out, write it out, do whatever you need to do to solve it
-
If the problem you’re solving is too easy, brainstorm and try adding additional functionality. Try combining it with other ideas to make your software more challenging
-
Take the language you’re most familiar with to start your project. If the problem is too easy, pick a language you’ve never used.
-
Don’t be afraid to write awful code and don’t worry about the best implementation. Get a working implementation first, then refactor and clean it up
-
Write test cases for your program. Get used to thinking about how you can break your software.
-
Find problems, bugs, and fix them. Repeat over and over again and document it. Throw it together in your portfolio (don’t forget to commit!)
- Now that you have something together with lots of documentation and experience, try a different language and try to match it as closely as possible to your first implementation. Add features, try new techniques, new styles. Go crazy!
- Now that you’ve gotten this far, don’t stop trying to challenge yourself. Keep a portfolio/blog/diary and keep adding to it
- Wikipedia
- Stack Overflow
Seriously, this is all you’ll ever need. If you aren’t getting results, you aren’t doing your research properly. With these three websites, you’ll find your answers. If they don’t exist, make a thread. By doing so, you help other people out too!
Remember: if you make a new topic for a new problem anywhere,write down the solution if someone PM’d you. It helps people a lot and encourages them to do the same
- Knuth: The Art of Computer Programming
- Siena: The Algorithm Design Manual
- Carmen et al: Introduction to Algorithms
- Russel: Artificial Intelligence: A Modern Approach
- Abel son: Structure and Interpretation of Computer Programs
Below is a s small list of websites that contain additional challenges
- www.hackerrank.com
- www.codechef.com
- www.codefights.com
- www.projecteuler.net - Math Problems with a focus on programming and algorithmic efficiency
- www.rosettacode.org
- www.codeabbey.com
- www.codingbat.com
- www.programmingpraxis.com
An list of programming challenges with 4 difficulties
Easy:
-
- Markov Chain Sentence Generator (Include Shitposting Capabilities)
-
- To-Do List Application (Web app or CLI)
-
- Chatbot (with conversation retention)
-
- Image to ASCII Art
-
- Imageboard (Imagine vichan)
-
- Create an HSV Color Representation
-
- Port Scanner
-
- Old School Demo Effect (Plasma, Tunnel, Scrollers, Zoomers, etc...)
-
- PDF Tagger
Medium:
-
- Download Manager
-
- Make an elastic producer/consumer task queue
-
- IRC Client
-
- English Sentence Parser that Points to the Context of a Sentence
-
- MIDI Player + Editor
-
- Stock Market Simulator Using Yahoo Spreadsheet Data
-
- Graphing Calculator
-
- BONUS: Graph the Function's Derivatives
-
- TCP/UDP Chat Server + Client
-
- Shazam
-
- Curses Text Editor (with Emacs / Vim keybindings)
-
- Paint Clone
-
- Booru (Image Board) Image Downloader
-
- Image Converter
-
- ID3 Reader
-
- C++ IDE Plugin for Sublime/Atom (Auto-Complete, Go-To Symbol Declaration and Definition using Clang's AST)
-
- Simple Version Control supporting checkout, commit (with commit message), unlocking, and per-file
-
- Password Manager
-
- Key Press Bot
-
- IP/URL Obsucrification (http://www.pc-help.org/obscure.htm)
-
- Radix Base Converter (Given a radix base, convert it to decimal)
-
- Encrypt a File, and Upload it online
-
- Window Manager
-
- Pixel Editor
-
- Trivial File Transfer Protocol (TFTP): Allow a client to put a file onto a remote host
-
- Markdown (HTML/XML) Editor
-
- IP Tracking Visualization
-
- Bellman-Ford Simulation with at least Five Vertices
-
- Matrix Arithmetic
-
- File Compression Utility (Make it GUI)
-
- Calculate Dot and Cross Product of Two Vectors
-
- Bismuth Fractal
-
- Seam Carving
-
- Bayesian Filter
Difficult:
-
- Parametric/Graphic Equalize for .wav files (Make it real-time)
-
- Verlet integration (Verlet Cloth)
-
- Music Streaming
-
- Sound Synthesis (Sine, square, sawtooth, etc...)
-
- Create a Torrent Client (CLI or GUI)
-
- Booru Client
-
- Chan aggregator (Let's user view various boards from different 'chans')
-
- BONUS: Add 4ChanX and Archiving Functionality
-
- Make a Text Editor that autosaves and includes the date in the filename
-
- Nonogram Generator and Solver
-
- WMS viewer that isn't web based
Extreme:
-
- Sound Synthesis (Sine, square, sawtooth, etc...) mode: Realtime MIDI Playback with Custom instruments
-
- Basic Relational Database Software (SQL Support, Handle Relationships, Focus on Efficiency)
Easy:
-
- Fizzbuzz
-
- BONUS: In Assembly
-
- RPN Calculator
-
- Counts occurences of characters in a Given String (include support for unicode characters)
-
- Towers of Hanoi
-
- Calculate the first (n) digits of pi
-
- Given an Array of Stocks's values over time, find the period of time where the stocks could have made the most money
-
- Highest Prime Factor Calculator
-
- Password Generator (Let User Choose Options)
-
- Caesar Cipher Cracker
-
- ROT 13
-
- Encrypt/Decrypt Text : Implement at least one from http://rumkin.com/tools/cipher
-
- Youtube To MP3
-
- Text to Hexadecimal/Binary
-
- Sierpinski Triangle
-
- Ulam Spiral
Medium:
-
- Music Visualizer
-
- Unicode Converter (Support for UTF-8, 16LE, 32LE, and 32BE)
-
- Least Squares Fitting Algorithm
-
- Hide and Extract Data in images (Basic Steganography)
-
- Bonus: Include .gif support
-
- Web Page Crawler
-
- Vignére cipher encryption/decryption
-
- Game Of Life
-
- Dijkstra's Algorithm
-
- Program that displays MRB Contents
-
- Random Name Picker
-
- Calculate the first 1.000 digits of pi iteratively
-
- Mandlebrot Set
Easy:
-
- Basic Neural Network - Simulate individual neurons and their connections
Medium:
-
- AI for Roguelikes
-
- Sudoku/n-Puzzle Solver using A* alogrithm
-
- Connect-4 AI Player using Alpha-Beta Pruning
-
- Real Neural Network - Implement a basic feed-forward neural network using matrices for entire layers along with matrix operations for computations
-
- Convolutional Neural Network: Implement a convolutional N.N. for a handwritten digit recognition, test on MNIST dataset (Use TensorFlow, Theano, etc...)
Difficult:
-
- OpenAI Gym project
-
- Convolutional Neural Network: Implement your own convolutional neural network for handwritten digit recognition, test, on MNIST Dataset (Without TensorFlow, Theano, etc...)
Medium:
-
- Virtual Machine with a Script that Writes "Hello, world"
-
- Terminal Shell (Executable Binaries, Pipe System, Redirection, and History)
-
- BONUS: Make it a GUI
-
- HTML + JavaScript Debugger
-
- Write an Interpreted LISP-like Programming Language
-
- Universal Asynchronous Receiver/Transmitter (UART) Game
-
- Static Website Generator (Scriptable Templates + Content -> HTML and CSS)
Difficult:
-
- Make an application that is capable of mounting filesystems from other OSes using the FUSE model
-
- Pong Game as a UEFI file in color (hint: http://www.rodsbooks.com/efi-programming/index.html)
-
- Design an Esoteric Language
-
- C Compiler
-
- Turing Machine Simulator
-
- Read, Evaluate, Print Loop using a compiled language
-
- LISP Interpreter
Extreme:
-
- Basic Bootloader (with extended file system)
Easy:
-
- Generate a Complimentary Color from any input color
-
- Eulerian Path
-
- Draw a spinning 3D Cube
-
- Cellular Textures
-
- ASCII Digital Clock
Medium:
-
- Chip - 8 Emulator
-
- Double Pendulum Simulation
-
- Constructive Solid Geometry
-
- Generate a 5-Color Scheme from the most dominant tones in any image
-
- N-Body Simulator, with particles having a certain mass and radius depending on the mass that merge if they collide
-
- BONUS: Include a GUI where you can place particles
Difficult:
-
- Chip - 8 Emulator (with Cached Interpreter)
-
- Ray Tracer
-
- Realt-Time Fast Fourier Transform Spectrum Visualizer
-
- TI-86 Emulator
-
- BONUS: Include the Option to Create Programs
Extreme:
-
- Chip - 8 Emulator (with Dynamic Recompiler, use dynarec/jit library)
-
- General Lambert's-Problem Solver (At least it's not rocket science... Oh wait, it actually is)
Easy:
-
- Snake
-
- Rock Paper Scissors
-
- Design a Game Engine in Unity
-
- Yahtzee
-
- Oil Panic
-
- Connect Four
-
- Simon
Medium:
-
- Knight's Tour
-
- Tetris
-
- Pipe Dreams
-
- Pac Man, With Different Behaviors for each ghost
-
- Shuffle a Deck of Cards (Include a Visualization)
-
- Simulate a game of Tag using a multi-agent system
-
- Scorched Earth Clone
-
- Minesweeper
-
- An Audio/Visual 64KB Demonstration
-
- Sudoku
-
- Chess
-
- Mastermind
-
- Missile Command Game
-
- Tron
-
- Breakout
Difficult:
-
- Monster Raising/Breeding Simulator
-
- Dragon Quest / Basic RPG Engine
-
- First-Person Engine in OpenGL (Walking, Looking Around, Jumping on Obstacles)
-
- BONUS: VR Compatibility
-
- Wolfenstein Clone (FPS, two-dimensional map that appears to be 3-D) (If you need a starting point, search for bisquit's video about DOOM-like Engines)
-
- Danmaku (Bullet Hell) Engine
-
- Roguelike Engine/Dungeon Generator
-
- Go (No AI Necessary)