Syllabus and Course Policies
Parts of the syllabus text are taken from Brown University and Sheridan Center resources.
1 Basic Course Information
Please follow these links for relevant information:
Instructors: David Beazley and Shriram Krishnamurthi
Dave’s office hours are listed here. Shriram’s office hours are listed here. Office hours are time that he explicitly reserves for students, so if you want to chat, grab a slot on the calendar! We may be free at other times too, but we make a particular effort to be free at this time.
2 Course Goals and Learning Objectives
Artists, engineers, poets: all create things. Creators often develop an intimate understanding of the materials and media they work with; this helps them better understand the creations of others and better able to create new artifacts themselves.
For us who write programs, our primary medium is the programming language. Some languages help us write certain kinds of (good) programs better; other languages prevent us from writing certain kinds of (bad) programs at all. Some languages focus on unfettered freedom; others try to find strong compromises between expression and constraint. Understanding these trade-offs helps us better understand computation itself, and makes us better programmers.
This course provides you with a framework to gain this understanding. We hope it will help you to: learn about the basic building blocks of modern programming languages; use these building blocks to compare and contrast the languages you encounter (and also to prepare you for the languages you will build!); and reflect on the relationship between languages and programming (and, in some cases, programmers).
3 Keeping Current and Contacting Us
You must subscribe to and follow the course’s EdStem board.
By default, all posts are public. Therefore, please be careful to not discuss homework solutions details in them; if you wish to, make your post private.
In our experience, student responders on EdStem sometimes give incorrect answers. When you see such responses, we therefore suggest you wait for a course staff member to respond or to endorse such a response. If you get incorrect information from such a response and act on it, you will lose credit for your work.
Please contact us solely through EdStem unless you have a very good reason not to. You are, of course, welcome to write course staff directly if you want to discuss a private matter. However, please do not write to staff individually for help with coursework: those requests should all go through EdStem.
To make sure course staff can keep reasonable times, we will not respond to messages between 10pm and 8am. This does not mean we will start responding again promptly at 8am, just that we won’t respond overnight. This also includes days on which assignments are due! As the saying goes, “Failure to plan on your part does not constitute an emergency on our part.”
4 Class Meeting Times
The class meets at 11am, US/Eastern, on Mon-Wed-Fri.
You are likely to get the most out of class by attending in person. However, to deal with exceptional situations (emergencies, illness, travel, etc.), we will be recording class sessions and posting them on Panopto. Recordings will be available a few hours after class finishes.
Please note that remote access is meant as a backup, not as a substitute for attending class. By not participating in classroom interaction, your learning is likely to be diminished. In addition, you may experience technical glitches that result in poor quality or (rarely) no recording at all. We apologize in advance for this, but sometimes the circumstances are beyond our control.
5 Assignments and Exams
The Assignments are divided into five threads. Each thread has a different set of tools and techniques. To avoid making this document overwhelmingly long, each thread explains its general principles and purposes at the top, and each individual assignment further explains its purpose.
The course has two exams. See Exams.
Tynterp
Async
AssertSec
6 Anonymous Submissions
We expect you to submit all your work anonymously. This is to eliminate biases (both positive and negative) when grading, based on attributes such as race, gender, or even how you present yourselves in person.
To make clear we are serious, we will impose a small penalty if you do include personal identifying information (unless asked to). The penalty will escalate if you keep repeating this mistake.
Turning in work without your name on it may run contrary to what you’ve been told by countless prior instructors. However, because you’re turning in work electronically, not on paper, there is no danger we will “lose track” of whose work it is.
7 Time Allocation
The work load in the course is quite uniformly distributed across the semester. Students can expect to spend about 10 hours each week on assignments. Combined with the 2.5 hours spent per week in class, this translates to approximately 180 hours over the course of the semester.
8 Collaborative Work
Work in this class will follow three phases.
8.1 Part 1: “Almost Anything Goes”
To avoid penalty you have to submit all these assignments, but your performance will not count towards your final grade. You will be penalized for assignments you don’t turn in. This is to help you: if you fall behind on the early assignments, you will have a terrible time later in the semester, as it builds on the earlier material. Therefore, we need a way to keep you from hurting yourself in this phase.
Except for the SMoL thread, you can talk freely to anyone. You can work with a friend, get help from a classmate, etc. For the SMoL thread, however, you must work alone.
8.2 Part 2: “Pairs Allowed”
For the second part, which begins after Sep 28, you are allowed to work with a partner. You are not required to; you may work solo.
You may collaborate only with your partner. The only other permitted resources are ones officially provided by the course: lectures, textbook, Web site, EdStem, TAs, etc. You can’t reference arbitrary resources (such as the Web) unless an assignment asks you to.
The goal of this period is to let you continue to work with others, but also taper down your support to get you prepared for being able to do the work of this course entirely by yourself. You may talk to anyone else in the class on course material in general that is not directly related to a current or upcoming assignment. Some of this discussion may end up inadvertently helping you for a future assignment, which is okay; but you should not be consciously peeking ahead and discussing in a targeted way.
It is best if you and your partner are aligned on course goals (e.g., you’re going for the same kind of grade). You should also agree beforehand on whether or not you are going to use late days on any of the homeworks. This will avoid friction down the road.
If you’re working alone, submit to Gradescope as usual.
If you’re working in a pair, one member of the pair should submit and then add the other to the submission.
If anyone in a group submits late, all members of the group will be charged a late day. This is true even if someone accidentally submits the same thing late. The reason is simple: we don’t have the time to adjudicate these issues, track exceptions, etc. Therefore, we leave it to you and your partner—
whom you chose!— to coordinate. If you truly do your work together and submit together, there should be no confusion at all.
8.3 Part 3: “Haan, Solo”
The final period begins on Oct 14: any assignments that go out on that date or later. From this point on, you may not collaborate with anyone; you’re expected to do all the work on your own, and all the rules in the rest of this syllabus apply fully. Please keep track of this date so you don’t inadvertently plagiarize.
9 Grades
We hope you are, or will become, as passionate about programming languages as we are. Still, we recognize that students have different goals and constraints, and not everyone can afford to immerse themselves fully in this course. You still deserve a quality course in return for a reasonable amount of effort.
To pass the course (e.g., if you’re an S/NC student), you only need to do the ones marked “To Pass”. We will completely ignore the others, so you don’t need to even attempt them. However, you have to do very well on the “To Pass” assignments to get a C or S.
Otherwise, you have to do all the assignments, in particular, including those marked “Full Grade”. You will get a letter grade commensurate with the quality of your work.
Your overall course grade is a certificate of how you did: An A means you did
Excellent work, B means you did Good work, and C means you did Fair work. We
view it as a one-letter recommendation letter (a recommendation
letter—
It should then be obvious that your performance cannot affect that of your classmates, or vice versa. We therefore do not “grade on a curve”, because we consider the notion meaningless. By the same token, there is also no “default” grade in this course. At least in principle, everyone can do well.
For some assignments, you will get two or more grades: usually one will represent the correctness of your solution, while others its code quality, efficiency, thoroughness of testing, and so on. We give highest priority to correctness for a simple reason: it’s very easy to write a clean or efficient or other solution to a different problem. Once we confirm you’ve actually solved the problem we asked you to, then we care about all these other characteristics as well. In general, assuming you have correct solutions, consistently poor code quality will hurt your grade while, if you’re at a grade boundary, especially good code can improve it. If you’re given an algorithmic problem, then efficiency will be almost as important as correctness, but you should still make sure you get the solution correct first: it’s better to have a less-efficient correct solution than a very efficient incorrect one.
Your course grade will be determined by a complex process whose goal is to figure out how well you did. What does “well” mean? All your individual assignment grades will be converted to a numeric scale, and then weighted by assignment. In general, the weight is roughly proportional to the duration of the assignment, and later assignments are given much more prominence than earlier ones.
The reason these weights are not determined a priori is to allow me to deal with issues that may arise: e.g., if an assignment proves to be much more difficult than anticipated, then its weight reduces to avoid penalizing you. (This is the one way in which the performance of other students can affect you.) Your final grade assignment is also tested for “stability”: if small changes to the weights would change your letter grade, then the weights are not stable.
In general, there is some room for screwing up (because you are, after all, human, and everyone can have messy moments in a semester). Even with one disastrous assignment or two poor ones you can probably still get an A, assuming you did very well on everything else. Of course, doing poorly later in the semester or on bigger assignments will hurt you much more than doing so earlier or on shorter ones. If you do poorly roughly twice as often, that will probably get you a C. And if you exceed that, you can expect to not pass.
Most of all, you can’t skip required assignments entirely. Especially as we get to the end of the semester, the assignments are more weighty and are therefore better evaluations of your understanding. Skipping later assignments would be like skipping a final exam. You can’t expect good outcomes if you do that, especially if you’re going for a high letter grade.
10 Grading Personnel
In this course, you will encounter undergraduate TAs (UTAs). UTAs are an important part of the educational mission of this department. We believe that students learn best by approaching material multiple times; we also know from personal experience that we learn best by teaching others. Therefore, UTAs undertake valuable personal learning by revisiting material some time after they first learned it, and by trying to explain it to others. In the same way, you will also encounter graduate TAs (GTAs).
These TAs also help with grading materials in the course. Their work is regularly reviewed by the professors. Grading is ultimately a collaboration in terms of setting standards, checking rubrics, reviewing work, etc.
However, TAs are not involved in any way in the creation of course grades. Your course grade is entirely determined by the professors and nobody else, and is kept confidential from all TA staff. This also means that if you have concerns about your course grade, it is not useful to discuss this with the TAs: any information you get from them may even mislead you.
11 Books and Materials
We will rely, wherever possible, on material that is available free-of-cost. We will use free software tools, and the textbook and other materials for the course are also provided for free. We will link to some third-party sites that are also available at no cost.
The primary course textbook is the third edition of PLAI.
The primary course software is DrRacket. Make sure you’ve installed version 8.14. If you have an older version, you must upgrade.
12 Accessibility
Brown University is committed to full inclusion of all students. Please inform us early in the term if you may require accommodations or modification of any of course procedures. You may speak with us after class, during office hours, or by appointment. If you need accommodations around online learning or in classroom accommodations, please be sure to reach out to Student Accessibility Services (SAS) for their assistance (sas@brown.edu, 401-863-9588). Undergraduates in need of short-term academic advice or support can contact an academic dean in the College by emailing college@brown.edu. Graduate students may contact one of the deans in the Graduate School by emailing graduate_school@brown.edu.
13 Class Recording
We will try to record class to support various student needs. If you have questions or concerns about this protocol, please contact us so that we can talk through those to also ensure your full participation in this course.
14 Copyright
Lectures and other course materials are copyrighted. Students are prohibited from reproducing, making copies, publicly displaying, selling, or otherwise distributing the recordings or transcripts of the materials. The only exception is that students with disabilities may have the right to record for their private use if that method is determined to be a reasonable accommodation by Student Accessibility Services. Disregard of the University’s copyright policy and federal copyright law is a Student Code of Conduct violation.
In particular: you may not upload course materials to third-party sites. That would be a copyright violation and can have legal consequences. Please note that many third-party upload sites do cooperate with the university (to avoid liability for themselves), so your upload is not as anonymous as you think.
15 Timeliness
Many assignments in this course are accumulative: they are designed so that the learning in one assignment improves your learning in the next assignment, and so on. Therefore, turning in one late can force you to turn in the next one late, and so on, potentially leading to a difficult situation as the semester ends.
As a team, the course staff need predictability in their grading schedules. There is also benefit to locality: by grading all the submissions for an assignment at the same time, (a) the staff don’t have to “page in” the assignment’s content, and (b) they can handle all the submissions uniformly and thus fairly.
You have five late days that you can use at (almost: see below) any time during the semester. You do not have to give us any reasons; you don’t even tell us you’re using them. Just use them in the approved ways.
However, there are a few rules and exceptions:You may not take more than two late days on any assignment. We will start grading your assignment about two days after it comes due. This way, we do not have to re-grade any work, while still providing feedback in a timely manner.
You cannot take any late days on assignments after Thanksgiving. This is so that course staff can finish grading on a reasonable date while attending to their own other needs.
If you are taking a late day, you can submit after the deadline even if you have submitted something before the deadline. You don’t need to notify us if you do this. Just submit and we’ll automatically count your late day(s).Likewise, if you do submit after the deadline, no matter how close to the deadline, we will still consider it a late day. This is the only unambiguous policy that we can fairly enforce for everyone. It’s therefore in your best interests to submit a few minutes before the deadline and not accidentally submit again after.
Excused absences are when you have a note from a Dean or Health Services. (If you are home, you can submit a letter from a local doctor.) Excused absences do not count against your late days.
Note: When this happens, it’s usually because you are facing some adverse situation, sometimes an emergency. Follow the principle of “forgiveness, not permission”. That is, if you are in a crisis, focus on your needs. (If you have a moment to drop us a note telling us you will be delayed, that’s helpful, but in an emergency, don’t worry.) You can submit your note later. But you do need to submit official documentation for this delay to not count; otherwise it will be counted against your late days.
Per the university’s Religious Observance policy, if a religious event overlaps with more than half of the duration of an assignment being out, you can have as many days as you missed extra to complete the assignment. You are responsible for giving the staff a full list of the expected religious absences that require extensions before Sep 17.
16 Due Dates
These are in the course calendar, available from the course home page.
17 Academic Integrity
Brown University has an Academic Code that governs all our transactions. This Code includes a section on Respect for the Integrity of the Academic Process, which establishes its policy on cheating. We expect that you, as students and scholars, will abide by this faithfully and fully.
You should be extremely careful when using Internet resources for assistance other than those specifically linked from the course website or specified in the assignment. You are welcome to use reference material, e.g., programming language documentation or an encyclopaedia. Be aware that performing a generic Web search may get you to much more, such as solutions. (The one exception is when an assignment explicitly tells you to search for information on the Web.) If you accidentally find a solution and choose to use it, document that you are doing so. You will lose some credit for the assignment, but at least you won’t be in violation of the Code. You shouldn’t post looking for solutions on mailing lists or Web sites, either.
Unless stated otherwise, assignments must be done alone. You are welcome to discuss any parts of the assignments with course staff. With your friends, you may talk about the assignment: e.g., how far along you are, how long you anticipate needing, etc. You may not, however, discuss solutions. If in doubt about whether you can discuss something, ask us.
You are welcome to use materials you have seen or created earlier in the semester, unless the assignment explicitly prohibits something. It’s best to add a comment on these citing their origin. But ultimately, the course is meant to build your knowledge incrementally, so you can use earlier material in later material.
You are responsible for keeping your files private by setting the appropriate protections. If you fail and someone copies your work, you too will be held responsible. The same holds for other kinds of “sharing”, such as leaving your work visible in public places (whether computer screens or whiteboards). Another important kind of file-sharing is posting solutions on a publicly-visible version control repository site. If you host your work on such a site, make sure it’s in a private repository.
Regret Clause: Exceptions are possible only if you admit
your violation to the professor (not a TA) within 24 hours of the
assignment due time. This gives you an option if you cheated in
desperation the night an assignment was due, or allowed someone to
cheat from you, or something else—
18 AI Policy
You are welcome to use Copilot to help you with your work, provided you attribute in a file that you obtained help from it and give us a sense of roughly how much of the file was auto-generated.
Please be aware that you very much do so at your own risk! Copilot has low knowledge of Racket and even less of languages like plait, which we use in the course. Even when it does produce correct code, it may fail to meet our style guidelines. You take full responsibility for this.
In addition, Copilot works best with VSCode. Though the Magic Racket plugin for VSCode does support Racket, some of us find it significantly more clunky than working in something like DrRacket. In addition, DrRacket provides some tools, like the Macro Stepper, that are invaluable for some of our assignments, and you won’t get that in VSCode.
For similar reasons, you can also use ChatGPT, with all the same caveats.
Ultimately, we don’t want to block you from using current technologies, but we are letting you know that it can be messy. You take responsibility for your choices; if, for instance, using VSCode to enable Copilot made you do less well on an assignment that would have benefited from DrRacket and the Macro Stepper, that’s your choice and you will have to deal with the consequences.
19 Capstone
The course will have a capstone option (Capstone). It is designed for students who have had a logic course such as Logic for Systems, or a formal logic course in philosophy.
If you wish to take the course for capstone credit, you must notify Shriram by Sep 24.
20 Unusual Assignments
Unlike most other courses you take, this one may have some unusual assignments. For instance, you may be asked to do something impossible, or you may be given a task that sounds significant but is actually trivial. In these cases, you should focus on providing a justification for your reasoning rather than a solution itself.
The purpose in having such assignments is to more accurately mimic the real world in which you will be asked to solve tasks: there are no “answers in the back”; some problems are trivial while others, which look similar, are impossible, and a priori you can’t tell which is which.
How will you know which assignments these are? You won’t. After you’ve wrestled with a problem for a while and built a hunch that this is one of them, ask the course staff to confirm your hunch. They will ask you to justify your reasoning. If you do and are on the right track, they’ll tell you that you’ve understood the real point of the problem and inform you about how to write up your (non-)solution.
21 Legal and Ethical Issues
This text is based, with thanks, on text from CSCI 1660.
Some of the material covered in this course may be usable to create attacks on computer systems or on people. It may be unethical and/or illegal to use or apply it in contexts beyond the course itself. Breaking into, misusing, or harming computer systems, networks, or people can be illegal and punishable by law. You may also run afoul of Brown’s computer use policy, which can have disciplinary consequences.
22 In-Class Electronics Use
You can use electronics in class responsibly. If you find it helps you with note-taking, or have an accessibility or other need, go ahead. However:
Over the years, students have found in-class electronics use by their
classmates distracting and annoying. Therefore, you are forbidden from using
anything not strictly class-related. If you want to watch videos, engage on
social media, etc., you are welcome to do so—
In general: you are likely much more easy to distract than you think, you are definitely less good at multi-tasking than you think, and you are much more likely to distract others than you think. Please close all windows/apps that are not strictly related to class, and use the ones that are when and in ways that are appropriate.
If your behavior spills over into distracting those around you, or distracting me, that is not acceptable. Both of these reduce the educational value to the other students in the room, and we have an obligation to them. Therefore, you can expect us to call you out in class.
23 Diversity and Professionalism
Please see the separate page on it [Diversity and Professionalism].
24 Feedback
If you have course feedback, please contact us. We want to hear from you.
However, please note: The only place we monitor is the EdStem site.
We know there are lots of popular social media out there, and many of us are even active on them. However, those are not official course communication methods; we are there in our personal capacities. It is, for instance, not acceptable to DM TAs in their TA role on those sites.
Similarly, if you have a complaint, you should not assume we will see it if you
post elsewhere.
You are welcome to vent where you like, but if you want
something to be fixed—
25 Counseling
If you feel yourself falling behind, needing to talk to someone about personal problems, or in general want a supportive ear, the university has extensive Counseling and Psychological Services. Please don’t hesitate to use these: everyone finds them helpful at some time or the other, and they’re part of what you’re paying for to attend Brown. Make the most of them.