CS152 Compiler Design Spring'19, Fall'19, Fall'20
CS152 answers one fundamental question in computer science – how a program written by human gets understood by a machine? This course goes through the major phases in code compilation, including 1) lexical analysis; 2) syntactical analysis; 3) semantic analysis; 4) intermediate code generation; 5) code optimizations; and 6) machine code generation.
- CS179K Project in Computer Science (Software Engineering) Winter'18
CS180 Introduction to Software Engineering Fall'15, Fall'16, Fall'17, Fall'18, Spring'20, Spring'21
CS180 is an evolving course. Its contents have been updated in recent years, with a goal to cover more practical aspects of software engineering with hands-on experiences. The contents are driven by a team-based course project that develops a modern web or mobile app with advanced features. Major topics of this course include software process (agile methods, Scrum, and XP), software design (design patterns, UML, DFD, and FSM) and architecture (Layered and MVC), software implementation (web technologies and Android), software testing (white-box and black box) and verification (Hoare logic), software delivery (continuous integration and delivery), and software maintenance (bug reporting and code refactoring).
CS201 Compiler Construction Winter'16, Winter'17, Winter'18, Winter'19, Winter'20, Winter'21
CS201 is an advanced compiler course. It starts with the internal code representations - intermediate representations (IR), such as control-flow graph (CFG) and single-static assignment (SSA), followed by a series of program optimizations internally performed by compilers, such as value numbering, common subexpression elimination, strength reduction, partial redundancy elimination, dead code elimination, and etc. The course has an emphasis on data-flow analysis, which has found many applications not only in compilers for code optimizations, but also in software engineering for program understanding and in computer security for vulnerability checking.
- CS260 Advanced Topics on Parallelism Exploitation Spring'17