CSE 413 21sp Programming Languages & Implementation
Information and Syllabus

Logistics and Contact Information: See the main course web site www.cs.washington.edu/413/. Look there 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)

Texts: There are no required books for the course. There are good resources available online and we will provide links to them. See the links on the course resources page and pages linked from there.

Computing Resources: All of the software we will use is freely available over the web and you will be able to install and run it on your own computers.

Grading: Because the course is being taught online this year we will not have traditional midterm or final exams. Instead grades will be based primarily on homework assignments. Most of the assignments will consist of fairly short programming and written problems. There will be one or two larger programs, particularly towards the end of the course. 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).

Extra credit may be available on some assignments. It is designed to have little (but some) impact on your grade if you do it. Not doing extra-credit work will not lower your grade - regardless of how many other students attempt it. Extra credit is designed to be challenging and an opportunity for people with available time or interest to explore further. Therefore, you can expect any extra-credit work to count for much less than it should based on how difficult it is or how much time you spend on it. You should not attempt any extra-credit work until the basic part of the assignment is done. The graders will ignore extra-credit work unless the required work is "almost perfect" otherwise.

We are exploring the possibility of online quizzes or short summary assignments to provide an opportunity to review and master material. If we are able to incorporate those it will count for a part of the grade, probably no more than 20% or 25%. We will discuss the details well in advance if this happens.

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.

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.

Given the unusual circumstances of this distance quarter, we will be flexible if needed about deadlines. The goal is to stay on schedule as best we can, while acknowledging that the current situation may well require some adjustments. We will try to be clear about any changes in advance so everyone can plan accordingly. Please contact the course staff in advance if you find it will be difficult to meet deadlines for reasons beyond your control.

In case of a true emergency (hospitalization, other unforeseen circumstances) where the late policy might not be applicable, please contact the instructor to discuss the situation.

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

Accommodations: Please refer to the university policies regarding accommodations and religous accommodations. Those policies apply in this class as everywhere else at UW. Please contact the instructor, DRS, or the course staff as needed so we can help.

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 is cheating, but, of course, learning from example code can be very helpful and is normally appropriate. 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.

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