CS 381: Programming Language Fundamentals (Winter 2021)

Instructor: Eric Walkingshaw ()
TAs: Parisa Ataei (ataeip)
Fariba Khan (khanfari)
Jeffrey Young (youngjef)
Lectures: MW, 2:00–3:50pm, Zoom (all Zoom links available via Canvas)
Office Hours: M, 4:00–5:00pm (Eric), Zoom
T, 12:00–1:00pm (Fariba), Zoom
W, 12:00–1:00pm (Jeff), Zoom
Th, 5:00–6:00pm (Parisa), Zoom
F, 11:00am–12:00pm (Eric), Zoom
Canvas: CS 381 on Canvas
Campuswire: CS 381 on Campuswire

Course Description and Essentials

This course has two high-level goals: The first goal is to expand your view of what programming is and how it can be used to solve problems by introducing you to non-imperative programming languages. Learning to solve problems in the ways these languages encourage will make you a better programmer in any language and expand your problem-solving toolset. The second goal is to introduce you to the basic concepts and theory that underlie all programming languages. This knowledge is essential if you want to design and implement your own programming language, but is also helpful for better understanding and comparing the languages you use, even if you’re not the one creating them.

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

  • Following the Course – There are three sites you will need to bookmark and use regularly during the course: this web page, Canvas, and Campuswire. The “Following the Course” page describes how each of these resources will be used.

  • 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 Policies – How grades will be computed and course policy on homework, quizzes, and exams. This provides a few more details than syllabus.

  • 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.

Important Dates

Office hours will be rescheduled to the indicated time on the following days:

  • Fri, Jan 15, 3-4pm (Eric)

There will be no class or office hours on the following days:

  • Mon, Jan 18 (Martin Luther King Day)

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

  • Mon, Jan 25 – Quiz #1
  • Wed, Feb 3 – Quiz #2
  • Wed, Feb 17 – Midterm Exam
  • Mon, Mar 8 – Quiz #3
  • Wed, Mar 17, 12:00–1:50pm – Final Exam

Slides and Code Examples

Slides and code examples from the lectures will be posted below, usually just before or after class. I may continue to update slides and code for each stage of the course until we are done with that stage, so always make sure you have the latest version.

Slides Additional resources
Jan 4 Course Introduction
Jan 4–13 Functional Programming Intro to Haskell: Pt 1, Pt 2, Pt 3, Pt 4; Doctest.hs; Basics.hs; Lists.hs; TypesPractice.template.hs; TypesPractice.sol.hs
Jan 20–27 Syntax Sentence.hs; StackLang.hs
Jan 27–Feb 8 Semantics IntBool.hs; StackLang.hs; While.hs; Let.hs
Feb 8–15 Types IntBool.hs; Imp.hs; ImpList.hs
Feb 15–24 Scope and Parameter Passing Fun.hs
Mar 1–8 Logic Programming hobbits.pl; bool.pl; recursion.pl; list.pl; expr.pl; cut.pl
Mar 10 Final Exam Review Exceptional.hs

Homework Assignments and Course Project

Homework assignments are submitted through Canvas.

Unless otherwise stated, all homework deadlines are “end of day” on the due date, that is, 11:59pm Pacific time.

Reach Out for Success

University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it’s important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success at https://oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255).

Accommodations for Students with Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.