This is a project I start wanting to know how to best assign registers to variables. It grew from that and went into exploring things like SSA forms and constants propagation. It was a lot of fun (and pain) working on it, and I learned a lot on how compilers are built.