UMBC CMSC631 -- Fall 2002
Principles of Programming Languages
Section 0101
Instructor: Professor Charles Nicholas
Office: ECS 211
Phone: 410-455-2594
email: nicholas@cs.umbc.edu
Days/time: T Th 2:30-3:45
Classroom: UC 310
Topics
- Introduction (one week)
- Attribute grammars (two weeks)
- papers by Knuth and Paakki
- design of a simple AG language
- Introduction to Functional Programming in ML (two weeks)
- LISP vs ML
- example programs in ML
- Language Translation (four weeks total)
- parsing (top down vs bottom up) (one week)
- compiler construction tools lex and yacc (one week)
- the tools ML-lex and ML-yacc (one week)
- design of an AG evaluator (one week)
- Program Semantics
- axiomatic semantics, Hoare and Guttag (one week)
- Run-time issues (two weeks total)
- native vs virtual machine
- Java virtual machines (one week)
- garbage collection (one week)
- Survey of languages
- student presentations (three weeks)
Minor changes to this list, e.g. the exact dates when topics will be started,
may be made.
Course Objectives
The objectives of this course include:
- To present an overview of principles that guide design and implementation
of programming languages
- To give some experience in writing programs in a functional programming
language
- To present an overview of syntax-directed translation, programming language
semantics, parsing, and tools
- To present an overview of run-time issues, e.g. storage management, dynamic
binding, and library call resolution
- To survey important contemporary programming languages
- To give studens project and presentation experience
Resources
We'll be reading a number of papers from the literature. The
Resource List.
Grading Policy
The midterm will count 15%, and the final will count 20%. The student presentations
will count 10%. The remaining 55% will be divided among the phases of the semester
programming project.
Academic Honesty
Academic misconduct will not be tolerated. Any work that you submit for credit
is to be your work. For homework and programming projects, general discussion
with your classmates regarding project requirements or the approach to be taken
is permitted. The solutions must be yours. Electronic submission of programming
assignments may be required, and software that measures similarity between submitted
projects will be used. Possible penalites for misconduct will include zero points
on that assignment (homework or project), reduction in the final grade for the
course, or an "F" in the course.
If you aren't sure if a specific action constitutes misconduct, ask me first.
Office Hours
I will be available for questions after class, from 4-5pm Tuesdays and Thursdays.
At other times, if I'm in my office, I'll answer your questions or we can agree
on some other time to meet.