handout #1

Computer Science & Engineering 341

Programming Languages

Instructor

Stuart Reges

email

reges@cs.washington.edu

phone

685-9138

office

Paul G. Allen Center, room 552

office hours

Tuesdays 1:30—3:30 pm

Lecture and Section Times

Lecture            MWF 12:30—1:20, EEB 045

Sections           AA: Thursdays, 8:30—9:20, MGH 242

                        AB: Thursdays, 9:30—10:20, MGH 242

Textbooks

Elements of ML Programming, Ullman, required

Programming Ruby, Thomas, optional

Course Overview

The prerequisite for this course is CSE143 and we will assume that you come to the course with significant experience in either Java or C++.  We will build on that experience by examining three languages that provide an interesting contrast to what you already know.  The goal is to give you a much broader view of programming and to teach you the basic terminology that we use to distinguish different programming languages.  For example, the following table shows the three languages we will study along with Java/C++ categorized by programming paradigm (object-oriented vs functional) and by the kind of type system it uses (static vs dynamic):

 

Object-oriented

Functional

Statically typed

Java/C++

ML

Dynamically typed

Ruby

Scheme

We will spend approximately 5 weeks studying ML, then approximately 3 weeks studying Scheme, then approximately 2 weeks studying Ruby.

Course Web Page

Information about the course will be kept at http://www.cs.washington.edu/341.  The web page will include links to useful resources, class handouts, lecture notes and a message board.

Grading

You will be expected to complete a variety of programming assignments for this course and to take two open-note, open-book exams.  The resulting scores will be combined according to the following weightings:

40%     weekly homework assignments

20%     midterm (in class on Friday, 4/30/10)

40%     final exam (on Thursday, 6/10/10, 8:30—10:20 am)

Using the weightings above, each student’s scores will be turned into an overall score ranging from 0 to 100 percent.  These will be turned into grades as follows:

90%     at least 3.5

80%     at least 2.5

70%     at least 1.5

60%     at least 0.7

If you need to miss an exam, you must contact Stuart prior to the exam to get permission.  Even if you are sick at home, you should be able to call your instructor’s office phone number to leave a message that you need to be contacted.

Unless otherwise noted, each homework assignment will be worth 100 points.

Late Policy

Each assignment will list its due date.  Most will be due on Thursdays at 11 pm.  Each student in the class will have a total of three “free” late days (a late day is 24 hours of lateness).  There are no partial days, so assignments are either on time, 1 day late, 2 days late, etc.  Because of this generous late policy, students will not be granted extensions for assignments unless they have some highly extenuating circumstances.  You can use at most two late days for any single assignment.  If you run out of late days or if you submit your solution more than two days late, you will receive no credit.

Policy on Collaboration

You are to complete programming assignments individually.  You may discuss the assignment in general terms with other students including a discussion of how to approach the problem, but the code you write must be your own.  The intent is to allow you to get some help when you are stuck, but this help should be limited and should never involve details of how to code a solution.  You must abide by the following: