
Programming Language Concepts and Semantics
Explore the principles of programming languages from formal semantics to type systems. Understand the behavior of programs and the importance of language specifications in computer science education. Dive into dynamic, static, operational, denotational, and axiomatic semantics along with type systems and static analysis. Gain insights into how to precisely define these fundamental ideas.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Comp Sci 704 Principles of Programming Languages Instructor: Ethan Cecchetti
What is a Program? Tells a computer what to do How do we know what it means? Not always obvious Computer Science 704 Principles of Programming Languages Fall 2024
Odd Program Behavior Wat: https://www.destroyallsoftware.com/talks/wat [Gary Bernhardt 2012] Computer Science 704 Principles of Programming Languages Fall 2024
Odd Program Behavior JavaScript Python same object class Test { amI(obj) {return this === obj} } a = [1], 2 a[0] += [3] In small groups: Introduce yourself - Program & year - Interests Analyze programs var t = new Test(); t.amI(t) var g = t.amI; g(t) What should they do? What do they do? Computer Science 704 Principles of Programming Languages Fall 2024
Odd Program Behavior: Java class A { static final int a = B.b + 1; } class B { static final int b = A.a + 1; } What should this do? Computer Science 704 Principles of Programming Languages Fall 2024
Odd Program Behavior How do we know what a language does? Test weird programs? Need an implementation Is there a bug? What should we implement? Need a specification! Computer Science 704 Principles of Programming Languages Fall 2024
Language Specification How do we specify a programming language? Industry: specification document Often vague and ambiguous Formal Specification: Syntax Semantics What programs do What programs look like Computer Science 704 Principles of Programming Languages Fall 2024
Precisely define these ideas! Formal Semantics Dynamic Semantics Static Semantics What happens when program runs Operational Semantics Execution on abstract machine Denotational Semantics Program as mathematical object Axiomatic Semantics Logical formulae program obeys Reason about programs before they run Type Systems How sub-programs may interact Static Analysis Many properties Computer Science 704 Principles of Programming Languages Fall 2024
Learning Outcomes Inference rules, denotational semantics, etc. You will be able to: Define language features with formal models. State and prove theorems about languages using a variety of techniques. Induction, logical relations, etc. Analyze language properties with formal techniques. Termination, secure information flow, etc. Type systems, abstract interpretation, etc. Computer Science 704 Principles of Programming Languages Fall 2024
What to Expect Highly mathematical content Comfort with set theory, induction, and functional programming all helpful No programming Written problem sets and exams This is the only (planned) slide lecture Chalkboard lectures Notes (hopefully) online after class Computer Science 704 Principles of Programming Languages Fall 2024
What to Expect: A Graduate Class Participate Questions help everyone learn! Wide variety of backgrounds Provide feedback My first time teaching 704 Computer Science 704 Principles of Programming Languages Fall 2024
What to Expect: Homeworks New ideas, not just lecture practice Written problem sets Challenging material Work in groups, start early! Grades are on an effort scale engaged with material, did reasonably well + did something surprisingly awesome 0 major gaps or significant misunderstanding Goal is learning, not evaluation unusual Computer Science 704 Principles of Programming Languages Fall 2024
What to Expect: Exams Two take-home exams One midterm (late Oct) Cumulative final (Dec) Likely 48-hour exams, available for 1 week Very picky grading Course goal: learn to prove theorems very rigorously General idea often simple Computer Science 704 Principles of Programming Languages Fall 2024
Grading Assignment Problem Sets Midterm Final Participation Points 45% 25% 25% 5% Stop by Ethan s office (CS 7395) by Sept 18! (During office hours, please) Computer Science 704 Principles of Programming Languages Fall 2024
More Information Instructor: Ethan Cecchetti Office: CS 7395 Office Hours: 2-3pm Wed, or by appointment Contact: cecchetti@wisc.edu Course Page: cecchetti.sites.cs.wisc.edu/cs704/2024fa.html Computer Science 704 Principles of Programming Languages Fall 2024