CS 251: Principals of Programming Languages Syllabus

Course Description

This course introduces the principles underlying the design, semantics, and implementation of modern programming languages in major paradigms including function-oriented, imperative, and object-oriented. The course examines: language dimensions including syntax, naming, state, data, control, types, abstraction, modularity, and extensibility; issues in the runtime representation and implementation of programming languages; and the expression and management of parallelism and concurrency. Students explore course topics via programming exercises in several languages, including the development of programming language interpreters.

Distributions: MM - Mathematical Modeling and Problem Solving

Spring 2025

I'm extremely excited to be offering CS 251 this semester, which has not been taught at Wellesley in several years! CS 251 is no longer a required class for the major, which gives us a bit more flexibility in what path we take this semester.

Learning goals

In this class, you will:

Communication

Please sign up for the course Zulip via the email you get in the first week of class. Most course announcements will happen on Zulip rather than via email. Zulip is an open-source, Slack-like chat tool with a few unique features that make it a good fit for class discussion. It's also used by many open-source systems programming communities.

Work

Assignments

Assignments will typically be assigned on Thursday/Friday and due the following Thursday at 11:59pm. Some assignments will have components due earlier in the week, see the calendar for full details. All assignments will be submitted via Gradescope.

Time allocation

Students should expect to spend about 10 hours per week on assignments. In addition to the 150 minutes in class, this is approximately the 12 hours/week per course required by accreditation guidelines.

When you submit a homework assignment, you will also be asked to report how long you spent on it. This has no impact on your grade; it will help me ensure the course load is reasonable.

Late work

Most topics in this course build heavily on other topics, so I encourage you to try to submit by the listed deadline. In addition, my office hours are scheduled with respect to the listed deadlines.

If you need a short extension (excluding the final assignment), you can have one by default by filling out the 48-hour-extension request form (no further communication needed). If you need a longer extension, please reach out to me to discuss a plan. Work turned in past any discussed deadline or extension date will have a cap on the highest score you can achieve. The highest score for non-discussed late work is an 85 (that is, any score above 85 will be given an 85; lower scores will not change). Some assignments may have more firm deadlines on late work to enable cumulative later assignments, this will be noted in the assignment description.

Quizzes and Final Retakes

There will be 3 in-class, paper quizzes (in part, because research has consistently shown the "testing effect" on learning). Each quiz will focus on the corresponding third of the course, covering both conceptual questions and short programming problems.

Quizzes are closed note, with the exception of one page (standard 8.5 x 11 size, both sides allowed) of notes. You must handwrite your own notesheet; I will collect it at the end of each quiz.

Rather than a traditional final exam, we will use CS 251's final exam block as an opportunity for quiz retakes (a lightweight form of mastery-based grading). You may choose to retake 0-3 of the quizzes. Your final grade will be the higher of the two scores between your initial quiz and the final retake for that component (if completed).

Note that this means that if you miss a quiz, depending on the reason for missing it, I may ask you to simply take the final exam retake to determine your score for that quiz. This also means that if you are happy with your grade at the end of the semester, you do not need to show up for the final exam block.

Participation

This course includes frequent in-class exercises and class interactions which contribute to your final grade. Each lecture will have some component I'll use to help track participation. You can miss 2 lectures without it impacting your participation grade (though I would still appreciate a Zulip DM or email to let me know). After those 2, additional absences should be discussed with me for them to be considered excused.

Honor Code and Collaboration/Resource Policies

The Wellesley Honor Code applies to CS 251, and combines with specific course policies to determine what level of collaboration and use of online resources is acceptable.

In general, the CS 251 collaboration policy has two subparts:

1. Default for graded assignment:

2. [Independent] components:

Grading

Your final grade will consist of:

The following numeric scores guarantee these letter grades (boundaries may be softened, but not made more difficult): 93.5+: A, 90.0+: A-, 86.6+: B+, 83.3+: B, 80.0+: B-, 76.6+: C+, 73.3+: C, 70.0+: C-, 60.0+: D, <60.0: no credit.

Note that per college rules, the minimum grade to earn credit under credit/no credit grading is C. The minimum grade to pass and earn credit under normal letter grading is a D.

Classroom environment

It is extremely important that this course is a respectful and supportive environment. Computer science is a wonderful and exciting field, and I hope every student in this class feels that they belong in this discipline. I expect everyone in this course to do their part to make all students feel welcome. This includes avoiding making assumptions about your classmates’ backgrounds, being professional and kind when working together, and letting me know of any issues if they arise.

Mental health

Your mental health is more important than any course. Please let me know if you would like to talk (though you should know that I am a mandated reporter for certain topics). The college also has many resources available to you. If you feel you are falling behind in the course or have any other concerns, please contact me as soon as possible to work on possible solutions.

Feedback

This is a newly-redesigned course this year, so I am especially eager for feedback and suggestions! Please feel free to speak with me directly or use the anonymous feedback form if you would prefer.

Accommodations

Every student has a right to full access in this course. If you need any accommodations, please contact Wellesley’s Disability Services. If you need immediate accommodations, please arrange an appointment with me as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can provide assistance including screening and referral for assessments. Disability Services can be reached at disabilityservices@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website.

Religious Observance

Students whose religious observances conflict with scheduled course events should contact me in advance to discuss alternative arrangements. You may do this through the Wellesley College Religious Observance Notification system if you prefer.

Policies on Discrimination, Harassment, and Sexual Misconduct

Wellesley College considers diversity essential to educational excellence and we are committed to being a community in which each member thrives. The College does not allow discrimination or harassment based on race, color, sex, gender identity or expression, sexual orientation, ethnic or national origin or ancestry, physical or mental disability, pregnancy or any other protected status under applicable local, state or federal law.

If you or someone you know has experienced discrimination or harassment, support is available to you:

Attribution & Acknowledgments

This course draws on course material from previous iterations by Carolyn Anderson, Lyn Turbak, and Ben Wood, as well as materials from CSE 341 by Anjali Pal, Zachary Tatlock, and others at the University of Washington and CS 173 by Shriram Krishnamurthi and others at Brown University.