CSE341: Programming Languages, Autumn 2017

Course Info

Course Information

Lecture: Monday, Wednesday, Friday 2:30-3:20 MGH 241
Section AA: Thursday 12:30-1:20, MGH 242
Section AB: Thursday 1:30-2:20, MGH 284
Section AC: Thursday 2:30-3:20, MGH 284

Office Hours:
Mondays, 10:30-11:30AM, CSE574, Dan Grossman
Tuesdays, 10:30-11:20AM, Xander Lent
Wednesdays, 1:00-2:00PM, CSE021, Bader Tayeb
Thursdays, 9:30-10:30AM, CSE220, Eric Mullen
Fridays, 12:00-1:00PM, Kush Gupta
Fridays, 3:30-4:30PM, Tam Dang

Contact Info

Contact Information

Course Email List (mandatory): You should receive email sent to the course mailing list regularly, roughly at least once a day. Any important announcements will be sent to this list.

Email sent to cse341-staff@cs.washington.edu will reach the instructor and all the TAs. For questions multiple staff members can answer, we encourage you to use this email so that you get a quicker reply and the whole staff is aware of points of confusion.

Course staff:
  All staff: cse341-staff@cs.washington.edu
  Instructor: Dan Grossman, djg@cs.uw.edu (not @u...)
  TA: Tam Dang, dangt7@uw.edu
  TA: Kush Gupta, bluek7@cs.uw.edu
  TA: Xander Lent, lenta@cs.uw.edu
  TA: Eric Mullen, emullen@cs.uw.edu
  TA: Bader Tayeb, bader2@cs.uw.edu

COMING SOON: Course Discussion Board (optional but encouraged)

Anonymous Feedback (goes only to the instructor)

Course Materials

Material in the future naturally subject to change in terms of coverage or schedule

  1. Unit 1: ML Functions, Tuples, Lists, and More    Reading Notes    Videos
  2.   L1. Sep 27-29: Course Mechanics, ML Variable Bindings   slides: pptx   pdf   pdf6up   code: sml
  3.   S1. Sep 28: Emacs, SML Mode, Shadowing, Error Messages
  4.   L2. Sep 29 - Oct 2: Functions, Pairs, Lists   slides: pptx   pdf   pdf6up   code: sml
  5.   L3. Oct 2-4. Local Bindings, Options, Benefits of No Mutation

Homework Assignments

Homework 0: on-line survey worth 0 points, "due" Friday September 27, 11PM

Turn-In Instructions for regular homeworks: The Turn-In Form links take you to a Google Form where you enter your name and upload your files. These forms are restricted to UW accounts and you will need to log in to UW G Suite (G as in Google) with your UW credentials. These are different from any personal Google account you have and different from your UW CSE Google account. If you have not yet activated UW G Suite, you will need to do so first. If you are not signed into to your UW account you may see a page like this. To fix, go to google.com and click on the circle in the upper right to add/switch account.


Midterm: Monday October 30, in class
Will post more information and sample exams closer to the exam date

Final Exam: Tuesday December 12, 2:30-4:20PM
Will post more information and sample exams closer to the exam date


Software Installation and Use

Instructions for SML and Emacs, which is everything you need for the first half of the course.
 Videos showing the software installation on Windows

Instructions for Racket and Ruby coming later


Links to Other Resources

The course materials on this page (lectures, sections, homeworks, installation instructions, videos) are designed to provide what you need for the course except for some details that you can look up in standard-library documentation or users' guides for particular languages. Links for such information is below. We also provide links to useful books and tutorials that provide alternate explanations. We will not follow any textbooks closely, but you may still find them useful. Suggestions for additional links are welcome.

SML resources:
  www.smlnj.org (links to many things, including the next three resources)
  user's guide
  standard-library documentation
  tutorials, books, and documentation
  Elements of ML Programming, ML'97 Edition, Jeffrey D. Ullman, 1998.
   This is a textbook that takes a different approach but does cover some of the same material.
   Check the errata page to avoid bugs.

Racket resources:
  The Racket Guide
  racket-lang.org, particularly the Docs button

Ruby resources:
  Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide, Dave Thomas et al.
   Check the errata page to avoid bugs.
  Ruby home page