Credit Level: Undergraduate. Credit Hrs: 3.00.
Helpful background: Functional and Logic Programming,
Object Oriented Programming (e.g. experience with Java or C++)
Meets: 11:15AM-12:10PM, Monday, Wednesday, Friday in Braunstein 300
Grader: TBA - Arrange a meeting time individually.
Course material: my notes, web pages, reference texts
The course covers various significant concepts and features in the
design and implementation of modern programming languages. Topics
include various parameter passing mechanisms, dynamic and static scope
rules, dynamic and static binding of subprogram names to subprogram
bodies, dynamic and static data typing, eager and lazy expression
evaluation, procedural and non-procedural languages, garbage
collection and memory management, type safety and non type safety,
compilation and interpretation.
Students will write programs in a functional style and in a
logic-programming style, in Scheme, Haskell, and Java (instead
of Prolog). Students will learn significant aspects of one or more of
the above programming languages on their own, from reading (texts and
manuals), from interpreting underlying language principles, and from
experimentation. Students will organize problem data in terms of
appropriate relations. Students will describe problem requirements in
terms of formal logic.
Students will learn a specification language and use it to verify the
correctness of a simple program.
Based upon problem description and solution requirements, students
will select an appropriate programming methodology (imperative,
functional, or logic) and explain the reasons for that choice.
Call by value, call by value-result, call by reference, call by name,
type safety, type theory, thread safety, memory safety, functional language,
procedural language, imperative language, declarative language, monad,
garbage collection, formal semantics, syntax, lexical scope, dynamic scope,
static scope, name binding, name resolution, information hiding, stack, heap,
continuations, call with current continuation, virtual functions.