CSE 413 Programming Languages and Implementation
Overview Autumn 2014

Administrivia & Useful Information

Personnel

  • Instructor: Hal Perkins, CSE 548 (perkins at cs).
  • Teaching Assistants: James Barnes, Gurwinder Gulati, Gene Kim, and Soumya Vasisht.
    See the course calendar for office hour times and locations.

Class Meetings

MWF 11:30-12:20, MOR 220

Objective

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.

Prerequisite

CSE 373 (data structures and algorithms)

Texts

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, particularly towards the end of the course. There also will be 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 at the regularly scheduled time during finals week.

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

  • homework 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, unless 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.

Developing good assignments for any course takes time, and we may reuse past assignments 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 and we will use them.

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. If there are any 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.