# CS 581: Programming Languages I (Fall 2018)

Instructor: | Eric Walkingshaw () |

TA: | Qiaoran Li (liqiao) |

Lectures: | T Th, 4:00–5:20pm, LINC 314 (map) |

Office Hours: | M 1:00–2:00pm, KEC Atrium (Qiaoran) |

W 2:00–3:00pm, KEC 3049 (Eric) | |

Th 5:20–6:20pm, LINC 314 (Eric) | |

Piazza: | CS 581 on Piazza (Use of Piazza) |

## Course Description

CS 581: Programming Languages I, is the graduate-level introductory course in programming languages. The class has no prerequisites. A primary goal is to provide a common foundation for all students wishing to do research in programming languages or take further graduate-level programming languages courses.

Topics to be covered include: functional programming in Haskell, abstract and concrete syntax, denotational semantics, operational semantics, lambda calculus, Church encodings, and more!

**Course Syllabus**– All of the information in the syllabus is also 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*.**Community Statement**– This course is intended to be interactive, so it is vitally important that every student feels safe and welcome to contribute. Please read this statement and let’s work together to make this a great environment for everyone.**Textbooks and Other Resources**– This page contains links to our (online and freely available) textbooks/readings, instructions for working with Haskell, and other resources.

## Important Dates

There will be no class on the following days:

**Nov 22**(Thanksgiving)

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

**Oct 11**– Quiz #1**Oct 25**– Quiz #2**Nov 6**– Midterm**Nov 20**– Quiz #3**Mon Dec 3, 12:00 – 1:50pm**– Final Exam

## Slides, Reading Assignments, and Code Examples

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

Reading assignments for each stage are also listed below. Here are links to the textbooks, which are freely available.

Slides | Reading | Additional files | |
---|---|---|---|

Sep 20 | Course Introduction | M 1–2; H 1 | |

Sep 25 | Functional Programming | H 2–6 | Doctest.hs, Basics.hs, Refactoring.hs |

Oct 11 | Syntax | S 1 | StackLang.hs |

Oct 18 | Inference Rules | P 2–3.1 | |

Oct 23 | Operational Semantics | P 5 | StackLang.hs |

Oct 30 | Lambda Calculus | S 3 ex. 13 | LambdaCalculus.hs, DeBruijn.hs, Church.hs |

Nov 15 | Denotational Semantics | S 2.3, 3–6 | StackLang.hs |

## Homework Assignments

Please take a moment to read the **Homework Policy**.

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.

Since homework assignments are intended to support the in-class discussion, **late homework may not be accepted.** Please be sure to submit your homework on time.

- Introduce Yourself! — due: Sep 24, 5pm
- Homework #1 — due: Oct 1, 11pm
- Homework #2 — due: Oct 3, 11pm
- Homework #3 — due: Oct 10, 11pm
- Homework #4 — due: Oct 24, 11pm
- Homework #5: Exercises on slide 25 — due: Nov 8, start of class
- Homework #6 — due: Nov 27, 4pm

## Grades

Grades will be computed using the following weights.

- 25% Homework
- 10% Participation
- 15% Quizzes (3 x 5% each)
- 20% Midterm Exam
- 30% Final Exam

Grades are assigned using the following standard ranges, after rounding.

≥ 93% = A | 90–92% = A- | |

87–89% = B+ | 83–86% = B | 80–82% = B- |

77–79% = C+ | 73–76% = C | 70–72% = C- |

60–69% = D | ||

≤ 59% = F |

Overall grades will not be curved. However, scores on individual components (e.g. the midterm exam) may occasionally be adjusted upward by a constant factor for the entire class.

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