By the end of his course, students will know how to implement lexical, syntactic and semantic analyzers, manually and using automation tools such as JLex and CUP. They will also have learnt or to implement a full compiler for the Decaf programming language.