everybody wants to know how to get better at programming.

    whether you're an absolute beginner or an expert looking to polish up their skills, programming challenges are a fantastic tool in the grand scheme of learning. as some may know, i've got a respository dedicated to the 4th edition of the "pro/g/ramming challenges", a set of challenges made by the technology community on 4chan. it's helped me immensely in practicing my skills, learning new languages, etc. - and it's even helped in landing contracts / jobs! after going over several sorts of these challenge posts (4chan, hackerrank, hackerone, etc.) i've decided to make my own challenge list.

    do these challenges in whatever language you wish. for a greater challenge, do it in a language you're not familiar with! the challenges will range in difficulty. if you get stuck, refer to stackexchange, IRC communities, catterchan, etc. so long as you don't look up exactly how to solve the challenges. there will be no penalty if you plagiarize, except that you'll be cheating yourself. rather than saving everything to directories on your device, push your files to a public repository using whatever means you please (git, SFTP, RFC 1149, etc.) so long as you're constantly pushing changes / new files.


difficulty levels by color

easy

medium

challenging

the great filter


practical

to-do list

P2P chat client and/or server

verlet cloth

youtube to MP3 converter

vim autocomplete plugin

terminal shell

text editor w/ autosave functionality

relational database engine

UDP port scanner

catterchan attachment downloader

save all current ethereum addresses to JSON

shazam! clone


algorithmic

99 bottles of beer

original feistel cipher implementation

ASCII barnsley fern

ASCII maze generator

fizzbuzz

music visualizer


games

tic tac toe

tetris clone

snake clone

doom clone

sudoku solver

towers of hanoi solver


artificial intelligence

watson clone (2010 model)

get a neural network of your creation to solve any of these challenges

neural network framework without external resources

customizable rougelike AI


modeling / emulation

rotate a cube

shuffle a deck of cards (with a visualizer)

spirograph simulator


language

lisp clone

implement an esoteric language of your design

make a program that mounts filesystems via the FUSE model

make a functional programming header file for c