Write a C Complier from scratch (a sample C compiler but support most common features).
Implement optimizations: Common Sub-expression Elimination, Copy Propagation and etc.
Implement limited registers allocation, stack & heap allocation, virtual memory and etc.