CS 481: Compilers

Fall 2008 Course Syllabus

Northern Arizona University • College of Engineering and Natural Sciences • Department of Computer Science

Course Information

Catalog Description 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 Information

Instructor: Abe Pralle (Prah-lee), M.Eng. CSE
Office Hours:
Engineering Bldg. Rm 322-L
MWF 10:20-11:10
TuTh 11:00-12:00
Other times by appointment.
Email: Abe.Pralle (at) nau.edu
Phone: 523-8882 (email preferred)
NAU Address: Box 15600
Flagstaff, AZ 86011

Course Description

Whether you are interested in writing your own domain specific or general-purpose languages or in simply reading data files and user input in an intelligent way, this course teaches the basic techniques for designing languages, parsing and analyzing source code, generating usable output, and managing run-time environments.

By the end of the semester you will be able to:

Schedule

Week 1Introduction and overview (Ch1)
Week 2Language processors, scanning (Ch2,3)
Week 3Parsing (Ch4)
Week 4Analysis (Ch5)
Test 1
Week 5Analysis
Week 6Runtime organization (Ch6)
Week 7Runtime organization
Week 8Procedural code generation (Ch7)
Test 2
Week 9OO code generation
Week 10VM ISA
Week 11VM interpreter
Week 12Templates
Test 3
Week 13Arrays
Week 14Shorthand Ops, Exceptions
Week 15Optimization, AOP
Week 16 Final Exam

Coursework and Grading

The coursework includes the following assignments and tests:

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.

Attendance

Attendance is not mandatory. However, you'll miss important concepts if you don't come, so try and make it.

Lectures and the Book

The lecture topics follow the same general outline as the book. However, the lecture complements the book rather than being a mirror of it. If you only read the book or only pay attention to the lecture you're likely to end up missing some key concepts. To get the most from the class, read each chapter before we discuss the corresponding topic in the lecture, then use the lecture as an opportunity to reconsider the key points of the material and ask questions on anything you're confused on.

Plagiarism and Cheating

Grades are a way to motivate students and to evaluate students' mastery of a subject and their ability to get work done. The grades you get are not themselves truly important, but instead are representative of your knowledge, capabilities, and work ethic, and those are the things that matter.

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.

Web Page

Most assignments and handouts will only be available on the class web page at http://www.cefns.nau.edu/~ap27/cs481 - they will not be handed out in class. Projects will be posted at least a week before they're due - usually the next project will be posted on the same day as the old project is due. Any clarifications or corrections will be posted on the web page. Completed projects should be submitted as a hard copy.

University Policies

There are a number of university policies that govern your education and safety that all students should be aware of. These are:

You will find a complete description of each policy here:

http://www.cefns.nau.edu/~ap27/policies.html