CSC 478/678: Compiler Construction