CSE307 (Spring 2023)
Principles of Programming Languages
General Information
| Schedule
| Resources
| Requirements
General Information
Course description:
This course is an introduction to programming language design and
implementation. From the design point of view, we will study language
features as tools for expressing what and how to compute. From the
implementation point of view, we will discuss interpreters for
understanding language features and discuss compilers as tools for
mapping language features onto computer hardware. The course will
touch on a variety of languages in different programming paradigms.
Rather than dwell on the features of any particular language, we will
focus instead on understanding the commonalities and differences among
languages, the reasons for them, and the implications of them.
Students will do biweekly programming assignments, mostly in Python, to better
understand language features and language processing.
| Prerequisites: C or higher: CSE 216 or CSE 219 or CSE 260, CSE 220,
CSE major
| Credits: 3
| Official description and learning outcomes
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.
TAs:
Sucharitha Inapanuri
| TA Office: CS 2126
| Email: sucharitha.inapanuri@stonybrook.edu
| Office hours: Tue Fri 4:30-5:30 PM, Thu 5:30-6:30 PM.
Kushaal Hulsoor
| Email: khulsoor@cs.stonybrook.edu
| Office hours: by appointment.
Lectures: Mon Fri 1-2:20 PM, New CS 120 (Note: the first class
will be on Zoom)
Textbook:
Programming
Language Pragmatics by Michael Scott. 4th Edition, Morgan
Kaufmann Publishers, 2016.
Errata.
This is an excellent textbook that covers both
language design and implementation. Relevant additional materials will be
given under resources as the course proceeds.
Grading: Lecture critiques: 5%
| In-class exercises: 10%
| Assignments: 10%
| 2 Quizzes: 2 x 20%
| Final exam: 35%
| Extra-credit project: 15%
| No late submission will receive credit.
Course homepage: http://www.cs.stonybrook.edu/~liu/cse307/
Schedule
14 Weeks total for 5 units: 13 topics, each two lectures, plus 2 quizzes
Unit 1. Overview and language examples
1. Language overview---what, why, and how:
data/control/module abstraction, interpreter/compiler
2. Language examples---Python, SML, Prolog, and more:
sets, functions, rules, objects, concurrent/distributed
Unit 2. Language processing
3. Syntax analysis---scanning, parsing:
RE, NFA/DFA/min DFA, CFG, LL/top-down vs LR/bottom-up parsers
4. Semantic analysis---static semantics:
AG, attribute eval., action routines, AST, type checking, code gen.
Quiz 1 (Feb. 20, 2023)
5. Names----scopes and bindings:
static/stack/heap obj., GC, scoping: sta./dyn., aliasing, polymorphism
Unit 3. Data types and control flows
6. Imperative languages---expression eval., variable as value vs reference,
assignment/seq'g/sel'n/iteration, recursion, generator, nondeterminism
7. Data types---record/variant, array/sequence/set, pointer, recursive:
typing: strong/weak/static/dynamic, type system/checking/inference
Unit 4. Data abstraction and control abstraction
8. Database languages---sets and relations, queries:
comprehension/aggregation/quantification, invariants, incremental updates
9. Functional languages---recursive functions, call by reference/value/name,
eager/lazy, higher-order, lambda calculus
Quiz 2 (Apr. 7, 2023)
10. Logic languages---rules, search, efficiency:
logic/relational/recursive programming, tabling, negation/aggregation
Unit 5. Module abstraction and concurrency
11. Object-oriented languages---encapsulation, inheritance:
objects, attributes, multiple inheritance, evolution of abstraction
12. Concurrent and distributed languages: shared-memory/message-passing,
thread/process, synchronous/asynchrounous, history queries
13. Language review and outlook---ease of programming, integrated languages:
correctness/efficiency/productivity, clarity, procedural/declarative
Final exam (May 15, 2023, 2:15-5:00 PM)
Resources
Google
Classroom for this course, for students in the course
References
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
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