Syllabus for CSC 450
Programming Languages and Compilers I
Weekend College
Winter 2007

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:     1:00 PM-5:00 PM Saturday  

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 class period, or every other class period, depending on its complexity. Most assignments will be components of a single large programming project, which you will start in CSC 450, and finish in CSC 451. As a result, I will not hand out answers to assignments as I do in my other WEC courses. Assignments will be accepted 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.

    January 13     Chapter 1     Introduction. History. The programming language Snarl.  
    January 27     Chapter 2     Regular languages. Scanning.  
    February 3     Chapter 3     Context-free languages. Syntax diagrams. Recursive descent parsing.  
    February 17     Chapter 4, 5     Midterm Examination. Top down parsing. Bottom up parsing.  
    February 24       Symbol tables. Types. Type checking.  
    March 10       The MIPS computer.  
    March 24       Final examination.