CS 381: Programming Language Fundamentals (Winter 2017)

Instructor: Eric Walkingshaw ()
TAs: Mike McGirr (mcgirrm)
Chao Peng (pengc)
Lectures: MWF, 11:00–11:50am, Pharmacy Building 305 (map)
Office Hours: Mon 1:00-2:00pm – Eric, KEC 3049
Tues 3:30-5:00pm – Mike, KEC Atrium
Wed 12:00-1:00pm – Eric, KEC 3049
Thur 1:30-3:00pm – Chao, KEC Atrium
Piazza: CS 381 on Piazza (Use of Piazza)

Course Description and Essentials

CS 381, Programming Languages Fundamentals, is a four-credit course for undergraduate students. The course introduces concepts found in a variety of programming languages and exposes students to non-imperative programming paradigms. Topics to be covered include: Haskell, Prolog, syntax, scoping, parameter passing, types, polymorphism, exception handling, semantics.

  • Course Syllabus – Includes the course learning objectives and much of the information contained on this web page. Note that if the schedule changes during the quarter, the web page will reflect the revised schedule but the syllabus will not be updated.

  • Haskell and Prolog Resources – How to get up and running with Haskell and Prolog. Also lists several tutorials, freely available books, and other resources that you should use to supplement the content of this class.

  • Community Statement – Every student should feel safe and welcome to contribute in this course. Please read this statement and let’s work together to make this a great environment for everyone.

  • Grading and Homework Policy – How grades will be computed and course policy on homework, quizzes, and exams.

  • Use of Piazza – How we will use Piazza throughout the term.

Important Dates

There will be no class on the following days:

  • Mon, Jan 16 (Martin Luther King Day)
  • Wed, Feb 1 (cancelled)

The following days are currently scheduled for quizzes and exams. I will announce any changes to this schedule both in-class and on Piazza.

  • Wed, Jan 25 – Quiz #1
  • Fri, Feb 3 – Midterm #1
  • Fri, Feb 24 – Quiz #2
  • Fri, Mar 3 – Midterm #2
  • Wed, Mar 15 – Quiz #3
  • Fri, Mar 24, 7:30–9:20am – Final Exam

Slides and Code Examples

Slides and code examples from the lectures will be posted below, usually shortly before class. I may continue to update the slides for each stage of the course until we are done with that stage.

Slides Additional files
Jan 11 Course Introduction Doctest.hs
Jan 13–23 Functional Programming Basics.hs, Types.txt
Jan 25–27 Syntax StackLang.hs
Feb 6–15 Semantics IntBool.hs, RegCalc.hs, StackLang.hs
Feb 10 Interlude: OO vs. FP OO-FP.txt, TreeExample.java, Tree.hs
Feb 17–22 Types IntBool.hs, Pair.hs, Imp.hs
Feb 24–Mar 1 Scope and Parameter Passing Param.hs
Mar 6–17 Logic Programming hobbits.pl, bool.pl, nat.pl
Mar 17 Final Exam Review

Homework Assignments

Homework assignments are submitted through TEACH. Log in and click “Submit Assignment” in the navigation bar on the right, located under “Class Tools”. You should see a list of currently open submissions.

Please note that late homework is not accepted. Be sure to submit your assignment on time!