COMP 325: Organization of Programing Languages, Fall 2019

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.

Logistics

Content

This course is an exploration of modern programming languages through the study and implementation of interpreters for fundamental language features. By implementing small languages with common PL features, students expand their skill set with both practical and theoretical knowledge. To understand programming languages is to understand programming and computation as a whole. A programming language is how we describe a computational process and study of the languages themselves helps to shed light on the inner workings of a computation.

For the fall 2019 semester, this course is being taught as a course-by-arrangement. There will be no lectures; instead students will learn mostly via the textbook and office hours. We will meet in my office once or twice a week.

Sources

The main textbook will be:

Be aware that the textbook is a constant work-in-progress. We may occasionally supplement this with:

Other sources will be provided to you or will be available online.

Topics

This course will, for the most part, follow the text. Topics to be covered will include:

Programming Environment

We’ll be diving in with the Pyret language that accompanies PAPL. Pyret has an in-browser development environment and so may be used on any computer with a (modern) web-browser.

We might, from time to time, look at some Racket as its used in PLAI. If you need or want to update your DrRacket installation, here’s the link.

Policies

Assessment

Assignments and Workload

The weekly workload for this course will vary by student but on average should be about 11.5 hours per week. The follow tables provides a rough estimate of the distribution of this time over different course components for a 16 week semester.

Category Amount Final Grade Weight Total Time Time/Week (Hours)
Meetings - 10% (Participation) - 1.5
Interpreters 5–7 30% 56 3.5
Homework 2–3 5% 8 0.5
Paper+Presentation 1 20% 24 1.5
Exams 2 15% Midterm, 20% Final - -
Exam Study - - 8 0.5
Reading+Unstructured Study - - 16 4
    100%   11.5

Grading

Your participation grade is based mainly on your preparation for the class meetings. Your final grade is based on a weighted average of particular assignment categories. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing.

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge*.

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge.

Schedule

The following calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

Week # Dates Topic Readings Assignments
1 08/19–08/23 Design of Programming Languages Given in HW 1 HW 1
2 08/26–08/30 Pyret, Recursion PAPL 1,2,5,6 HW 2
3 09/02–09/06 Structures, Parsing, Interpretation PAPL 7-9,13,23 Interp 1
4 09/09–09/13 Interpretation and Conditionals PAPL 24-25 HW 3
5 09/16–09/20 Interpreting Functions, Sharing PAPL 26,18 Interp 2, Starter Code
6 09/23–09/27 More about State PAPL 20, 31  
7 09/30–10/04 Memory Management PLAI 11  
8 10/07–10/11 Garbage Collection Garbage Collection Survey (1-3.1, 4-5) Interp 3
9 10/14–10/18 Modern Memory Management Ownership, Lifetimes, Borrowing  
10 10/21–10/25      
11 10/28–11/01 First Look at Types PAPL 27, 28 Interp 4
12 11/04–11/08 Type Inference PAPL 29, 30  
13 11/11-11/15 Intro to Objects PAPL 32  
14 11/18–11/22 Types for Objects PLAI 16 Interp 5
15 11/25–11/29 Control Operations PAPL 33  
16 12/02–12/06 Language Case Studies    
Tuesday, December 10, 8:00 AM Final Exam    

Monmouth College Services