CSE 413 Programming Languages and Implementation Autumn 2012

Administrivia & Useful Information


  • Instructor: Hal Perkins, CSE 548 (perkins at cs).
  • Teaching Assistants: Timothy Plummer and Soumya Vasisht.
    See the course home page for office hour times and locations.

Class Meetings

MWF 12:30-1:20, EEB 045


Expand our notions of programming, learn some basic concepts of programming languages, and gain insight into how languages are implemented.  The main focus of the course will be to study functional and object-oriented programming using Racket (a dialect of Scheme) and Ruby, language implementation techniques, and other languages, as time allows.  The final project will be to implement a compiler or interpreter for a small language.


CSE 373 (data structures and algorithms)


There are no required books for the course. There are good resources available online and we will provide links to them. See the various resource pages linked off the main course web page.

Computing Resources

All of the software we will use is freely available over the web and we expect most students will want to install it on their own machines. We also have access to the College of Arts & Sciences Instructional Computing Lab. and all of the software should be installed there.

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 on Tuesday, June 7, 2:30-4:20.

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

  • homework + project 55%
  • midterm 15%
  • final 25%
  • other 5%

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 are discovered 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 never appropriate to copy someone else's code or homework solution and represent it as your own, and you need to be careful about developing detailed code with others. In particular, you should never accept code from, or provide code to, another student that could be incorporated into their work. It is also never appropriate to have a colleague or tutor "walk you through" a problem or assignment to develop a detailed solution. Exams must, of course, be done on your own.

This course includes a substantial final project.  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 incorporate new ideas and 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.

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. It is exceedingly unlikely that skipping class or being late to class because of homework is in your best interests. For the entire quarter, you may have four (4) “late days”. You are strongly advised to save them for emergencies. You may not use more than two (2) for any one assignment, and on group projects you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks

Incompletes may not be given simply because assignments were not completed on time.