Difficulty: HARD!
Assembler is the programming language next to binary.
Even though, you might never use it, it is always a good thing to learn it. So: find good tutorials for it and complete this challenge:
Complete Challenge #2 (Fibonacci) in Assembler.
A good starting point might be using Linux for it, as it has more tools to process ASM-Files (such as nasm and LD), but you might just use windows as well. Just remember: Assembler-code isn't compatible from one OS to the other.
EXTENSION:
If you want to build a compiler, you might want to use the plattform, wich is compatible with most of the systems, LLVM. Learn LLVM and complete Challenge 2 again. (I know, it's boring, but then, if you already completed #5, you will be able to build a little compiler for a script-language.)