CS341 Programming Languages (Fall 2006)Pre-requisites: CS142 or
Instructor: Christino Tamon
Center 354 TR 8:00-9:15pm
Office hours: TR 9:15-11am,
Contact: Science Center 373, email:
This course examines the major paradigms underlying modern
programming languages. The course currently focuses on functional and logic
programming paradigms. The rationale of the paradigm is discussed along with
typical programming idioms used with them. Programming exercises are used to
illustrate concepts. The course aims to make students reasonably comfortable
with the programming languges that will be studied.
GRADING: Assignments and Quizzes 40%, Midterm 20%, Final 40%
Daniel P. Friedman and Matthias Felleisen, "The Little
Schemer," 4th edition, The MIT Press, 1996.
William F. Clocksin and
Christopher S. Mellish, "Programming in Prolog," 5th edition, Springer, 2003.
Max Hailperin, Barbara Kaiser, and Karl Knight, "Concrete
Abstraction," out of print.
The main objective of the course is to introduce
major paradigms underlying programming languages, which include the functional
and logic programming paradigms.
The specific outcomes include:
- Working knowledge of the functional programming language Scheme.
- Working knowledge of the logic programming language Prolog.
- Basic knowledge of implementation issues behind the above programming
Although attendance is not mandatory, students are responsible
for all course materials covered in lectures and any exams given during class
periods. Students that need to make up missing course work must provide the
required Clarkson official exempt form. All students must submit their own
work; the exchange of ideas are encouraged but ultimately the submitted work
must be the student's own. Please refer to the Clarkson University Regulations
for more guidelines on academic integrity and related matters.
- A discussion of some paradigms of programming: procedural/imperative vs
object-oriented vs functional.
- Introduction to Scheme: MIT Scheme or DrScheme (from Rice University).
- Basic operations on "lists" (numbers): car (last), cdr (rest), cons
(join), append (concat), filter, map, accumulate.