Discussion: 1 hour
Prerequisite: Course 50 or Engineering Electrical Computer 70; course 60
Grading: Letter; homework (10%), projects (30%), midterm (20%), final (40%)
Catalog Description:
Syntactic definition of programming languages. Introduction to programming
language features including variables, data types, data abstraction, scoping,
parameter disciplines, exception handling. Comparative study of several
high-level programming languages. Not open to students who have taken ECS
140.
Expanded Course Description:
Lectures focus on the fundamental principles of modern computer
programming languages. Commonalities and differences among the different
languages and their features are discussed. Students learn about a variety
of different programming languages and about their relative strengths and
weaknesses. Students gain experience designing and writing programs in a
selected set of languages.
The lecture topics include the following, not necessarily listed in chronological order:
Textbook:
K. Louden, Programming Languages: Principles and Practice, Thompson, 2002.
Programming Projects:
The projects focus either on various aspects of programming languages
(for example, simple parsers, translators, symbolic computation, and implementation
of abstract data types) or on exercising the particular strengths of a given
language. Students work individually or in small groups on three programming
projects. Students design, implement, and test their solutions. Each project
would typically use a different language; languages include from among the
following: Ansi-C, Modula-2, Ada, C++, Standard ML, Prolog, Lisp, and Scheme.
At least one project language will support either modules or object-oriented
programming (e.g. Modula-2, Ada, C++, or Smalltalk), and at least one will
be a non-imperative language (e.g. ML, Prolog, Lisp, or Scheme).
Engineering Design Statement:
The projects involve the design, implementation, and testing of
programs that focus on various concepts in programming languages. The facilities
used for these programming projects resemble those that would be found in
industry to the extent possible, given the academic constraints. The project
assignments define performance specifications and constraints, and outline
a general approach to the problem. However, design and implementation details
are left to the students. Lectures discuss general concepts of programming
languages and design choices available to programmers, in terms of algorithmic
design, what language features can be employed to solve a particular problem,
and what languages are most appropriate for particular application domains.
Discussion sections fill in the details of the different languages used
by the student and describe system tools that can be used to aid with the
projects. Projects are graded based on the design and performance, including
documentation. Examination questions are based on design methods discussed
in lecture and from the projects.
ABET Category Content: Goals:
Engineering Science: 2 units
Engineering Design: 2 units
Students will:
Student Outcomes:
Instructor: R. Olsson, R. Pandey, Z. Su
Prepared by: R. Olsson, R. Pandey, Z. Su (October 2006)
Overlap Statement:
This course does not duplicate any existing course.