| Catalog |
Theory and techniques of constructing compilers for programming languages. |
| Prerequisites: | CS 315 and CS 396. |
| Co-requisites: | None |
| Skill Level: | Advanced |
| Prerequisite Skills: | File I/O, exception handling, list and tree manipulation, state machine theory, principles of computer languages. |
| Credit Hours: | 3 |
| Meeting Time: | (10206): 4:10-5:25 MW, Engineering Room 120 |
| Final Exam: | 3:00-5:00 on Monday, December 8. |
| Required Text: | Watt & Brown, " Programming Language Processors in Java: Compilers and Interpreters". Prentice Hall, 2000. ISBN 0130257869 |
| Web Page: | http://www.cefns.nau.edu/~ap27/cs481 |
| Instructor: | Abe Pralle (Prah-lee), M.Eng. CSE |
| Office Hours: |
|
| Email: | Abe.Pralle (at) nau.edu |
| Phone: | 523-8882 (email preferred) |
| NAU Address: | Box 15600 Flagstaff, AZ 86011 |
By the end of the semester you will be able to:
| Week 1 | Introduction and overview (Ch1) |
| Week 2 | Language processors, scanning (Ch2,3) |
| Week 3 | Parsing (Ch4) |
| Week 4 | Analysis (Ch5) Test 1 |
| Week 5 | Analysis |
| Week 6 | Runtime organization (Ch6) |
| Week 7 | Runtime organization |
| Week 8 | Procedural code generation (Ch7) Test 2 |
| Week 9 | OO code generation |
| Week 10 | VM ISA |
| Week 11 | VM interpreter |
| Week 12 | Templates Test 3 |
| Week 13 | Arrays |
| Week 14 | Shorthand Ops, Exceptions |
| Week 15 | Optimization, AOP |
| Week 16 | Final Exam |
Programming projects are where you put your knowledge you've learned into practice, transitioning from the theoretical to the practical with hands-on experience. Projects are awarded a letter grade (A,B,C,D,F) based on the completeness and quality of your work and the thoroughness of your project report.
Homework assignments involve research using book and online resources to answer specific questions. They help to fully prepare you for and familiarize you with the current lecture topics. Points are awarded for correct answers.
The tests and the final are an incentive for you to ensure you fully understand the topics being covered - as well as demonstrating that fact to the instructor. Points are awarded for correct answers.
This is an upper-division, project-heavy course and you are expected to demonstrate a corresponding level of responsibility, initiative, and output. Consequently, completing each project on-time while meeting the minimum requirements will ensure an "average" project grade of "C", with higher grades given as warranted by the amount of ambition, completeness, and polish evident in your project and report. Similarly, late or incomplete projects will be penalized appropriately. All work is individual effort.
If you plagiarize source code, fabricate results, make fraudulent claims, or attempt to cheat in any way, you are misrepresenting yourself, your level of understanding, your capabilities, and your ability to accomplish things. It is dishonest and unethical.
Anyone who plagiarizes, copies, fabricates, or cheats will at the least receive a zero on that assignment or test.
Consulting with others and using their advice on projects is fine. However, the work you submit should be your own work that you thoroughly understand and are entirely responsible for.
You will find a complete description of each policy here: