CSE 341, Spring 1997

Richard Anderson

Introductory Handout

 

 

CSE341 will cover some basic material in programming languages. Over 80% of the course will focus on three non-imperative programming paradigms: functional programming, logic/constraint programming, and object-oriented programming. The remainder of the course will cover some general concepts and principles of programming languages, bringing together many of the concepts and mechanisms that appeared earlier in the course.

Personnel

 

Instructor

Teaching Assistant

Richard Anderson

Craig Kaplan

Sieg 410

 

anderson@cs.washington.edu

csk@cs.washington.edu

 

For office hours, etc., see the course web page:

http://www.cs.washington.edu/education/courses/341/CurrentQtr/

Instructional objectives

The following are instructional objectives of the course; they are by no means complete, but they characterize the kind of understanding that I hope you will develop over the quarter.

 

At the end of the course students should:

 

  1. Be able to distinguish imperative, functional, object-oriented, logic, and constraint programming paradigms.
  2. Be able to write at least modest (100-500 lines of code) programs in languages representative of each paradigm.
  3. Be able to assess a problem and determine a programming paradigm that might be suitable for solving the problem.

Assigned work and grading

 

The basic work in the course consists of:

 

I strongly encourage you to discuss the material with each other. You are, of course, each responsible for learning the material in the course. For the major programming assignments, you are also permitted to work in pairs; both students will be assigned the same grade. (I reserve the right to revoke permission to work in pairs with for specific individuals or for the entire class.) Of course, quizzes and the final must be done individually.

 

All programming assignments are due on the day marked in the tentative schedule below; the TA will provide advance information about the specific time the program is due, the way in which it should be turned in, etc.

Tentative schedule

 

March 31

Introduction

April 2

Functional programming

Minor assignment #1

April 4

Functional programming

April 7

Functional programming
Minor assignment #1 due (4/8)
Major assignment #1

April 9

Functional programming

April 11

Functional programming

April 14

Functional programming

April 16

Functional programming

April 18

Functional programming

April 21

Logic/Constraint programming
Minor assignment #2
Major assignment #1 due (4/22)

April 23

Logic/Constraint programming

Quiz #1 (4/24)

April 25

Logic/Constraint programming

Major assignment #2
Minor assignment #2 due

April 28

Logic/Constraint programming

April 30

Logic/Constraint programming

May 2

Logic/Constraint programming

May 5

Object-oriented programming
Major assignment #2 due (5/6)
Minor assignment #3

May 7

Object-oriented programming

Quiz #2 (5/8)

May 9

Object-oriented programming

May 12

Object-oriented programming

May 16

Object-oriented programming

Major assignment #3
Minor assignment #3 due (5/17)

May 18

Object-oriented programming

May 19

Object-oriented programming

May 21

Object-oriented programming

May 23

Object-oriented programming

May 26

Holiday, No Class

May 28

Concepts
Quiz #3 (5/29)

May 30

Concepts

June 2
Concepts

June 4

Concepts
Major Assignment #3 due (6/5)

June 6

Concepts

 

Sections

 

There are two sections scheduled each week for 341. In general, we will use the Tuesday section for a conventional presentation by the TA (presenting added examples, clarifying points of confusion, answering questions, etc.). However, the Thursday section will normally be held in the lab, essentially as a hands-on office hour by the TA. Three Thursdays (4/24, 5/8, and 5/29) will be quizzes, in the regularly assigned rooms for sections.

 

Office Hours

 

Later this week, we will announce office hours on the web page. (If the times aren’t convenient, please set up a time that works for everybody.) In general, if my door (Sieg 410) is open, stick your head in; if I can’t help out right then, I’ll arrange a time as soon as possible. Please stop by with questions about the material, about your progress in the course, about your grades, about programming languages (or computer science) in general, etc. Also, make sure we know (anonymously, if you prefer) about any problems in the course; we can’t fix things we don’t recognize as problems.

 

Computing

 

The three languages we will use are ML (functional programming), CLP(R) (constraint logic programming), and Java (object-oriented programming). ML and Java will be available on the Alphas (orcas and sanjuan), CLP(R) will be available on the DecStations (wolf, lynx, grizzly). Stay tuned for changes.

Books

 

We will use the following two books:

 

 

For CLP(R), we will distribute a manual and some course notes or book chapters.