CSE 413 19wi Programming Languages & Implementation - Overview

Logistics and Contact Information: See the main course web site www.cs.washington.edu/413/ for information about the course, including meeting times, staff, office hours, communications, etc.

Goals: 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 and Ruby, language implementation techniques, and other languages, as time allows.

Prerequisite: CSE 373 (data structures and algorithms)

Grading and Exams: Your overall grade will be determined as follows (subject to change as necessary, but substantial changes to the numbers below are not expected):

  • homework 55%
  • midterm 15%
  • final 25%
  • other 5% (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.

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. Assignments are not always weighed equally because some of them are of different length and sophistication. The exact weighting is to-be-determined and not likely to be posted in advance (we need to see how the course goes).

Late Policy: Deadlines will be given with each assignment. These deadlines are strict. 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 "late days". You are strongly advised to save them for emergencies. You may not use more than two for the same assignment. They must be used in 24-hour (integer) chunks. This policy may not be the same as in your other classes. You are responsible for understanding it if you choose to submit late work.

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

Reasonableness: No set of rules can apply perfectly in every setting. We will make reasonable exceptions, and in return, we expect you to be reasonable as well.

Cheating vs. Collaboration: Please see the separate discussion of Academic Integrity. You are expected to read and understand every word in that document. Ask first if you have any questions.

Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense and is vigorously prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act.

For this course, the policy is simple: don't cheat. You know it when you're doing it. We'll recognize it when you do it. As an easy example, sharing assignment solution code with each other is cheating, as is copying homework solutions from any source. As another easy example, relying heavily on some resource (e.g., some example code you found on the Web) without attributing it in your turnin is cheating. Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms.

That said, collaborating is, for many people, an effective way to learn. Learning isn't cheating. Helping each other write programs that are not assignments or exercises isn't cheating. Misrepresenting that you've learned something, or done the work that implies you've learned something, almost certainly is.

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.