Oregon State University CS 381 Home Page

CS 381 -- Programming Languages
General Information -- Spring Term 2002

Oregon State University
Department of Computer Science


http://www.cs.orst.edu/~budd/381.html

Instructor

Lectures: Prof. Timothy Budd, Office: Dearborn 218, Phone: 737-5581, E-mail: budd@cs.orst.edu
TA: Jianglin He, E-mail: heji@cs.orst.edu

Office Hours

My office hours (Professor Budd) will be MWF 2:00-3:30, in my office (Dearborn 218).

My door is usually open, and you are welcome to drop by at other times. If I am busy or the time is inconvenient I may ask you to come back again, but often I am free.

The TA will offer his office hours in Dearborn 115, Tuesday 1:30-3:00, and Thursday from 9:20 to 10:50.

Important Dates and Times

(see also the more detailed schedule).
Class Time
MWF 11:00 - 12:00, Stag 323
Midterm 1
Week Five, Friday, May 3, in class.
Holiday
Monday, May 27, no class (Memorial Day)
Midterm 2
Week Nine, Friday, May 31, in class.

Purpose of this Course

Introduction to the major concepts found in programming languages, introduction to the major programming paradigms.

Textbook

The textbook we will use this term is
Concepts of Programming Languages, 5th edition,
by Robert W. Sebesta.
(If you have the 4th edition you can use it,
since there are very few changes between them).

You will be doing programming assignments in Lisp, Prolog and Python. I'll distribute notes on these languages as the term progresses.

Course Learning Objectives

On completion of the course, students will be able to:

  1. Describe and work problems that accurately predict program behavior under static versus dynamic scoping mechanisms.
  2. Describe and work problems that accurately predict program behavior under static versus dynamic typing mechanisms, with or without the use of type constraints.
  3. Describe and work problems that accurately predict program behavior under the by-value, by-reference, by-constant, by-result, by-value-result, and by-name mechanisms of parameter passing.
  4. Describe the contents of the run-time stack as it stands at any moment in program execution.
  5. Describe the extent of polymorphism facilitated by dynamic typing versus inheritance versus overloading.
  6. Understand exception handling mechanisms and be able to implement exception handlers in Java and in 2-3 other programming languages.
  7. Explain the essential differences between the imperative, functional, dataflow, and object-oriented paradigms. Create programs in several paradigms.
  8. Explain how programming language semantics are defined (axiomatic, denotational, operational semantics).

Grading

There will be a number of graded homeworks, and many programming assignments. There will be two midterms, but this term no final (I have a scheduling conflict for finals week). Grading will be based on a weighted formula which results in the programming assignments and homework being given roughly the same weight as the two exams. I will periodically post class standings and averages.

Completing all work correctly is sufficient to obtain a grade of B. The A grade will be reserved for work that is above average in creativity or completness. A grade of C or below is given for work that is below standard.

If you are taking the classs S/U, be aware that this fact is not reported to me by the administration. A grade of C- or better is necessary to obtain the grade of S.

Grades (including class standings) are posted on-line

Assignments

The following links provide access to postscript copies of the assignments. Unless otherwise specified, all homework must represent individual effort.

Late Assignments

Assignments that are past the due date, but less than a week late, will be accepted if previous arrangements have been agreed upon, and if you can produce a listing showing the state of the solution prior to the due date. However I reserve the right to deduct points for being late.

Cheating

You are encouraged to discuss problems and programming assignments with each other. Helping others learn is often the most powerful way of mastering material yourself. However, taking somebody elses solution without their knowledge or consent is cheating and will be punished. Do not leave copies of the programming assignments in the trash can in a public place -- throw them away at home or some other private place. Also do not leave your directories unprotected. (Last year we had several situations where students were completing their programming assignments using the trash can rather than the computer, or were taking assignments from unprotected directories). The College rules on this issue are harsh and are enforced.

Departmental Policy on Dishonesty

Old Exams

Some old exams are available online

Mail List

There will be a mail list set up for discussion of class related material. From the web page you can access an archive, as well as make various modifications to your subscription. You can send mail to the entire class by mailing to class-cs381@engr.orst.edu. Powerpoint sources for the slides can be found in the Slides subdirectory.

Detailed Schedule

I'll fill this in as the term progresses.
WeekMondayWednesdayFriday
Week 1
April 1 - 5
Introduction, History
Reading: Sebesta Chapter 1
slides
study questions
Reading: Sebesta Chapter 2
slides
study questions
Reading: How to Learn a Language
study questions
Due: Homework 0
Week 2
April 8-12
Functional Programming
Reading: Sebesta Chapter 15
slides
study questions
Due: Programming Assignment 0

Reading: Thinking Recursively
study questions

study questions
Week 3
April 15-19
Syntax and Semantics
Reading: Sebesta Chapter 3
slides
Due: Programming Assignment 1
Due: Homework 1
study questions

study questions
Reading: Sebesta Chapter 5
slides
study questions
Week 4
April 22-26
Due: Programming Assignment 2
Due: Homework 2
study questions
Reading: Sebesta Chapter 6
slides
study questions

study questions
Week 5
April 29-May 3
Due: Programming Assignment 3
Homework 3
study questions

Reading: Sebesta Chapter 7
slides
study questions
First
Exam

results
Week 6
May 6-10
Due: Programming Assignment 4
Reading: Sebesta Chapter 8
slides
study questions

study questions
Reading: Sebesta Chapter 9
slides
study questions
Week 7
May 13-17
Due: Programming Assignment 5
Homework 4
study questions
Reading: Sebesta 12
Thinking OOP
slides

slides
Week 8
May 20-24
Due: Programming Assignment 6
Homework 5
Reading: Sebesta 16
study questions
Reading: Sebesta 14
slides
Week 9
May 27-31
No Class
(Memorial Day)
Due: Programming Assignment 7 Second
Exam

results
Week 10
June 3-June 7
Student Presentations
Due: Homework Assignment 8
Due: Programming Assignment 8
Student Presentations Student Presentations


Prepared by Tim Budd, budd@cs.orst.edu, 1/3/2001.