CS 454 (Spring 2025): Principles of Programming Languages
Table of contents
- Course Overview and Goals
- Prerequisites
- Logistics
- Grading
- Textbook and Resources
- Academic Integrity
- Course Feedback
- Respect in Class
- Copyrighted Course Materials
- Accommodations for Disabilities
- Student Case Management
- Mental Health and Wellness
- Title IX/Interpersonal Violence
- Other Policies and Support Resources
- Acknowledgments
Course Overview and Goals
In this course, we will explore the question, “What is a programming language?”. In other words, we will study the fundamental principles of programming language design and implementation. To do so, we will implement a series of increasingly expressive yet tiny programming languages, iteratively adding features to the languages under study. In the process, we will develop a mathematical understanding of programming languages, their formal semantics, and their type systems that ensure program correctness. We will use a functional programming language, Scala, to implement these toy languages. Overall, this course will enable you to (i) Think of programming languages as computational objects of study; (ii) Design and implement programming languages; (iii) Learn new programming languages quickly; (iv) Program in a modern functional programming language.
Prerequisites
You need to be comfortable programming in Java or C++ or some other programming language (at the level of CS 214, CS 314, or CS 253). This is not an introductory programming course.
Logistics
See Staff for the course staff. See Calendar for time/location of lectures and office hours. The lectures will be recorded but we highly encourage you to attend the lectures in person.
Grading
The overall course grade is divided in to the following components:
Weekly Assignments (About 12) | 50% |
Quizzes | 20% |
Final | 25% |
Class Participation and Attendance | 5% |
The quizzes will be conducted in the classroom during regular lecture hours. You will be informed about an upcoming quiz a few days in advance. To get full grades on class participation and attendance, you have to do the following:
- Introduce yourself on Teams in the first week of the course.
- Fill out a mid-semester feedback survey.
- Be present in the class for 5 roll-calls that will be conducted randomly during the semester. In the event that unplanned absences occur due to illness, family emergency, etc., you can seek an attendance allowance from the instructor. It is best to inform the instructor in advance, although we understand that this is not always possible.
Active engagement in the classroom and on Teams is highly encouraged!
Grading Thresholds
Letter grades will be assigned according to the following thresholds but the instructor reserves the right to curve up based on course circumstances.
Score Range | Letter Grade |
---|---|
>= 97 | A+ |
>= 93 | A |
>= 90 | A- |
>= 87 | B+ |
>= 83 | B |
>= 80 | B- |
>= 77 | C+ |
>= 73 | C |
>= 70 | C- |
>= 67 | D+ |
>= 63 | D |
>= 60 | D- |
< 60 | F |
Late Work Policy
Assignments will be due at 11:59 PM on the dates specified in Canvas and the course schedule. We ask that you try your best to submit assignments on time, even if your solution is incomplete. Any late work will be penalized as follows:
- Less than 24 hours late: 5% penalty on the maximum possible grade for the assignment
- More than 24 hours late: Submission not accepted
Late submissions without penalty and extensions beyond 24 hours will only be granted on a case-by-case basis in exceptional circumstances. Such extensions are more likely when permission is sought in advance, for reasons which are unexpected and beyond your control, and which involve only a short extension. For any such extension, appropriate documentary evidence will be required. Even under such exceptional circumstances, the instructor reserves the right to assign a score penalty to late work, depending on the circumstances and degree of lateness.
Textbook and Resources
The primary reference for this course will be the course notes that will be uploaded after each lecture on Canvas and this website. The following textbooks are good additional resources:
- Essentials of Programming Languages, 3rd edition by Daniel P. Friedman and Mitchell Wand.
- Programming in Scala, 4th edition by Martin Odersky, Lex Spoon, and Bill Venners.
- Practical Foundations for Programming Languages by Robert Harper.
- Theories of Programming Languages by John C. Reynolds.
Academic Integrity
This course will adhere to CSU Academic Integrity Policy as found in the the General Catalog and the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Student Conduct Services.
Academic integrity lies at the core of our common goal: to create an intellectually honest and rigorous community. Because academic integrity, and the personal and social integrity of which academic integrity is an integral part, is so central to our mission as students, teachers, scholars, and citizens, I will ask that you affirm the CSU Honor Pledge as part of completing your work in this course.
Further information about Academic Integrity is available at CSU’s Academic Integrity - Student Resources.
Collaboration Policy
All the solutions you turn in for the assignments must be completely your own work. However, you are welcome to work together in learning the material covered in the lectures. You are also allowed to discuss assignments with other students. But the final answers and code you submit must explicitly be your own work. Specifically,
- Do not show any partial solution to another student.
- Never share code with other students or on a public-facing website. (Shared code is surprisingly easy to detect.)
- Do not search the Internet for solutions. Don’t search on Stack Overflow or anywhere else.
- Do ask someone if you’re confused about what the assignment is asking for.
- Cite any resources such as web sites, academic papers, or books used to develop your solution. Similarly, acknowledge anyone with whom you discussed the assignment.
- Definitely ask the course staff if you’re not sure whether or not something is OK.
Note that these guidelines do not prevent you from discussions with other students. For example, you may discuss the assignment at the whiteboard with another student, but then you must erase the whiteboard, go home, and write up your solution individually (while also acknowledging the person with whom you discussed).
Use of Generative AI Tools
Generative AI tools such as ChatGPT or Claude are increasingly powerful and might be capable of solving some of the assignments. While you may use these tools to understand the course material, the assignments must be your own work and the use of these tools for generating assignment solutions is strictly prohibited (will be treated as a violation of academic integrity). There are multiple reasons why these tools are detrimental to your learning experience:
- They rob you of the ability to think and learn the concepts for yourself since solving problems is an essential step to gaining a solid understanding of the material.
- You will struggle with the in-classroom quizzes and exams where you will not have access to these tools.
- While we acknowledge that these tools are likely to become an important of a software engineer’s workflow in the future, you are much more likely to use these tools in an effective manner if you already have expertise in the relevant technical topics. Developing such expertise requires putting in the effort to learn these topics without the assistance of these tools.
- These tools are prone to generating imperfect or even incorrect solutions, so trusting them blindly can lead to bad consequences.
Ultimately, you will get out of the class what you put in. Simply copying and pasting code from ChatGPT/Claude will not lead to any learning. If you are stuck on the assignments, reach out to the course staff or your fellow students. The course staff is eager to help you!
Course Feedback
If you have any concerns or are not satisfied with the learning experience, please submit anonymous course feedback at the link provided on the Canvas landing page for this course. You do not need to wait until the end of the semester to provide this feedback. I will try to take your feedback into account as I teach the material.
Respect in Class
In order to foster curiosity, learning, and an interactive classroom, it is essential to create an environment where everyone—the instructor, TA, and students—feel respected. We require that all communication, in classroom and online, be courteous and inclusive. If any of the communication in the course does not meet this standard, please contact the instructor as soon as possible. If you are uncomfortable discussing with the instructor—for instance, if the instructor is the cause of the problem—please contact your academic advisor or the department chair.
In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that your use of an electronic device is becoming a distraction to others, you may be asked to to turn it off and put it away. On the other hand, if you encounter behavior that distracts from your learning, please inform the course staff.
Please also refer to the CSU Principles of Community as a guideline for the expected behavior in the course:
Inclusion: We create and nurture inclusive environments and welcome, value and affirm all members of our community, including their various identities, skills, ideas, talents and contributions.
Integrity: We are accountable for our actions and will act ethically and honestly in all our interactions.
Respect: We honor the inherent dignity of all people within an environment where we are committed to freedom of expression, critical discourse, and the advancement of knowledge.
Service: We are responsible, individually and collectively, to give of our time, talents, and resources to promote the well-being of each other and the development of our local, regional, and global communities.
Social Justice: We have the right to be treated and the responsibility to treat others with fairness and equity, the duty to challenge prejudice, and to uphold the laws, policies and procedures that promote justice in all respects.
Copyrighted Course Materials
Please do not share materials from this course in online, print, or other media. The course materials, include your or anyone else’s solutions to the lab assignments, quizzes, and exams. Materials authored by third parties and used in the course are also subject to copyright protections. Posting course materials on external sites (commercial or not) violates both copyright law and the CSU Student Conduct Code. In particular, do not post your solutions to the assignments and projects in a public source code repository, such as public GitHub repositories. Students who share course content without the instructor’s express permission, including with online sites that post materials to sell to other students, could face appropriate disciplinary or legal action.
Accommodations for Disabilities
We will go by the policies set forth by the University. Please inform the instructor about any accommodations you may need early in the semester.
CSU is committed to the principle of universal learning. This means that our classroom, our virtual spaces, our practices, and our interactions should be as inclusive as possible. Mutual respect, civility, and the ability to listen and observe others carefully are crucial to universal learning.
If you are a student who will need accommodations in this class, please contact your instructor to discuss your individual needs. Any accommodation must be discussed in a timely manner. A verifying memo from The Student Disability Center (SDC) may be required before any accommodation is provided.
The Student Disability Center (SDC) has the authority to verify and confirm the eligibility of students with disabilities for the majority of accommodations. While some accommodations may be provided by other departments, a student is not automatically eligible for those accommodations unless their disability can be verified and the need for the accommodation confirmed, either through SDC or through acceptable means defined by the particular department. Faculty and staff may consult with the SDC staff whenever there is doubt as to the appropriateness of an accommodative request by a student with a disability.
The goal of SDC is to normalize disability as part of the culture of diversity at Colorado State University. The characteristic of having a disability simply provides the basis of the support that is available to students. The goal is to ensure students with disabilities have the opportunity to be as successful as they have the capability to be.
Support and services are offered to student with functional limitations due to visual, hearing, learning, or mobility disabilities as well as to students who have specific physical or mental health conditions due to epilepsy, diabetes, asthma, AIDS, psychiatric diagnoses, etc. Students who are temporarily disabled are also eligible for support and assistance.
Any student who is enrolled at CSU, and who self-identifies with SDC as having a disability, is eligible for support from SDC. Specific accommodations are determined individually for each student and must be supported by appropriate documentation and/or evaluation of needs consistent with a particular type of disability. SDC reserves the right to ask for any appropriate documentation of disability in order to determine a student’s eligibility for accommodations as well as in support for specific accommodative requests. The accommodative process begins once a student meets with an accommodation’s specialist in the SDC.
Student Case Management
We will go by the policies set forth by the University.
The Student Case Management & Referral Coordination office provides crisis prevention and intervention services. In difficult or crisis situations, students may find it challenging to navigate the academic consequences, university processes, and campus and community resources available. Student Case Management consult with students, faculty, staff, families, and providers to offer guidance on the next best steps. We help find the best approach to support students in the immediate situation and provide referrals for ongoing support.
When students have difficult or life impacting issues that affect their academic work, it is recommended that you speak directly with your professor about your course work. Open and regular communication with your professor is the recommended first course of action.
Mental Health and Wellness
CSU is a community that cares. You are not alone. CSU Health Network Mental Health Services has trained professionals who can help. Your student fees provide access to a wide range of mental health and well-being support services.
Call Mental Health Services at (970) 491-6053, and they will work together with you to find out which services are right for you.
CSU Health Network Mental Health Services
Student mental health and well-being resources
If you are concerned about a friend or peer, use Tell Someone by calling (970) 491-1350 or visiting Tell Someone to share your concerns with a professional who can discreetly connect the distressed individual with the proper resources. Rams Take Care of Rams. Reach out and ask for help if you or someone you know is having a difficult time.
Title IX/Interpersonal Violence
We will go by the policies set forth by the University.
For the full statement regarding role and responsibilities about reporting harassment, sexual harassment, sexual misconduct, domestic violence, dating violence, stalking, and the retaliation policy please go to: Title IX – Sexual Assault, Sexual Violence, Sexual Harassment.
If you feel that your rights have been compromised at CSU, several resources are available to assist:
- Student Resolution Center, 200 Lory Student Center, 491-7165
- Office of Equal Opportunity, 101 Student Services, 491-5836
A note about interpersonal violence: If you or someone you know has experienced sexual assault, relationship violence and/or stalking, know that you are not alone. As instructors, we are required by law to notify university officials about disclosures related to interpersonal violence. Confidential victim advocates are available 24 hours a day, 365 days a year to provide support related to the emotional, physical, physiological and legal aftermath of interpersonal violence. Contact the Victim Assistance Team at: 970-492-4242.
Other Policies and Support Resources
Please see this for other policies relevant to the course and resources to help with various challenges you may encounter.
Acknowledgments
The materials for this course including the lectures notes, assignments, and projects were originally developed by Prof. Sriram Sankaranarayanan for the course Principles of Programming Languages (CSCI 3155) offered at the University of Colorado Boulder. I have only made minor modifications to these materials and am very grateful to Sriram for his generosity. In developing this course, I have also consulted materials developed by Prof. Bor-Yuh Evan Chang at University of Colorado Boulder, Prof. Shriram Krishnamurthi at Brown University, Prof. Steven Holtzen at Northeastern University, Prof. Adrian Sampson at Cornell University, and Prof. Lindsey Kuper at UC Santa Cruz.
This website is generated using Jekyll with the theme Just the Class developed by Kevin Lin.