CSE526 (Spring 2021)
Principles of Programming Languages
General Information
| Schedule
| Resources
| Requirements
General Information
Course description: This course is for students interested in
programming language concepts and design, with emphasis on abstraction
mechanisms. Topics include language semantics, programming paradigms, as
well as analysis and optimization methods. Such study enables deeper
understanding, better usage, and more efficient implementations. |
Prerequisites: CSE307, CSE304, or equivalent; or undergraduate
discrete math (predicate logic, sets, functions, relations) plus good
experience using two or more programming languages. | Credits:
3.
Instructor:
Annie Liu
| Office: New CS 237
| Phone: 631-632-8463
| Email: liu@cs.stonybrook.edu
| Office hours: Mon 12:40-1 PM, 2:20-3 PM, Thu 4:20-5 PM,
Fri 12:20-1 PM, 2:20-2:40 PM, or email for an appointment.
Lectures: Mon Fri 1-2:20 PM. For students who registered for the
hybrid section: NCS 120 is the teaching lab; you are required to attend in
person for lectures in March.
Textbook:
There is no required textbook for this course; best relevant book chapters,
lecture notes, and/or slides will be given under resources as the course
proceeds.
Grading: Lecture critiques: 2%
| In-class exercises: 8%
| Assignments: 20%
| Quizzes: 20%
| Project: 25%
| Final exam: 25%
| No late submission will receive credit.
Course homepage: http://www.cs.sunysb.edu/~liu/cse526/
Schedule
14 Weeks total
Unit 1. Overview and language processing
1. Language overview---what, why, and how:
data/control/module abstraction, formal semantics, interpreter/compiler
2. Syntax and semantics---language processing:
grammar rules, syntax-directed rules, concrete/abstract representations
Unit 2. Imperative languages and formal semantics
3. Imperative languages, formal semantics:
expressions/commands, operational semantics, big/small steps, induction
4. Denotational semantics, axiomatic semantics:
semantic functions, correctness assertions and proof rules, proofs
5. Project plan and design, and quiz 1
Unit 3. Database languages and efficient implementation
6. Database languages---sets and relations, queries:
set comprehension, aggregation, quantification
7. Efficient implementation: generating iteration,
optimization by incrementalization, data structure selection
Unit 4. Functional languages and type inference
8. Functional languages---recursive functions, higher-order,
call by value/name, eager/lazy, static/dynamic scoping, lambda calculus
9. Types and type inference: principal types, type constraints, unification,
Curry-Howard isomorphism, polymorphic type inference
10. Project implementation and testing, and quiz 2
Unit 5. Logic languages and reasoning
11. Logic languages---rules, search: Datalog, Prolog,
logic/relational/recursive programming, Answer set programming
12. Puzzles and AI---knowledge representation and reasoning:
Russell's paradox, negation in cycles, efficient implementation
Unit 6. Object-oriented languages and distributed programming
13. Object-oriented languages: encapsulation, inheritance,
evolution of abstraction, design patterns
14. Concurrent and distributed languages: shared-memory/message-passing,
synchronous/asynchronous, history queries
(possibly moving Unit 6 to be before Unit 4)
Resources
Google
Classroom for this course, for students in the course
References:
Readings:
Requirements
Follow all information in the Google Classroom for this course.
Attend all lectures and take good notes. This is the most efficient
way to learn the course materials, because we will both distill and
elaborate written materials and discuss important related materials. We
will start promptly on time. We will have every student participate in
solving problems and presenting solutions in class.
Do all course work. The readings are to help you preview and
review the materials discussed in the lectures. The assignments and
project are to provide concrete experiences with the basic concepts
and methods covered in the lectures. The exercises and quizzes are to
help check that you are keeping up with the lectures and the
assignments. The exams will be comprehensive.
If you have any questions, ask. Ask questions in class, in office
hours, and in the Q&A forum. Talk with your classmates, and share
ideas, but not solutions to assignments.
Your work:
Submission issues:
Grading issues:
Source for items below:
https://www.stonybrook.edu/commcms/provost/faculty/handbook/academic_policies/syllabus_statement.php
From the College of Engineering and Applied Sciences:
Final note (thanks Professor Shyam Sharma for sharing this):
College is more than the sum of the courses you take, or the numbers
on your transcript; here you also build relationships with professors
and advisors, academic staff and classmates. If you anticipate
requesting me (and this is true with any professor) to write
recommendation letters for internship, job application,
scholarship/fellowship, or graduate school, then it is wise to
demonstrate your best commitment to studies in this course. If I've
observed you as the kind of student college professors want to rave
about, I will rave about you in my letters. I respect in students a
genuine interest in learning and intellectual honesty in engaging with
complex ideas, regularity and punctuality in class, hard work and
collegiality with peers and instructor, significant progress and
resilience during the semester, a willingness to go beyond
"requirements", and so on. In a way, it starts with treating a
required course like this with curiosity and interest, as a good
learning opportunity, taking full advantage of the course and my
support. When I don't have much to say---or include clear, strong, and
positive details---I ask students to find another recommender who
knows their strengths better. I add this note on the syllabus because
students in the past have said that they "wish" they'd known about the
idea early on.
Annie Liu