CURRICULUM PROPOSAL FORM #3
UNIVERSITY OF WISCONSIN-WHITEWATER

NEW COURSE


Effective:   FALL 2001

Course Number *: 765-322

Course Title: Computer Languages and Compilers

15 Character Abbreviation: Compilers
25 Character Abbreviation: Languages and Compilers

Sponsor: Jonathan Kane
E-mail Address: kanej@mail.uww.edu
Department: Mathematical and Computer Sci.
College: Letters & Sciences

Other Programs Affected: Mathematics Major, Computer Science Minor

Check if course is to meet any of the following requirements:
None Writing Computer Diversity General Ed and Area

Contact hours/credits: 16           Total lecture hours: 48
Total lab hours:                       Total contact hours: 48
Number of credits 3

Check if course is repeatable: No Yes (if yes answer the following questions)
No of times in major                  No of credits in major
No of times in degree                No of credits in degree

Enter the appropriate titles if the course is required in any of the following:
Major Title(s)
Minor Title(s)
Emphasis Title(s) Computer Mathematics Major

Course justification:
A course in the construction of assemblers and compilers is central to any major in Computer Science. It introduces the basic concepts of systems programming as well as lays down the theoretical aspects of computer languages which gives students an understanding of language design and usage. For this reason this course is necessary for the proposed Computer Mathematics emphasis in the Mathematics Major and would play an important role in a future major in Computer Science, a long term goal of the Department of Mathematical and Computer Sciences.

Relationship to program assessment objectives:
This course offers both a very practical background in how to write system software such as assemblers and compilers as well as presenting abstract concepts pertaining to computer language design. Thus, this course meets both the objective of covering practical problem solving skills and the objective of teaching students to deal with abstract concepts.

Budgetary impact:
The Department of Mathematical and Computer Sciences currently has faculty prepared to teach this course. If the Computer Mathematics emphasis in the Mathematics major is approved, this course would have to be taught on a biannual basis. If a future Computer Science major is approved, the course may need to be taught on an annual basis. The department is currently involved in searches for three new faculty with expertise in Computer Science. The filling of these positions will allow this new course to be offered.

In addition, although it would be possible to teach the course using the computer software facilities currently available on campus, the course could be improved by offering the students the use of compiler generation software or so called "compiler compilers" whose purchase might pose additional costs. There is a proposal for a new Computer Science laboratory on campus. Such software would naturally be included in such a laboratory design.

Course description:
This course is an introduction to the theory of computer languages and the construction of assemblers and compilers. Students will write a small assembler and a small compiler and will compare features of many computer languages.

Course requisites:
Prerequisites 765-271 and either 765-372 or 950-231

Course objectives and tentative course syllabus:
In this course students will learn the fundamentals of assembler and compiler design and will write a simple assembler and compiler. In addition, students will learn basic characteristics of computer programming languages, learn to compare the common programming languages, and learn the theoretical basis for analysis of computer languages. Discussion will include the three fundamental pieces of a language compiler: the scanner, the parser, and the semantic routines. Discussion may include the use of "compiler compilers," tools used to automatically produce scanners and parsers.

Weeks         Topic
1                 Computer Language History
2                 Construction of an Assembler
2                 Fundamentals of Modern Computer Languages
1                 Context Free Grammar
                   Pieces of a Compiler:
1                     scanners,
2                     parsers,
2                     semantic routines
                   Special Constructs:
1                     Arrays
1                     Functions
2                     Time devoted to discussion of projects

Bibliography:
Aho, Alfred and Jeffrey Ullman Principles of Compiler Design Addison-Westley 1977.
*Aho, Alfred V. and Jeffrey D. Ullman The theory of parsing, translation, and compiling Prentice-Hall 1973.
*Watson, Des High-level languages and their compilers Addison-Wesley, 1989.
*Hunter, Robin The design and construction of compilers Wiley, 1981.
*Calingaert, Peter Assemblers, compilers, and program translation Computer Science Press, 1979.
*Brown, Peter John Writing interactive compilers and interpreters Wiley, 1979.
Lewis, Philip M., Daniel J. Rosenkrantz, Richard E. Stearns Compiler design theory Addison-Wesley Pub. Co., 1976.
William A. Barrett Compiler construction : theory and practice Science Research Associates, 1986.
Barrett, William A. , John D. Couch Compiler construction : theory and design Science Research Associates, 1979.
Holub, Allen I. Compiler design in C Prentice Hall, 1990.

*Currently available in the UW-Whitewater Library