CS 381: Programming Language Fundamentals (Winter 2019)
|Instructor:||Eric Walkingshaw ()|
|TAs:||Ghadeer Al Kubaish (alkubaig)|
|Divya Bajaj (bajajd)|
|Qiaoran Li (liqiao)|
|Lectures:||MWF, 11:00–11:50am, Withycombe Hall 109 (map)|
|Office Hours:||Mon 3:00–4:00pm – Eric, KEC 3049|
|Tues 12:00–1:00pm – Ghadeer, Johnson 125|
|Wed 2:00–3:00pm – Qiaoran, KEC Atrium|
|Thur 4:00–5:00pm – Divya, KEC Atrium|
|Fri 12:00–1:00pm – Eric, KEC 3049|
|Piazza:||CS 381 on Piazza (Use of Piazza)|
Course Description and Essentials
This course covers the fundamentals of language design and implementation. You will learn how to define a language in terms of syntax and semantics, and how to decompose and reduce a language to its core features in order to simplify this process. You’ll also practice writing programs in non-imperative languages. We use the purely functional programming language Haskell for the majority of the course, and then spend the final two weeks writing logic programs in Prolog.
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.
Grading and Homework Policy – How grades will be computed and course policy on homework, quizzes, and exams.
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.
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.
There will be no class on the following day:
- Mon, Jan 21 (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 Piazza.
- Mon, Jan 28 – Quiz #1
- Mon, Feb 4 – Midterm #1
- Wed, Feb 20 – Quiz #2
- Wed, Mar 6 – Midterm #2
Wed, Mar 13 – Quiz #3– canceled!
- Wed, Mar 20, 12:00–1:50pm – Final Exam
Slides and Code Examples
Slides and code examples from the lectures will be posted below, usually shortly before/after class. I may continue to update the slides for each stage of the course until we are done with that stage.
For the first few weeks, I’ll also assign reading from Brent Yorgey’s excellent Intro to Haskell.
|Jan 7||Course Introduction||Ch. 1||Doctest.hs|
|Jan 9–23||Functional Programming||Ch. 2–4||Basics.hs, TypesPractice.hs|
|Jan 25–30||Syntax||Sentence.hs, StackLang.hs|
|Feb 1–15||Semantics||IntBool.hs, StackLang.hs, While.hs, Let.hs|
|Feb 15–22||Types||IntBool.hs, Imp.hs|
|Mar 1–Mar 4||Scope and Parameter Passing||Param.hs|
|Mar 8–15||Logic Programming||hobbits.pl, bool.pl, expr.pl, cut.pl|
|Mar 15||Final Exam Review|
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 may not be accepted. Be sure to submit your assignment on time!
- Homework #1 – due: Jan 16, 10:59pm
- Homework #2 – due: Jan 24, 10:59pm
- Homework #3 – due: Feb 5, 10:59pm
- Homework #4 – due: Feb 13, 10:59pm
- Homework #5 – due: Feb 26, 10:59pm
- Homework #6 – due: Mar 15, 10:59pm
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.