Instructor: Ethan Cecchetti Comp Sci 704
Description: Instructor: Ethan Cecchetti Comp Sci 704 Principles of Programming Languages Tells a computer what to do What is a Program? Computer Science 704 Principles of Programming Languages Fall 2024 Not always obvious How do we know what it
Related Topics
Download Presentation
"Instructor: Ethan Cecchetti Comp Sci 704" is the property of its rightful owner. Permission is granted to download and print the materials on this website for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Presentation Transcript
slide1. Instructor: Ethan Cecchetti Comp Sci 704Principles of Programming Languages<br>
slide2. Tells a computer what to do What is a Program? Computer Science 704 – Principles of Programming Languages – Fall 2024 Not always obvious How do we know what it means?<br>
slide3. Computer Science 704 – Principles of Programming Languages – Fall 2024 Odd Program Behavior Wat: https://www.destroyallsoftware.com/talks/wat
[Gary Bernhardt 2012]<br>
slide4. Computer Science 704 – Principles of Programming Languages – Fall 2024 Odd Program Behavior “same object” In small groups:
Introduce yourself
Program & year
Interests
Analyze programs What should they do?
What do they do?<br>
slide5. 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?<br>
slide6. How do we know what a language does? Odd Program Behavior Computer Science 704 – Principles of Programming Languages – Fall 2024 What should we implement? Is there a bug? Need an implementation Test weird programs? Need a specification!<br>
slide7. How do we specify a programming language?
Industry: specification document
Formal Specification:
Syntax
Semantics Language Specification Computer Science 704 – Principles of Programming Languages – Fall 2024 What programs look like What programs do Often vague and ambiguous<br>
slide8. Computer Science 704 – Principles of Programming Languages – Fall 2024 Formal Semantics What happens when program runs Dynamic Semantics Reason about programs before they run Static Semantics Operational Semantics
Execution on abstract machine
Denotational Semantics
Program as mathematical object
Axiomatic Semantics
Logical formulae program obeys Type Systems
How sub-programs may interact
Static Analysis
Many properties Precisely define these ideas!<br>
slide9. You will be able to:
Define language features with formal models.
State and prove theorems about languages using a variety of techniques.
Analyze language properties with formal techniques. Learning Outcomes Computer Science 704 – Principles of Programming Languages – Fall 2024 Inference rules, denotational semantics, etc. Induction, logical relations, etc. Termination, secure information flow, etc. Type systems, abstract interpretation, etc.<br>
slide10. Highly mathematical content
No programming
Chalkboard lectures
Notes (hopefully) online after class What to Expect Computer Science 704 – Principles of Programming Languages – Fall 2024 Comfort with set theory, induction, and functional programming all helpful Written problem sets and exams This is the only (planned) slide lecture<br>
slide11. Participate
Provide feedback What to Expect: A Graduate Class Computer Science 704 – Principles of Programming Languages – Fall 2024 My first time teaching 704 Wide variety of backgrounds Questions help everyone learn!<br>
slide12. 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 What to Expect: Homeworks Computer Science 704 – Principles of Programming Languages – Fall 2024 New ideas, not just “lecture practice” Goal is learning, not evaluation<br>
slide13. Two take-home exams
One midterm (late Oct)
Cumulative final (Dec)
Likely 48-hour exams, available for 1 week
Very picky grading What to Expect: Exams Computer Science 704 – Principles of Programming Languages – Fall 2024 General idea often simple Course goal: learn to prove theorems very rigorously<br>
slide14. Grading Computer Science 704 – Principles of Programming Languages – Fall 2024 Stop by Ethan’s office (CS 7395) by Sept 18! (During office hours, please)<br>
slide15. More Information Computer Science 704 – Principles of Programming Languages – Fall 2024 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<br>
slide2. Tells a computer what to do What is a Program? Computer Science 704 – Principles of Programming Languages – Fall 2024 Not always obvious How do we know what it means?<br>
slide3. Computer Science 704 – Principles of Programming Languages – Fall 2024 Odd Program Behavior Wat: https://www.destroyallsoftware.com/talks/wat
[Gary Bernhardt 2012]<br>
slide4. Computer Science 704 – Principles of Programming Languages – Fall 2024 Odd Program Behavior “same object” In small groups:
Introduce yourself
Program & year
Interests
Analyze programs What should they do?
What do they do?<br>
slide5. 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?<br>
slide6. How do we know what a language does? Odd Program Behavior Computer Science 704 – Principles of Programming Languages – Fall 2024 What should we implement? Is there a bug? Need an implementation Test weird programs? Need a specification!<br>
slide7. How do we specify a programming language?
Industry: specification document
Formal Specification:
Syntax
Semantics Language Specification Computer Science 704 – Principles of Programming Languages – Fall 2024 What programs look like What programs do Often vague and ambiguous<br>
slide8. Computer Science 704 – Principles of Programming Languages – Fall 2024 Formal Semantics What happens when program runs Dynamic Semantics Reason about programs before they run Static Semantics Operational Semantics
Execution on abstract machine
Denotational Semantics
Program as mathematical object
Axiomatic Semantics
Logical formulae program obeys Type Systems
How sub-programs may interact
Static Analysis
Many properties Precisely define these ideas!<br>
slide9. You will be able to:
Define language features with formal models.
State and prove theorems about languages using a variety of techniques.
Analyze language properties with formal techniques. Learning Outcomes Computer Science 704 – Principles of Programming Languages – Fall 2024 Inference rules, denotational semantics, etc. Induction, logical relations, etc. Termination, secure information flow, etc. Type systems, abstract interpretation, etc.<br>
slide10. Highly mathematical content
No programming
Chalkboard lectures
Notes (hopefully) online after class What to Expect Computer Science 704 – Principles of Programming Languages – Fall 2024 Comfort with set theory, induction, and functional programming all helpful Written problem sets and exams This is the only (planned) slide lecture<br>
slide11. Participate
Provide feedback What to Expect: A Graduate Class Computer Science 704 – Principles of Programming Languages – Fall 2024 My first time teaching 704 Wide variety of backgrounds Questions help everyone learn!<br>
slide12. 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 What to Expect: Homeworks Computer Science 704 – Principles of Programming Languages – Fall 2024 New ideas, not just “lecture practice” Goal is learning, not evaluation<br>
slide13. Two take-home exams
One midterm (late Oct)
Cumulative final (Dec)
Likely 48-hour exams, available for 1 week
Very picky grading What to Expect: Exams Computer Science 704 – Principles of Programming Languages – Fall 2024 General idea often simple Course goal: learn to prove theorems very rigorously<br>
slide14. Grading Computer Science 704 – Principles of Programming Languages – Fall 2024 Stop by Ethan’s office (CS 7395) by Sept 18! (During office hours, please)<br>
slide15. More Information Computer Science 704 – Principles of Programming Languages – Fall 2024 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<br>