CSE526 (Spring 2022)
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 formal language semantics,
fundamental programming paradigms, as well as powerful analysis and
optimization methods. Students will gain knowledge for deeper
understanding, better usage, and more efficient implementations. |
Prerequisites: CSE307, CSE304, or equivalent; or undergraduate
discrete math with good analytical experience (predicate logic, sets,
functions, relations) plus good experience using two or more
programming languages (Python, C, Java, etc). | 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.
TA: Abe Leite
| Email: aleite@cs.stonybrook.edu
| Office hours: Tue and Wed 9:30-11:00 AM.
Lectures: Mon Fri 1-2:20 PM. Note that this is a hybrid
class. Most classes (including the first) will be on Zoom,
but exams will be in person.
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%
| Midterm exam: 15%
| Project: 40%
| Final exam: 15%
| 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
Unit 3. Database languages and efficient implementation
5. Database languages---sets and relations, queries:
set comprehension, aggregation, quantification
6. Efficient implementation: generating iteration,
optimization by incrementalization, data structure selection
7. Project phase 1 due, and midterm exam
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
Unit 5. Logic languages and reasoning
10. Logic languages---rules, search: Datalog, Prolog,
logic/relational/recursive programming, Answer set programming
11. Puzzles and AI---knowledge representation and reasoning:
Russell's paradox, negation in cycles, efficient implementation
Unit 6. Object-oriented languages and distributed programming
12. Object-oriented languages: encapsulation, inheritance,
evolution of abstraction, design patterns
13. Concurrent and distributed languages: shared-memory/message-passing,
synchronous/asynchronous, history queries
14. Project phase 2 due, and presentations
(possibly moving Unit 6 to be before Unit 4)
Resources
Google
Classroom for this course, for students in the course
References
Prerequisite 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
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 submitted work
Submission issues
Grading issues
University Policies
Annie Liu