CSE 413: Programming Languages and Their Implementation
Autumn 2007

Administrivia & Useful Information

Personnel

Class Meetings

MWF 2:30-3:20, Loew 101

Objective

Expand our notions of programming, learn some basic concepts of programming languages, and gain insight into how languages are implemented.  The course will study functional and procedural programming using Scheme and C (including some basic software tools for compiling and running programs).  The final project will be to implement a compiler for a small language, generating executable x86 assembly language code. The project will be done by students working in teams of two in most cases.

Prerequisite

CSE 373 (data structures and algorithms)

Texts

There are no required books for the course. Copies of the Scheme language definition and handouts will be distributed during the quarter.

Computing Resources

We have access to the College of Arts & Sciences Instructional Computing Lab (aka MSCC - same location), and all of the software we use is freely available and can be installed on your own machines.

Assignments and Grading

Most of the assignments will consist of fairly short programming problems. There will be one or two larger programs, plus the project at the end. There also will be some shorter written problems on some of the assignments.

There will be a midterm exam and a comprehensive final exam at the end of the quarter scheduled for Tues December 11, 2:30-4:20.

Grades will be calculated roughly as follows (subject to change)

The last 5% of the grade will take into account effort, contribution to class, etc.

If you discover an error in the grading of an assignment or test, please bring it to our attention within one week after the material is first returned.

Academic Misconduct

You are expected to do assignments on your own, except when an assignment explicitly allows group work. Any cases of cheating that we discover will be handled according to the University disciplinary policy.

But we also want to be clear on what is legitimate collaboration -- please help each other out in this class in appropriate ways! It is OK to help other students debug their programs, and to discuss general approaches to solving problems. However, it is not OK to copy someone else's code or homework solution and you need to be careful about developing or using detailed code discussed with others.

This course includes a substantial term project (the compiler).  Developing good assignments of this size can take years.  To make sure that assignments are as good as they can be, we may reuse them, with appropriate changes to take into account feedback from past offerings of the course.  It is a clear case of academic misconduct if you hand in a solution to a similar project from a previous quarter, or obtain copies of such solutions from others.  We have effective tools for checking this, as well as other cases of cheating, electronically.

Exams must, of course, be done on your own.

For more details, please look at the CSE department policy on academic misconduct.

Late Assignments and Incompletes

Work is due at the time given on the assignment, generally at the beginning of class for written assignments, and by a specific time for work submitted online.  No late assignments will be accepted.

Exceptions will be made only for circumstances truly beyond your control, such as a serious illness or family emergency.  Please be sure to get in touch with the instructor to discuss the circumstances if this happens.

Incompletes are never given never simply because assignments were not completed on time.


Back to CSE 413 home