Tue/Thu 3:00-4:20pm in Wean 5302
Spring 2020
12 units
Professor Jonathan Aldrich
aldrich@cs.cmu.edu
Office: Wean 4216
Office hour: Fridays 1-2pm
Many programmers think of programming languages as having a fixed, standard set of features--but in fact, languages are being extended all the time, and new languages are constantly being developed, providing great expressive power. In this course, students will learn about techniques for designing and prototyping programming languages. Design topics include language features, a practical approach to semantics, conceptual design techniques, and examples of both general purpose and domain-specific language designs. Prototyping topics include interpreters, source-to-source translators, languages as libraries, and paper prototyping techniques used for lightweight user evaluations. In course assignments, students will practice design and prototyping techniques, implementing prototype languages in several different styles. The course will end with a project in which students design, implement, and evaluate their own programming language.
Optional Textbook Resources:
Prerequisites: 17-214 or 15-213, or equivalent. The focus of this class is largely technical; the goal of the prerequisites is to ensure students should sufficient programming experience to succeed in the course.
In this class, you will be assessed in two ways. (A) In-class participation: 10%. This will be based on sign-in sheets and/or in-class exercises. The in-class exercises are not graded, but will help you learn the material, and you get credit for filling them out. (B) Assignments and project: 90%. There will be a sequence of assignments, each either 1 or 2 weeks long. The 2-week long assignments will be worth twice as much credit as the 1-week long assignments. Some assignments will be standalone and focus on individual skills, whereas others will apply those skills in a project context to design a language of your choice. The project-related assignments can optionally be done in pairs (with a greater expectation for scope/detail for pairs); other assignments are individual. Some assignments include a brief skill warm-up followed by applying that skill to the project.
There is no midterm or final exam. In lieu of a final exam, however, you will give a final presentation on your langugage design project during finals week, as well as turn in the results of that project. Presentations will be given during the normally scheduled final exam slot for the class, unless there is mutual agreement between students and instructor to do it at another time.
Grade thresholds are 90% - A, 80% - B, 70% - C, 60% - D. Assignment grades will be posted on Canvas; participation grades will also be posted there at mid-semester and at the end of the course.
Class participation is important, as most material will be communicated via lectures or readings and reinforced with in-class activities. In most class periods there will be an in-class exercise designed to allow students to practice the material being taught. Students will earn one participation point for completing each day's in-class exercise (regardless of the answers given). When there is no in-class exercise, participation will be assessed via a sign-in sheet. Students can miss up to 2 days of class or recitation without losing any participation credit.
This is a 12-unit course, and it is our intention to manage it so that you spend close to 12 hours a week on the course, on average. In general, 4 hours/week will be spent in class and 8 hours on assignments. Please feel free to give the course staff feedback on how much time the course is taking for you.
We understand that normal life events, including projects and exams in other courses and technical difficulties out of your control, can interfere with your ability to complete your work on time. Our philosophy is that our late work policy includes built-in flexibility but that the policy will be uniformly applied to all students in all circumstances. Exceptions to this policy will be made only in extraordinary circumstances, almost always involving a family or medical emergency with your academic advisor or the Dean of Student Affairs requesting the exception on your behalf.
For most homework deadlines you may turn in your work up to five days late using (1) free late days (see below) or (2) 10% per day penalties. After 10 days late, no credit will be given, though feedback will still be provided.
Each student starts the semester with seven free late days which will automatically be applied to your assignments until you have used all five free late days. You may use at most 3 late days per assignment; otherwise, there is the risk you will fall too far behind. A late day is automatically applied when your work is late; you may not defer a free late day to be used on a later assignment.
Here are some examples of behavior that are inappropriate:
If any of your work contains any statement that was not written by you, you must put it in quotes and cite the source. If you are paraphrasing an idea you read elsewhere, you must acknowledge the source. Using existing material without proper citation is plagiarism, a form of cheating. If there is any question about whether the material is permitted, you must get permission in advance. We will be using automated systems to detect software plagiarism.
It is not considered cheating to clarify vague points in the assignments, lectures, lecture notes, or to give help or receive help in using the computer systems, compilers, debuggers, profilers, or other facilities.
Some assignments are specifically noted as group projects. For these, interpret "you" in the preceeding paragraphs to mean "you and your partner(s)."
Any violation of this policy
is cheating. The minimum penalty for cheating (including
plagiarism) will be a zero
grade for the whole assignment. Cheating incidents will also be
reported through University channels, with possible additional
disciplinary action. For more information, see the University Policy on Academic Integrity. There is no statute of limitations for violations of the collaboration policy; penalties may be assessed (and referred to the university disciplinary board) after you have completed the course, and some requirements of the collaboration policy (such as restrictions on you posting your solutions) extend beyond your completion of the course.
If you have any question about how this policy applies in a particular situation, ask the instructors or TAs for clarification.
Educational research indicates that the use of electronic devices in typical classroom situations detracts from learning. Thus, to enhance your learning and that of others in the class, and to encourage active class participation, we generally do not allow the use of electronic devices during lectures. If you have a working style that relies on electronic devices, or need to use them for some other reason, please talk with the instructors.
Many of the recitation exercises rely on laptops, so we encourage students to bring their laptops to recitation section.
When we say "your health matters" we mean exactly that: Your health matters. We don't intend to imply that other peoples' health does not matter, or that your health matters more or less than theirs. It's just that we know that CMU can be a stressful, risky environment, and your health is the health that is relevant in this conversation.
Please take care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.
All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.
If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website at http://www.cmu.edu/counseling/. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.