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 a specific emphasis will be placed upon training in algorithmic thinking and programming strategy.

Instructors:

Workload:

Course Tags

The university recommends instructors label their courses with shared competencies. We intend for this course to fit the following:

Monday Labs / TA Office Hours (TA led)

Mondays (after the first week), the TA Jailin Ye will lead a lab. Labs will be treated informally, and will be held as time for students to work together on programming exercises. We will also use labs for various logistical purposes (make-up exams, etc…). Attendance in labs is recommended, but not required. Our goal is for labs to offer time where a bounded group of people can talk to the TA with programming questions.

Wednesday debugging hours (instructor led)

The professor will be available on Wednesdays, from 2PM to 3:30 PM. Please plan to take either a five, 10, or 15-minute block. If you plan to take more than 15 minutes, you may be asked to share time with other students.

This time is for debugging and to get critique on your code style. Please be mindful of the collaboration policy below–it is fine to watch along in office hours, but be careful not to use it as a crutch to develop your own solution.

I will try to avoid canceling Wednesday debugging hours. Unfortunately, sometimes I do get busy on Wednesdays with research-related work or deadlines from other service obligations. In the event I do need to cancel, please email me and we can set up a mutually-agreeable time to help you with debugging your code.

After-class office hours

The professor will generally make himself available for up to 30 minutes after class. Please avoid asking code related questions at the end of lecture. This would be a good time to come if you have content-related questions that can be addressed at the whiteboard or just via talking, without looking at your code.

Grading

Final grades will be assigned as follows. A small “bump” may be given in practice, but is not guaranteed–this will be announced at the end of the course, though I will try to provide a ballpark estimate on Slack around the last week of class.

Topics

Autograder Exercises / Projects (40%)

There are four individual programming projects in Racket. Projects will generally have deadlines of roughly 14 calendar days from their assignment (though this may be adjusted at times). Projects will be graded using an autograder whose URL is https://autograde.org. You will receive credentials for the autograder–if you have not received these by the second week of class, let the professor know. You are expected to learn how to use the Git interface to the autograder–the autograder will technically accept archives, but the instructors strongly prefer students (and will exclusively help support) using Git.

There will also be between four and six group programming exercises in Racket. These exercises may be done in groups of up to three students. Groups MUST write their solution together (Zoom/video call is acceptable, but it must be synchronous).

Exercises and projects will be weighted at point values of 100 points (exercises) and 1000 points (projects), so that projects are worth roughly 10x as much as exercises. Exact grading weights on the autograder are subject to change pending sufficient notice to students, but will never be more work (or less advantageous to students) than the grading bars specified here.

Project / Exercise Late Policy

Exams (40%)

Exams explicitly measure your ability to materialize solutions to questions regarding relevant course content in an open-ended fashion. There will be two midterms. Questions will be drawn from the learning objectives at the top of the page. I will release a practice exam several days before both midterms, which we will work through in class.

After the first midterm, you may submit corrections for up to 50% of missed points back. Details will be provided after the first midterm. There will be no corrections for the second midterm.

We realize exams can be stressful. The instructors strongly encourage students to look into the resources provided by the Barnes Center (such as extended exam time) if a student thinks their academic performance is impeded by exam-related stress. We are happy to provide accomodations for exams, but the instructors request at least 72 hours notice for each exam so that we may upload the necessary material to the student testing center.

Collaboration and the Honor Code

Use of ChatGPT and other ML-based tools

Large Language Models and similar machine-learning-based tools have the potential to radically change the way in which humans perform their work. The course instructor does research in AI and understands the value in using ChatGPT and similar tools to help learn and study (henceforth we casually conflate ChatGPT and similar LLM-based tools). However, these tools should be used carefully, and never in a way that undermines the spirit of expending genuine mental energy to understand the material in the class. I (the instructor) have used ChatGPT myself for quick answers to routine tasks, particularly in shell scripting and usage of common development tools. However, I do not find ChatGPT sufficient in serious work–I have found the code and writing it produces is often immature at best, and downright incorrect at worst. It can be challenging for newcomers to tell the difference between these, and thus while I do recommend considering ChatGPT as part of your problem-solving toolbucket, I am imposing the following rules with respect to its usage in CIS352:

Slack/Email Policy

Please keep all questions related to course projects and policies on Slack–I use Slack quite a bit more than email, and only check email a few times a day.

For official business (notifications of course absence due to illness, or similar extenuating circumstances, etc…) please email me. I will work to acknowledge emails within 24 hours. I sometimes miss emails due to the large volume of email I receive; please feel free to email me again after 24 hours if you have not received an answer and I will get back to you as quickly as I can.

Please do not ask for extensions over email or Slack unless you believe you have an approved accomodation–there is a blanket late policy in place which takes precedent here, and the Autograder does not allow one-off project extensions.

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 contact me to discuss strategies and/or accommodations (academic adjustments) that may be essential to your success and to collaborate with the Center for Disability Resources (CDR) in this process.

If you would like to discuss disability accommodations or register with CDR, please visit Center for Disability Resources (https://disabilityservices.syr.edu/). Please call (315) 443-4498 or email disabilityresources@syr.edu for more detailed information.

Accreditation and Use of Student Work

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.

Faith Tradition Observances

Syracuse University’s Religious Observances Policy (https://policies.syr.edu/policies/university-governance-ethics-integrity-and-legal-compliance/religious-observances-policy/) recognizes the diversity of faiths represented in the campus community and protects the rights of students, faculty, and staff to observe religious holy days according to their traditions. Under the policy, students are given an opportunity to make up any examination, study, or work requirements that may be missed due to a religious observance, provided they notify their instructors no later than the academic drop deadline. For observances occurring before the drop deadline, notification is required at least two academic days in advance. Students may enter their observances in MySlide under Student Services/Enrollment/My Religious Observances/Add a Notification.

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 University’s 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 in class or related venues (Zulip, other chats with students), 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. As a notice: I am a mandatory Title IX reporter and thus am legally-compelled to report incidents such as sexual harassment, relationship violence, stalking, etc…

Slack

Slack is a messaging platform 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.