Programming Languages: Theory and Practice
(CIS 352 at Syracuse U)
Note: parts of this syllabus are subject to change with adequate notice to students.
An introduction to the design and implementation of programming languages, focused on operational semantics and interpreters. This course is heavily project-focused and usees a specification-based grading rubric to teach both formal (written) and practical (coding) skills.
Workload:
- Asynchronous video lecture units (at most ~80min per week)
- Participation points:
- Quiz before each lecture (closes as lecture begins)
- See other sources of participation below
- 6 projects
- 3 quizzes and a final, all cumulative (see grading note).
- This will be a project intensive class. Approximately 6-10 hours per week outside of class will be expected from students. I recommend against taking this course concurrent with other project-heavy courses.
Grading
CIS352 employs a specification-based grading methodology. There are three categories of assignments:
- Participation Credit (at least 30+ available)
- >50% participation quiz (on Blackboard) before each class gives 1 point, closes when class begins.
- Volunteering to livecode in class gives 2 points. Students are encouraged to present, and we will work to establish a positive environment where all students can make progress even if they don’t at first succeed. However, if you feel you simply cannot livecode in class you may ask me about doing some individualized programming instruction with the TAs / instructor instead.
- “Introduce yourself” to class (1 minute answer to question) gives 1 point.
- “Meet your professor” to discuss career goals gives 1 point.
- Groups that present answers to in-class questions will receive 1 point.
- 6 programming projects
- Projects are assigned throughout the term. All projects are due at 11:59PM the last day of classes at SU (Friday, May 14, 2021 at 11:59PM US Eastern Time).
- 1 participation point will be awarded to all students who have >50% test completion within 10 days of project handout.
- Projects will be graded via the autograder.
- 12 exam questions
- There are three 80 (q0) and 100-minute (q1,q2) quizzes and one 120-minute exam.
- All quizzes / exams will be cumulative.
- Exam questions will all be derived from the written learning objectives for CIS352.
Informal Grading Rules for CIS352
Projects | Exam Questions | Grade | |||
---|---|---|---|---|---|
Minimal | Satisfactory | Excellent | Satisfactory | Excellent | |
5/5 | 5/5 | 2/5 | 10/11 | 5/11 | A |
5/5 | 4/5 | 2/5 | 10/11 | 4/11 | A- |
4/5 | 4/5 | 2/5 | 9/11 | 4/11 | B+ |
4/5 | 3/5 | 2/5 | 8/11 | 3/11 | B |
4/5 | 3/5 | 1/5 | 8/11 | 2/11 | B- |
3/5 | 2/5 | 1/5 | 7/11 | 1/11 | C+ |
3/5 | 2/5 | 0/5 | 7/11 | 0/11 | C |
3/5 | 2/5 | 0/5 | 6/11 | 0/11 | C- |
3/5 | 1/5 | 0/5 | 5/11 | 0/11 | D |
< 3/5 | 0/5 | 0/5 | < 5/11 | 0/11 | <D |
Participation | GPA Δ |
---|---|
< 20 | - |
≥ 20 – < 30 | = |
≥ 30 | + |
Grade calculator
Projects
- Your grade consists of participation, projects, and quiz / exam questions.
- The bulk of this is projects and exams, and most of your time will be spent on projects.
- Projects are graded as either non-satisfactory, minimally-satisfactory, satisfactory, or excellent.
- Projects are graded via the autograder. You may submit as many times as you like up until 11:59PM on the last day of class (Friday, May 14 at 11:59PM). However, the autograder will rate-limit you by providing you with a set number of tokens per day. Specs for minimal, satisfactory, and excellent are given on a per-project basis.
- There are 11 quiz / exam questions, and every exam is cumulative. If you miss a question on Q0, you can reattempt the same learning outcome (e.g., basic recursion) on Q1 and so on.
- However, students may only submit up to six answers for each quiz / exam.
- Quizzes are
60 minutes (80 minutes q0, 100 minutes for q1 / q2 as concensus from class vote), and include questions for each learning objective covered in the course so far. The final is cumulative and is scheduled for 120 minutes. While you may still submit only six new answers, the expanded time may give you time to refine excellent solutions. - Based on the above, you may represent your project grade as a three-tuple (p₀,p₁,p₂) where p₀ specifies the number of minimal projects, p₁ the number of satisfactory, and p₂ the number of excellent projects you have submitted. Remember that each satisfactory project is also minimally-satisfactory and so on.
- Similarly, exam questions may be represented as a pair (e₀,e₁) where e₀ represents the number of satisfactory solutions and e₁ represents the number of excellent solutions.
- Using the project grade (p₀,p₁,p₂) and exam grades (e₀,e₁) you may calculate a raw gradepoint using the table below. The final gradepoint is given by taking a minus of the raw gradepoint (e.g., decreasing 4.0 to 3.7) if participation points are < 20, make no change if participation points are > 20 but < 30, and add a plus (e.g., bumping 3.7 to 4.0) if participation grade is ≥ 30. Note that assigned grades cannot go above 4.0, but the instructor will track this for recommendation letters and references.
Projects and Labs
This course will have six individual projects. Each of these will be completed using the course’s autograder. Projects will be handed out every few weeks, starting after the second or third week of class. All projects are due at 11:59PM the last day of class.
Labs will be led by the TA or instructor to facilitate studying and reviewing material presented in lecture.
Collaboration and the Honor Code
-
Assignments and exams must be completed alone, without exception.
-
Specifically, you must never send your code to anyone or allow anyone to watch you code, obtain your code, study your code, copy your code, etc… We expect you will take reasonable precautious to ensure the secrecy of your solutions.
-
The autograder employs elaborate cheat-detection techniques. These techniques will compare your code to other students’ submissions, along with students from previous years. The TAs will be using these features to periodically scan for students who are cheating. Past experience shows us that this system is very robust, and has allowed us to detect several large clusters of collaborating students. We hope that specification-based grading will assuage this.
-
All apparent cases (with credible evidence, as determined by lead instructor) of academic dishonesty will be reported, even if the student believes they made an honest mistake, or no mistake at all. We understand honor violations are stressful processes, and thus we strive to only submit honor code cases when we believe there is clear evidence that the honor board should review our findings independently.
-
You may collaborate, to any degree you want, with anyone (even outside of your group) on participation coding exercises. These will be clearly labeled, and are specifically not the course projects (which explicitly disallow any form of collaboration).
-
While we recommend you discuss the project specification with your peers, you should basically never be getting help from peers about your code. In particular, you should never be showing another student your project code. If you do discuss coding about the project with another student, it should only be in the abstract (e.g., “can you use operator overloading to implement that?” or “do you think it would be sensible to implement this with
map
?”) and not particularized to your codebase. We understand that this can be a challenging line to walk, and thus, we recommend the following heuristic: when talking to other students about code, discuss mostly the in-class exercises and participation coding exercises. -
Cite all help other than the professor, T.A., and required/recommended text (you are allowed to cite those if you wish, but it is not required unless you are specifically told otherwise); note that proper citation is sufficient to avoid any charge of academic dishonesty, and we will not be particularly focused on copyright law during lab work.
Again: You should never share code with another student. This includes both sending a file to another student and “over the shoulder” copying (even when, e.g., variable names are changed, etc..). In the eyes of the instructor, these are both equally bad. You should never be sitting and helping another along by writing their code. By doing so you are both violating the honor policy and disadvanting the student you are helping (as they may not then properly learn the material).
Student Support
Syracuse University values diversity and inclusion; we are committed to a climate of mutual respect and full participation. There may be aspects of the instruction or design of this course that result in barriers to your inclusion and full participation in this course. I invite any student to meet with me to discuss strategies and/or accommodations (academic adjustments) that may be essential to your success and to collaborate with the Office of Disability Services (ODS) in this process.
If you would like to discuss disability-accommodations or register with ODS, please visit their website at http://disabilityservices.syr.edu. Please call (315) 443-4498 or email disabilityservices@syr.edu for more detailed information.
ODS is responsible for coordinating disability-related academic accommodations and will work with the student to develop an access plan. Since academic accommodations may require early planning and generally are not provided retroactively, please contact ODS as soon as possible to begin this process.
Accreditation
As part of the regular ABET accreditation process for the undergraduate program in computer science, we may be collecting samples of students’ work in each of our undergraduate classes. As a result, some of your labs/homeworks/exams may be photocopied/scanned (or electronically copied) to be presented for accreditation at some later point.
Student Mental Health
Mental health and overall well-being are significant predictors of academic success. As such it is essential that during your college experience you develop the skills and resources effectively to navigate stress, anxiety, depression and other mental health concerns. Please familiarize yourself with the range of resources the Barnes Center provides (https://ese.syr.edu/bewell) and seek out support for mental health concerns as needed. Counseling services are available 24/7, 365 days a year, at 315.443.8000.
Discrimination and Harassment
The University does not discriminate and prohibits harassment or discrimination related to any protected category including creed, ethnicity, citizenship, sexual orientation, national origin, sex, gender, pregnancy, disability, marital status, age, race, color, veteran status, military status, religion, sexual orientation, domestic violence status, genetic information, gender identity, gender expression or perceived gender.
Any complaint of discrimination or harassment related to any of these protected bases should be reported to Sheila Johnson-Willis, the Universitys Chief Equal Opportunity & Title IX Officer. She is responsible for coordinating compliance efforts under various laws including Titles VI, VII, IX and Section 504 of the Rehabilitation Act. She can be contacted at Equal Opportunity, Inclusion, and Resolution Services, 005 Steele Hall, Syracuse University, Syracuse, NY 13244-1120; by email: titleix@syr.edu; or by telephone: 315-443-0211.
If you notice any incidents of harassment or discrimination, however minor, please email me. You may wish to use an anonymous email service such as https://anonymousemail.me/. Please feel free to tell me as much as you feel comfortable. I am a mandatory Title IX reporter and must report incidents such as sexual harassment, relationship violence, stalking, etc…
Slack
Slack is an instant messaging app for teams. We’ll be using it for most course management. This is the best place to get in touch with me for one-off questions, ask for an appointment for office hours, etc.. Email me if you have not been invited to the course Slack.