CS 381: Programming Language Fundamentals (Summer 2017)

Instructor: Keeley Abbott ()
TA: Zhicheng Fu (fuz@oregonstate.edu)
Lectures: MTuWTh, 16:00–16:50, Kelley Engineering Center 1003 (map)
Office Hours: Mon 11:30–12:30 – Keeley, KEC Atrium
Tues 15:00–16:00 – Zhicheng, KEC Atrium
Wed 10:00–11:00 – Zhicheng, KEC Atrium
Thur 14:30–15:30 – Keeley, KEC Atrium
Piazza: CS 381 on Piazza (see note on 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 page. Note that if the schedule changes during the term, 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 of several tutorials, freely available books, and other resources that you should use to supplement the content in 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

Important Dates

There will be no class on the following days:

  • Tues, July 4 (Independence Day)
  • Thur, Aug 3 (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, July 5 – Quiz #1
  • Tue, July 11 – Quiz #2
  • Mon, July 17 – Quiz #3
  • Thur, July 27 – Midterm
  • Tue, Aug 1 – Quiz #4
  • Wed, Aug 9 – Quiz #5
  • Thur, Aug 17 – Final

Slides and Code Examples

Slides and code examples from the lectures will be posted below. Slides will normally be posted just before class, and completed files just after. I will continue to update the slides for each stage of the course until we are done with that stage.

Slides Additional Files
Jun 26 Course Introduction Doctest.hs
Jun 27 Haskell Basics.hs, InfList.hs
Jul 6 Syntax and Grammars StackLang.hs, Let.hs, ExprAnnot.hs, BoolSyn.hs, BoolPP.hs
July 12 Semantics ExprSem.hs, BoolSem.hs, Move.hs, IntBool.hs, LetSem.hs, RegCalc.hs, PixelS.hs, PixelSPP.hs
July 19 Interlude: OO vs. FP OO-FP.txt, TreeExample.java, Tree.hs
July 19 Types IntBoolT.hs, PairT.hs, LetT.hs, StackT.hs
July 25 Scope and Parameter Passing Scope.hs
Aug 2 Logic Programming hobbits.pl, exp.pl, bool.pl, lists.pl, stackLang.pl, mapping.pl

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.

Note that due to logistical issues late homework will not be accepted. Please be sure to submit your assignments on time!