Algorithmic Languages and Compilers
|Hours||3.0 Credit, 3.0 Lecture, 0.0 Lab|
|Prerequisites||C S 340|
|Note||Students are allowed 1 repeat of each C S undergraduate course (all 100-, 200-, 300- or 400-level courses). This includes all students who received any grade including those who withdraw (receive a "W" grade) from a C S course. Students must wait 1 semester/term before being allowed to take a course they have failed twice. Petitions for exceptions to the policy can be completed at cs.byu.edu/undergraduate-handbook/retake-policy-cs-courses/.|
|Programs||Containing C S 431|
Write a compiler
Implement a fully functional compiler for a subset of the Java language that targets an embedded microprocess.
Use interesting data types and algorithms in a large program
Apply patterns and common data structures to compiler constructrion including tree traversal, graph algorithms, and proof systems.
Apply techniques from compiler construction to other problem
Students are able to synthesis algorithms and techniques from compiler constructor to other problem domains.
Mental model of compilation
Students have a sound mental model of how an abstract high level language is systematically transformed into a low-level machine langauge or byte code. Students are able to use that understanding to write better application code.