Syllabus for CSC 450
Programming Languages and Compilers I
Fall 2006

Principles that govern the design and implementation of programming languages. Topics include formal languages, programming language syntax and semantics, parsing, interpretation, and code generation. Emphasis on design issues. (Prerequesites: CSC 320 and CSC/PHI 385 or concurrent registration.)

General Information.

    Instructor:     James Moen  
    Email:     moen@augsburg.edu  
    Phone:     612 330-1142  
    Office:     Sverdrup 203F  
    Office Hours:     To be announced  
    Classroom:     Sverdrup 202  
    Classroom Hours:     11:50-1:20 Tuesday, Thursday  

I'm often in my office at other times during the day, not just during my regular office hours. You may visit my office (almost) any time I am there. You may also telephone or send email at any time.

Textbook.

Kenneth C. Louden. Compiler Construction: Principles and Practice. PWS Publishing Company. Boston, Massachusetts. 1997. (ISBN 0-534-93972-4)

Assignments.

I'll assign homework every week or every two weeks, depending on its complexity. I'll accept homework up to one calendar day late, but with a 20% penalty. All submissions are final.

Most homework assignments will involve writing programs in the programming language Java. You must submit a listing of your program, and a copy of its actual output. Your programs will be graded both on correctness (are they free of errors?) and on style (are they easy to understand?).

If you turn in homework by email, you must attach it as an ASCII text file. Please don't use proprietary file formats (like Microsoft Word). My computer can't read them.

Examinations.

There will be two examinations in this course: a one-hour midterm and a two-hour final. Both examinations will be ``open book.'' To help you answer questions, you will be able to use your textbook, your class notes, and anything else handed out in class. See the schedule for (approximate) dates.

Grading.

I'll assign points for each homework assignment and examination. Your final grade will be based on the number of points you get during the term. About 60% of your grade will be determined by homework, and about 40% will be determined by examinations.

Honesty.

Students are expected to be familiar with Augsburg College's policies on academic honesty. You will be required to sign a statement indicating that you understand these policies. Although you may exchange ideas with other students, everything you turn in must be your own work. Copying assignments, or parts of assignments, is not permitted!

Schedule.

This schedule is approximate. I may change it during the term. Chapter numbers refer to the Louden text. I won't always follow the textbook exactly. Instead, I'll use it as outside reading to supplement the lectures.

    Sep 7     Chapter 1     Introduction. History.  
    Sep 12     Chapter 1     History. Course project. The language Snarl.  
    Sep 14     Chapter 2     Scanning.  
    Sep 19, Sep 21     Chapter 2     Scanning.  
    Sep 26, Sep 28     Chapter 3     Context-free grammars. Parsing.  
    Oct 3, Oct 5     Chapter 3     Context-free grammars. Parsing.  
    Oct 10, Oct 12     Chapter 3     Context-free grammars. Parsing.  
    Oct 17, Oct 19     Chapter 4     Top-down parsing.  
    Oct 24, Oct 26     Chapter 4     Top-down parsing.  
    Oct 31       Midterm examination.  
    Nov 2     Chapter 5     Bottom-up parsing.  
    Nov 7, Nov 9     Chapter 5     Bottom-up parsing.  
    Nov 14, Nov 16       Symbol tables. Type checking.  
    Nov 21       Symbol tables. Type checking.  
    Nov 23       No class.  
    Nov 28, Nov 30       Symbol tables. Type checking.  
    Dec 5, Dec 7       The MIPS computer.  
    Dec 12, Dec 14       The MIPS computer.  
    Dec 19       Final examination. (10:15 AM-12:15 PM)