COMPUTING IV 91.204 (2kf204)

Course Information and Standards

University of Massachusetts, Lowell

Department of Computer Science

(Unix Path: $CASE/2kf204/2kf204syl{.doc,.htm})

Instructor: Prof. Robert Lechner Office: OS105 (new)

Telephone: 934-3632 (UML x3632) or Home: 781-444-8321

Office Hours: MWF 230-430PM; Wed. 830-10PM; Others by appt.

Email: lechner @cs.uml.edu

1. Course description:

An introduction to program translation software construction. This course is about the principles, methods and issues that affect compilers and interpreters which translate between human-readable programming languages and hardware-implemented ones. Object-oriented design and implementation techniques will be introduced to facilitate the construction of a simple compiler which will serve as a running case study throughout the course. In the Fall 2000 semester, Lex and Yacc will be used front-end parsing and ENgel's Oolong assembler for the Java Virtual Machine will be the target language.

Prerequisites: 91.201 Computing III and 91.203 Computer Organization and Assembly Lang.

 

2. Textbooks (2 required):

Levine, Mason & Brown: "Lex and Yacc", OReilly, 1992.

J Engel: "Programming the Java Virtual Machine (JVM), Addison-Wesley 1999 (CD-ROM included)

Class material will be available on-line at $CASE/2kf204, including this document (99s204syl{.doc,.htm}, class assignments, code samples from Engel's web site or to be used in lectures and assignments. [The environment variable $CASE is defined by 'setenv CASE /usr/proj3/case']

Programming assignments in 2ks204 will be based on the expression calculator introduced in Computing III and material in the required and recommended texts. All coding will be done in the C++ programming language. Unix host machines are preferred, but PC's are optional for students already familiar with PC-based C++ development environments.

 

3. Course Objectives and Goals

Students in this course will participate in a significant compiler design and implementation case study, through which they are expected to achieve the following synergistic goals:

 

4. Lateness

For each class day an assignment or project is late, 10 of the total points will be deducted from the points received. This will continue for 5 class days (2 weeks), after which the assignment or project will have a maximum possible value of 50 if passed in before the last day of the semester.

 

5. Academic Dishonesty

In this course all work is to be each student's own, unless otherwise notified. Two-person teams may be specifically authorized for a particular assignment; in this case, work will be divided between the partners.

Students should be familiar with the University's rules on academic dishonesty , which can be found in the Bulletin of Undergraduate Studies and in the Schedule of Classes. In particular, plagiarism will not be tolerated ! Any student caught plagiarizing will automatically receive a grade of F for the course. If you are unsure as to what constitutes plagiarism, it is your responsibility to check with the instructor. Other forms of dishonesty will result in similar actions.

 

 

6. Topical Outline:

The following topics will be covered in this course:

  1. General structure of translation software
  2. Language analysis: syntax and semantics
  3. Information models and class diagrams
  4. Object-oriented design and software life-cycle
  5. Scanning theory and implementations
  6. FSM construction with lex
  7. Parsing theory and implementations
  8. Parse tree object and tree node objects
  9. LALR parser construction with yacc
  10. Main controller object
  11. Symbol tree management
  12. Symbol tree objects and tree node objects
  13. Static semantics and grammar actions
  14. Interpretation by virtual machines
  15. The Java Virtual Machine as a target language
  16. Oolong assembly language for the JVM
  17. Code generation issues and techniques

 

7. Grading

Final grades will be based as follows:

Item Type

Number

Weight

Hour Exams

2

40%

Final Exam

1

20%

Project Builds

8(approx)

40%