2. Search for images of "procedural generated art" - there are TONS of these. Pick a pretty/simple one and try to reproduce it.
3. Pick an esoteric programming language (http://esolangs.org/wiki/Main_Page) that doesn't yet have an interpreter/compiler and write one for it.
4. Pick an old piece of hardware and write an emulator for it: old consoles and home computers (NES, Commodore64, CHIP-8, etc). While writing the emulator you're going to need an assembler, disassembler and debugger to have any chance at debugging - these are bonus.
5. Try to port something to the GPU, something that's really awkward/challenging to port. Like a small lisp interpreter - I've no idea how to do that; early shader models aren't even turing complete.
2. Search for images of "procedural generated art" - there are TONS of these. Pick a pretty/simple one and try to reproduce it.
3. Pick an esoteric programming language (http://esolangs.org/wiki/Main_Page) that doesn't yet have an interpreter/compiler and write one for it.
4. Pick an old piece of hardware and write an emulator for it: old consoles and home computers (NES, Commodore64, CHIP-8, etc). While writing the emulator you're going to need an assembler, disassembler and debugger to have any chance at debugging - these are bonus.
5. Try to port something to the GPU, something that's really awkward/challenging to port. Like a small lisp interpreter - I've no idea how to do that; early shader models aren't even turing complete.