CS250 Symbolic Computation
Instructor: Christino Tamon
Lectures: MWF 11:00 SC162
Office hours: MW 08:00-10:00am, F 9:00-10:00am SC373
Contact: SC373, email@example.com
Syllabus: A course that introduces symbolic
computation and functional programming. Topics covered include
building abstractions with procedures and with data (recursion, higher-order
procedures, compound and hierarchical data) and controlling interactions
(generic operations, modularity, objects, infinite data structures, self-describing
data). Students will be introduced to symbolic computation using Scheme.
Text: Max Hailperin, Barbara Kaiser and Karl Knight.
Concrete Abstractions. ITP, 1999.
Other recommended texts:
Daniel P. Friedman and Matthias Felleisen. The
Little Schemer. The MIT Press, 4th edition, 1996.
Harold Abelson, Jay Sussman and Julie Sussman. Structure
and Interpretation of Computer Programs. The MIT Press, 2nd edition,
- Final exam: 40%
- Midterm exam: 20%
- Assignments and quizzes: 40%
In this course we will study functional programming. In the two previous
introductory courses, CS141 and CS142, we studied a particular type of
programming paradigm called imperative or procedural programming. The
functional paradigm differs from the imperative paradigm in the way one
views computation. The imperative style treats computation as operations
performed on state variables whereas the functional style treats computation
as functions operating on values. Benefits of the functional approach,
among others, are the clean and direct approach to program design without
introducing unnecessary side-effects. Typical well-written functional
programs are easier to understand, simpler to debug, and have a simple
proof of correctness. Recursion and higher-order functions will play an
important role in our exploration of symbolic computation in functional
programming. Other topics include streams (infinite list structure) and
generic procedures. This course will mainly focus on a language called
Scheme, a dialect of Lisp, as an example of a functional programming language.
Some of the assignments will deal with applications in certain areas of