What We Hope To Accomplish This Semester
Programming Languages and Paradigms
Our Objectives This Semester
our first session,
we discussed the goals of this course in very broad terms. Such a
discussion is useful for getting a "feel" for the course but does
little to prepare you for the tasks ahead. Now let's state what we
intend to accomplish in greater detail. At the end of this semester,
you should be able to:
- Write a functional program in Racket and, to the extent possible,
in other languages you know.
- Explain what distinguishes functional programming from
imperative programming, both procedural and object-oriented.
- Explain the behavior of the following features in a program:
- identifiers and variables
- different types of control flow
... including recursion
- different types of scope
- syntactic sugar
- objects and inheritance
- Implement, modify, or enhance an interpreter to have such
- Identidy the data structures and algorithms used in
interpreting programs and describe their role.
- Compare alternatives in the design and implementation of
These skills are the essential ideas in the study of programming
- They enable you to learn new languages more quickly,
by mapping ideas from this course to the new language.
- They help you to read language reference manuals
more effectively -- and write them, when necessary.
- They help you to program more effectively,
by understanding better the tools that you use (languages,
compilers, and interpreters).
- They enable you to design and implement new languages,
if only as a component in another large program. (Some
programs evolve into being a language!)
With a new mindset about languages, you will be more inclined
to learn how to program the environments you use, including
tools such as bash, emacs, and Eclipse. (One of my favorite
examples from an alumnus: a Flash plug-in to Zend.)
Eugene Wallingford .....
January 11, 2018