This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.
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.
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.
This course will, for the most part, follow the text. Topics to be covered will include:
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.
Late assignments: You have each been allotted a total of 5 late days. You may apply these without any penalty to any project you see fit, with the exception that you may use at most 2 on any individual project. The whole point here is to give you some flexibility that allows for things like illnesses, long trips, and the like. I am unlikely to grant further extensions. Any projects turned in late will result in a 20% penalty per day.
Academic Dishonesty: Monmouth College’s official policy on academic dishonesty can be found here. You are responsible for reading and complying with that policy.
In this course, any violation of the academic honesty policy will have varying consequences depending on the severity of the infraction as judged by the instructor. Minimally, a violation will result in an “F” or 0 points on the assignment in question. Additionally, the student’s course grade may be lowered by one letter grade. In severe cases, the student will be assigned a course grade of “F” and dismissed from the class. All cases of academic dishonesty must be reported to the Associate Dean who may decide to recommend further action to the Admissions and Academic Status Committee, including suspension or dismissal. It is assumed that students will educate themselves regarding what is considered to be academic dishonesty, so excuses or claims of ignorance will not mitigate the consequences of any violations
Collaboration: We encourage you to make use of the resources available to you – it is fine to seek help from a friend, tutor, instructor, internet, etc. However, copying of answers and any act worth of the label “cheating” is never permissible! In addition to listing your sources and collaborators, you should be producing your own writeup in your own words. By “your own words,” we mean you should be producing the text yourself, without some external aid. Verbatim copying of text is specifically disallowed, but so is taking a source and rearranging some phrases and changing some variable names to create a derivative version! Such behavior is definitely NOT “using your own words.” It does not matter if you helped contribute to this source text with others, since then you are still not the sole author of the text. The point of collaborating on an assignment is not to produce a jointly authored set of solutions, since that violates the course policies. Instead, it is to help you solve the problems, which sometimes involve a bit of creativity. After you have jointly come up with the ideas you need to solve the problems, though, you should part ways with your group and sit down to do the writing by yourself. I also advise against sharing the writeup you submit with others, since if someone else uses your text as a source for their own solution (with or without your permission), you will also be implicated in the violation of the academic integrity policy. In any case, if two nearly identical solutions are received, we have no way of tell which is the original, and the policy is to not award credit for either submission.
Electronic Devices: Do not use your phone or other devices in class except where necessary. Any computer or tablet usage should be related to the course. If a device is not being used for Zoom or Socrative it should be put away and turned on silent. Other usage is rude and distracting to others.
General Expectations: In short, I expect you to be respectful of others and take responsibility for your own learning. You are here to learn, so work hard and be professional.
Just attending class is not sufficient to truly learn the material. Read the text, use the resources available at Monmouth College, and go beyond the material.
If you miss class, you are responsible for everything covered on that day. College is, in some sense, your job. Take pride in creating quality work. Staple your assignments, label problems, and present your answers neatly and orderly.
Your job is to convince me that you have learned the material – show your work! Even if you do not know a particular answer, guide me through your thought process.
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 |
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.
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 |
Student Success and Accessibility Services offers FREE resources to assist Monmouth College students with their academic success. Programs include supplemental instruction for difficult classes, drop-in and appointment tutoring, and individual academic coaching. The office is here to help students excel academically, since everyone can work toward better grades, practice stronger study skills, and mange their time better.
Accessibility Services: If you have a disability or had academic accommodations in high school or another college, you may be eligible for academic accommodations at Monmouth College under the Americans with Disabilities Act (ADA). Monmouth College is committed to equal educational access. To discuss any of the services offered, please call or meet with Robert Crawley, Interim Director of Student Success and Accessibility Services. SSAS is located in the new ACE space on the first floor of Hewes Library, opposite Einstein Bros. Bagels. They can be reached at 309-457-2252 or via email at ssas@monmouthcollege.edu.