CSc 71010: Programming Languages
3 hrs, 3 credits. Computer Science, City University of New York (CUNY) Graduate Center.
Contents
- 1 Details
- 2 Course Description
- 3 Topics
- 4 Suggested Previous Courses and Knowledge
- 5 Textbooks and Materials
- 6 Learning Goals
- 7 Assessment
- 8 Key Dates
- 9 Homework
- 10 Exams
- 11 Attendance
- 12 Academic Violations
- 13 Office Hours
- 14 Email
- 15 Bulletin Board
- 16 Counseling & Wellness Services
- 17 Special Needs
- 18 ADA Compliance
- 19 Family Educational Rights and Privacy Act (FERPA)
- 20 Sexual Misconduct
- 21 Instructor Biography
- 22 Credits
Details
Field | Value |
---|---|
Instructor: | Raffi Khatchadourian |
Office: | TBD |
Email: | [email protected] |
Phone: | TBD |
Office hours: | See Bb. |
Semester: | Spring 2025 |
Section: | CSc 71010-01 (53327) |
Course Description
This course is intended to be a survey on the fundamental concepts and principles that underlie current and emerging methods, tools, and techniques for the design and implementation of modern programming languages. This includes the understanding and appreciation of topics in designing and implementing modern programming languages such as attribute grammars, operational semantics, (static and dynamic) type systems, abstract interpretation, and language implementation via interpreters and compilers. We may also discuss programming language concepts for Machine Learning (ML) and Deep Learning (DL) systems, possibly including how Large Language Models (LLMs) are influencing the theory and practice of programming language design and implementation.
Topics
Please note that this schedule is tentative:
- Attribute grammars
- Operational semantics
- Abstract interpretation
- Type systems
- Control-flow analysis
- Data-flow analysis
- Compiler optimizations
- Programming language concepts for Machine Learning (ML) and Deep Learning (DL) systems.
Suggested Previous Courses and Knowledge
- CSc 70010: Algorithms.
- Computer Theory or equivalent, including formal languages and grammars.
- An undergraduate course in programming languages.
- Programming experience in an imperative and Object-Oriented, high-level language (e.g., C++, Java, Python).
Textbooks and Materials
While there are no required texts, there are readings from the books listed below. All books are available at the library, but please do not check them out from the GC library. I have entered a reservation request.
Title | Author | ISBN |
---|---|---|
Formal Specification of Programming Languages: A Panoramic Primer | Pagan | 9780133290523 |
Formal Syntax and Semantics of Programming Languages (online) | Slonneger and Kurtz | 9780201656978 |
Compilers: Principles, Techniques, & Tools (2nd ed.) | Aho, Lam, Sethi, and Ullman | 9780321486813 |
Semantics with Applications: A Formal Introduction (online) | Nielson and Nielson | 9780471929802 |
Types and Programming Languages | Pierce | 9780262162098 |
Please also refer to my notes on type constraints.
Learning Goals
- Be able to write attribute grammars and derivations of simple programs.
- Be able to understand and define basic formal semantics of programming languages.
- Be able to formulate and prove type safety theorems.
- Be able to implement (possibly parts of) an interpreter or compiler for a small, hypothetical programming language.
- Be able to understand and implement a type inference algorithm.
- Be able to understand and implement an abstract interpretation algorithm.
Assessment
Category | Percentage |
---|---|
Assignments | 20% |
Project | 25% |
Participation | 5% |
Midterm Exam | 25% |
Final Exam | 25% |
Key Dates
Event | Date |
---|---|
Class held on Tuesday | Feb 18 |
Midterm exam | Mar 17 |
No classes scheduled | Mar 31 |
Withdrawal deadline | Apr 1 |
Spring recess | Apr 12--20 |
Final exam | May 19 |
Homework
The course will include several written assignments and programming projects. Each will be assigned in Blackboard along with submission instructions. Assignments will be uploaded to Blackboard and the programming projects will be pushed to GitHub classroom. The exact instructions will follow. The projects must include command-line instructions on how to run the program.
Notes
- Deadlines and due dates for assignments will be assigned in class.
- Late assignments will be penalized.
- No extensions will be given for extra credit assignments, if applicable.
- Assignments must result from individual effort unless otherwise noted (e.g., group projects).
Exams
Test make-ups will be given if and only if:
- the request is made sufficiently in advance of the test, and
- the make-up is scheduled prior to the next class.
Attendance
Attendance is expected for class meetings. Student are responsible for obtaining and covering any material missed due to absence.
Academic Violations
The classroom environment employed will be that of a professional one. While students may discuss course materials and assignments with others, any submitted work in this course must be the result of individual effort only. Students are strongly advised to read the following resources regarding academic integrity:
Office Hours
Office hours will be held in person once a week. See Bb for details. Attending office hours is optional, no appointment is necessary, and appointments cannot be made during office hours. Students should arrange an alternative meeting time if the scheduled office hours conflict with their schedules.
Emails to the instructor must be via a CUNY GC email address for FERPA reasons. Please ensure that your correct email address is entered into the CUNY Blackboard.
Bulletin Board
Students should check the CUNY Blackboard (Bb) regularly for class materials. Students should ensure that they have configured Bb to use a CUNY email address. Students are responsible for any emails the instructor send there.
Counseling & Wellness Services
The Wellness Center Student Counseling Services offers short-term individual and group counseling and psychotherapy, couples counseling, consultation and referral services, and various programs and workshops relevant to graduate student life. More information can be found on the Counseling Services website.
Special Needs
Students with special needs should see me for accommodation.
ADA Compliance
It is Graduate Center and CUNY policy to provide appropriate accommodations to students with disabilities. Any student with a disability who may need accommodations in this class is advised to speak directly to the manager of Student Disability Services, located in Student Affairs, room 7301, or call 212-817-7400 as early in the semester as possible. All discussions will remain confidential. More information can be found on the Disabilities Services website.
Family Educational Rights and Privacy Act (FERPA)
Please review the student rights concerning education records.
Sexual Misconduct
Please review the CUNY policy on sexual misconduct.
Instructor Biography
Raffi Khatchadourian is an Associate Professor in the Computer Science Department at Hunter College and the Graduate Center of the City University of New York (CUNY). He received his MS and PhD degrees in Computer Science from Ohio State University and BS degree in Computer Science from Monmouth University in New Jersey. Prior to joining CUNY, he was a Software Engineer at Apple, Inc. in Cupertino, California, where he worked on Digital Rights Management (DRM) for iTunes, iBooks, and the App store. He also developed distributed software that tested various features of iPhones, iPads, and iPods. His research focus is techniques for automated software evolution, particularly those related to automated refactoring and source code recommendation systems with the goal of easing the burden associated with correctly and efficiently evolving large and complex software.
Credits
Portions of this syllabus are based on those of Atanas Rountev, Neelam Soundarajan, Mike Bond, and Subash Shankar.