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

Programming Language Pragmatics by Michael Scott. Morgan Kaufmann Publishers. 3rd edition 2009 or 4th edition, 2015. This is an excellent textbook that covers both programming language design and implementation.

The Formal Semantics of Programming Languages by Glynn Winskel, The MIT Press, 1993. This is an excellent book that covers programming language semantics.

Programming languages and tools at https://hyperpolyglot.org/, with commonly used features in a side-by-side format, and with explanations by examples.

Prerequisite readings

Undergraduate Programming Languages background, Chapter 1 of Scott

Undergraduate Discrete Math background, Chapter 1 of Winskel

Python | Python Documentation (read Tutorial, browse Library Reference, and when needed look up Language Reference and rest)


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

Your handins must include the following information at the top: your name, student id, course number, assignment number, and due date, and must be submitted in a neat and organized fashion.

Your programming solutions must be submitted with a README.txt file explaining where things are, what you did and found for the assignment (that is not described in the assignment handout), and how to run and test your program. This file is worth a non-trivial portion of the grade.

Your approach to solving problems is as important as your final solutions; you need to show how you arrived at your solutions and include appropriate explanations. Always include good explanations in your README file and good comments in your code.

Your homework and project submissions must be your own work. You are not permitted to share, borrow, or even look at another student's work while completing your own homework. Likewise, copying material from any source other than what is specified by the instructor will constitute cheating. You may discuss ideas with others and look up references, but you must write up your solutions independently and credit all sources that you used. Any evidence that answers have been copied, shared, or transmitted in any way, including the use of answers downloaded from the Internet or written by others previously, will be regarded as evidence of academic dishonesty. Anyone involved will be reported.

Submission issues

Neither extensions nor late submissions will be approved under normal circumstances. If some emergency or other circumstances truly beyond your control prevent you from submitting your assignment on time, supply the instructor with suitable documentation and notification prior to the assignment deadline. The instructor will also refer you to the Dean of Students for follow-up consultation.

Students are urged to plan ahead to avoid problems such as computer failures at the last minute. If your assignment is incomplete before it is due, turn in whatever you have. You are advised to budget your time wisely and to start working on an assignment the day it is posted.

Grading issues

The final grade you receive in this class will reflect, as far as possible, the extent to which you have mastered the concepts and their applications. How much someone needs a grade, or how close they are to the next higher grade, will have no effect on grade. As the instructor, I want everyone to do well in this course, and will make every reasonable effort to help you understand the material taught. However, the grades provided at the end of the semester are final, except for rare situations involving grading errors. They will not be altered for other reasons, so please do not ask me to do so.

If you think you found grading errors, please arrange a re-grading within one week of receiving the graded work; later requests will not be entertained.

To promote consistency of grading, issues about work graded by a TA should be addressed first to the TA and then, if the issues are not resolved, to the instructor.

University Policies

Academic Integrity

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html

Student Accessibility Support Center

If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to the following website: https://ehs.stonybrook.edu//programs/fire-safety/emergency-evacuation/evacuation-guide-disabilities and search Fire Safety and Evacuation and Disabilities.

Critical Incident Management

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.

Until/unless the latest COVID guidance is explicitly amended by SBU, during Spring 2022 "disruptive behavior" will include refusal to wear a mask during classes. For the latest COVID guidance, please refer to: https://www.stonybrook.edu/commcms/strongertogether/latest.php


Annie Liu