CS 365 Programming Languages and Systems
Spring 2002

Grades available here!

Directory


Contact Information

Instructor:
Bruce MacLennan
Phone: 974-5067
Office: Claxton 217
Hours: 2:30-3:30 MW or make an appointment
Email: MacLennan@cs.utk.edu

Teaching Assistants:
Mei Ran (primary responsibility: grading)
Phone: 974-0508
Office: Claxton 225
Hours: 2:00-3:00 M or make an appointment
Email: Ran@cs.utk.edu

Michael Bailey (primary responsibility: help)
Phone: 974-0513
Office: Claxton 227
Hours: 2:30-3:30 W or make an appointment
Email: MBailey@cs.utk.edu

Class Meetings: 3:40-4:55 MW in Claxton 205

This page: http://www.cs.utk.edu/~mclennan/Classes/365/


Description

The following description is from the catalog:
"Language paradigms (procedural, functional, object-oriented, logic), language design and implementation issues and language issues related to parallelism."
The purpose of the course is not to teach you to program in half a dozen languages, most of which you will never see again. Rather, the goal is that you: To this end, the course is structured as a series of case studies investigating examples of the major programming language generations.

As a side-effect of attaining these goals, you will have little trouble learning new languages when you need to do so.


Prerequisites

CS 302.

In addition, it will be expected that you have done enough programming to have some appreciation of the problems involved in designing and implementing large software projects. Further, you will be expected to be familiar with basic data structures such as linked lists and stacks.


Text

B. J. MacLennan, Principles of Programming Languages: Design, Evaluation and Implementation (third edition), Oxford University Press, 1999.

You will be expected to keep up with the reading according to the schedule (approximately one chapter per week). By reading the material beforehand, we will be able to devote class time to summarization, questions, expansion and discussion.

Although I wrote the book that has been chosen for this course, I have not been involved in this area for nearly fifteen years, so the course will be conducted as a collaborative inquiry, through which we will all learn. In other words, you will be expected to take an active role in the class, and will be graded accordingly.


Topics

  1. Goals; Pseudo-code Interpreters
  2. First Generation (FORTRAN)
  3. Second Generation (Algol-60)
  4. Second Generation: Syntactic Issues (Algol-60)
  5. Third Generation (Pascal)
  6. Runtime Implementation of Modern Languages
  7. Fourth Generation (Ada)
  8. Fourth Generation: Concurrency (Ada)
  9. Fifth Generation: Function-oriented Programming (LISP)
  10. Fifth Generation: Functional Programming (LISP)
  11. Fifth Generation: Recursive Interpreters (LISP)
  12. Fifth Generation: Object-oriented Programming (SmallTalk)
  13. Fifth Generation: Logic-oriented Programming (Prolog)

Grading

Your grade will be 50% homeworks and projects and 50% exams. One third of your exam grade will be the midterm exam, and two thirds will be the final exam. However, since the final is partially cumulative, if you do much better on the final than you did on the midterm, I will make the final count more than 2/3 of the exam grade.

The Office of Disability Services and the Campus Disability Monitors have asked us to include this statement in our syllabi:

Students who have a disability that require accommodation(s) should make an appointment with the Office of Disability Services (974-6087) to discuss their specific needs as well as schedule an appointment with me during my office hours.

Homework

There will be approximately six projects/homework assignments. There will be no programming projects, except perhaps one small program in the language of your choice.

Since language design and evaluation is of little value unless the results can be communicated clearly, assignments will generally take the form of well-written essays or oral presentations, which will be graded for grammar and style as well as content. (Non-native English speakers will be graded for content and organization, but not for English grammar or style.)

In addition, you will be expected to keep a journal of your programming experiences (in this and other courses), which you will hand in from time to time for evaluation.


Exams

The final exam will be approximately one-half on the materials covered since the midterm and one-half cumulative.

The Final Exam will be 10:15-12:15, Tuesday May 7, 2002

See Final Exam Information (forthcoming)


Class Handouts



Return to MacLennan's home page

Send mail to Bruce MacLennan / MacLennan@cs.utk.edu
Last updated: Thu Apr 25 14:51:35 EDT 2002