CS 430/530 Formal Semantics Paul Hudak Yale University Department of Computer Science Lecture 1 Course Overview September 6, 2007.

Slides:



Advertisements
Similar presentations
CSE 599F: Formal Verification of Computer Systems.
Advertisements

Group that looked at Miami syllabus. Current Syllabus (with regards to testing) 2: To be able to identify and eliminate errors in programs – 2.1: Describe.
Compiler Construction by Muhammad Bilal Zafar (AP)
Slide 01-1COMP 7370, Auburn University COMP 7370 Advanced Computer and Network Security Dr. Xiao Qin Auburn University
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani University of Bozen- Bolzano Lesson 4 – Software Testing.
CS/CMPE 535 – Machine Learning Outline. CS Machine Learning (Wi ) - Asim LUMS2 Description A course on the fundamentals of machine.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Syllabus (101)
Fall 2004 WWW IS112 Prof. Dwyer Intro1: Overview and Syllabus Professor Catherine Dwyer.
CSCD 555 Research Methods for Computer Science
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Overview Discrete Mathematics and Its Applications Baojian Hua
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
September 7, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
Concordia University Department of Computer Science and Software Engineering Click to edit Master title style ADVANCED PROGRAMING PRACTICES Introduction.
20 February Detailed Design Implementation. Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Introduction to Programming Environments for Secondary Education CS 1140 Dr. Ben Schafer Department of Computer Science.
CS 415: Programming Languages Course Introduction Aaron Bloomfield Fall 2005.
CS 3724: Introduction to Human Computer Interaction Chris North Jason Lee Szu-Chia Lu.
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
Introduction to Programming G50PRO University of Nottingham Unit 1 : Introduction Paul Tennent
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
USS Yorktown (1998) A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by.
Mobility, Security, and Proof-Carrying Code Peter Lee Carnegie Mellon University Lecture 1 Course Overview July 10, 2001 Lipari School on Foundations of.
1 Use of electronic information resources among the Croatian scientists in the field of social sciences in a pre-digital library environment: obstacles.
1 Commissioned by PAMSA and German Technical Co-Operation National Certificate in Paper & Pulp Manufacturing NQF Level 3 Operate a computer.
INTRODUCTION TO COMPUTER PROGRAMMING itc-314 LECTURE 01.
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
Syllabus and Class Policies MATH 130: Summer 2014.
Introduction to Network Security J. H. Wang Feb. 24, 2011.
Course: Software Engineering © Alessandra RussoUnit 1 - Introduction, slide Number 1 Unit 1: Introduction Course: C525 Software Engineering Lecturer: Alessandra.
CSc 2310 Principles of Programming (Java) Dr. Xiaolin Hu.
Course Introduction Software Engineering
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
Understanding the Academic Structure of the US Classroom: Syllabus.
CSc161 Software Quality Pete Sawyer & Alan Dix
CSE-321 Programming Languages Overview POSTECH March 5, 2007 박성우.
IFS410 – End User Support Chapter 11 Training Computer Users.
1/13 MER Design of Thermal Fluid Systems Professor Anderson Union College Spring 2012.
Flow Control: boolean expressions, “if” selection statements (Alice In Action, Ch 4) Slides Credit: Joel Adams, Alice in Action CS 120 Lecture September.
Mobility, Security, and Proof-Carrying Code Peter Lee Carnegie Mellon University Lecture 1 Course Overview July 10, 2001 Lipari School on Foundations of.
CS 541 Lecture Slides Sunil Prabhakar CS541 Database Systems.
 Course Overview Distributed Systems IT332. Course Description  The course introduces the main principles underlying distributed systems: processes,
Compiler Construction (CS-636)
1 Software Test Computer Science Department, Information Faculty Dr. KaiYu Wan.
Teaching Functional Verification – Course Organization Design Automation Conference Sunday, June 9, 2002.
FUNCTIONAL PROGRAMING AT WORK - HASKELL AND DOMAIN SPECIFIC LANGUAGES Dr. John Peterson Western State Colorado University.
CS 3724: Introduction to Human Computer Interaction Chris North Regis Kopper.
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering.
Syllabus and Class Policies MATH 130: Summer 2016.
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
Advanced Programing practices
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSc 1302 Principles of Computer Science II
Foundations of Programming Languages – Course Overview
CSE341: Programming Languages Lecture 26 Course Victory Lap
Foundations of Programming Languages – Course Overview
Introduction to CS II Data Structures
Organization of Programming Languages
Formal Semantics of Prog. Lang. – Introduction
Principles of Programming Languages
CS510 Concurrent Systems Jonathan Walpole.
Principles of Programming Languages
Advanced Programing practices
Type Systems for Programming Languages
Dr. Clincy Professor of CS
Presentation transcript:

CS 430/530 Formal Semantics Paul Hudak Yale University Department of Computer Science Lecture 1 Course Overview September 6, 2007

Today’s lecture Why you should study formal semantics. How I intend to teach this course.

Why take CS-430 ? Software reliability and security are the biggest problems faced by the IT industry today! You are likely to worry about them in your future jobs. It will give you an edge over your competitors: industry and most other schools don’t teach this. It will improve your programming skills – because you will have a better appreciation of what your programs actually mean. You will be better able to compare and contrast programming languages, or even design your own. It is an important and exciting area of research, with many new ideas and perspectives frequently emerging.

Arianne 5 On June 4, 1996, the Arianne 5 took off on its maiden flight. 40 seconds into its flight it veered off course and exploded. It was later found to be an error in reuse of a software component. (This picture became quite popular in talks on software reliability and related topics.)

“Better, faster, cheaper” In 1999, NASA lost both the Mars Polar Lander and the Climate Orbiter. Later investigations determined software errors were to blame.  Orbiter: Component reuse error.  Lander: Precondition violation.

USS Yorktown “After a crew member mistakenly entered a zero into the data field of an application, the computer system proceeded to divide another quantity by that zero. The operation caused a buffer overflow, in which data leaked from a temporary storage space in memory, and the error eventually brought down the ship's propulsion system. The result: the Yorktown was dead in the water for more than two hours.”

Therac-25 From , several cancer patients were killed or seriously injured as a result of being over- radiated by Therac-25, a radiation treatment facility. The problem was due to a subtle race condition between concurrent processes.

Computer Viruses Need I say more? For more “software horror stories”, see

Observations Failure often due to simple problems “in the details”. Small theorems about large programs would be useful. Need clearly specified interfaces and checking of interface compliance. Better languages would help!

Challenges The impact and cost of software failures will increase, as will the demand for extensibility. The distinction between “safety- critical” and “consumer electronics” software will fade away. Who will provide the technology for “safe” software systems?

Opportunities High assurance / reliability depends fundamentally on our ability to reason about programs. The opportunities for new languages as well as formal semantics, type theory, computational logic, and so on, are great.

The role of programming languages Civilized programming languages can provide “safety for free”.  Well-formed/well-typed  safe.  Idea: Arrange for the compiler to “explain” why the target code it generates preserves the safety properties of the source program. (“Proof-carrying code.”)

Course Overview

My Goals I have two goals: To teach the most common methods for specifying formal semantics. In particular, the denotational, operational, and axiomatic methods. This will give you the necessary tools to understand semantics specifications and to develop new ones. To survey existing language features to provide a deep understanding of what these features really mean, what they do, and how they compare. This will enable you to better evaluate existing languages and new ones as they are developed.

Prerequisites CS-201, CS-202, CS-223, CS-323 (or equivalents) Mathematical background: logic, sets, relations, functions, products, and unions. (See Appendix in Reynolds textbook.) A desire to learn!

Course requirements Class attendance is recommended  Outside material will be introduced. Problem sets  Problems from textbook.  Programming assignments. (We will prototype some of our semantics specifications in Haskell.) Reading  Selected chapters in the main textbook (Reynolds).  A couple of research papers.  Haskell tutorial if you don’t know Haskell. Grading  About 75% problem sets, 25% final exam (no midterm).

Rough Syllabus 1.Introduction and motivation (Reynolds Ch 1). 2.Denotational semantics of SIL: a Simple Imperative Language (Reynolds Ch 2). 3.Prototyping denotational semantics in Haskell (supplemental reading). 4.Axiomatic semantics of SIL (Reynolds Ch 3). 5.Continuations, and a new denotational semantics for extended SIL (Reynolds Ch 5). 6.Operational (transition) semantics for SIL (Reynolds Ch 6). 7.Semantics of non-determinism (Reynolds Ch 7). 8.The Lambda Calculus (Reynolds Ch 10). 8.Semantics of ML-like languages (Reynolds Ch 11). 9.Semantics of Haskell-like languages (Reynolds Ch 14). 10.Semantics of ISWIM-like languages (Reynolds Ch 13). 11.Continuation semantics for other language features (supplemental reading). 12.Monads and continuations (supplemental reading). 13.Equational logic (supplemental reading). 14.Denotational semantics of objects (supplemental reading). 15.Semantics of types (Reynolds Ch 15 and supplemental reading).

Course Webpage plucky.cs.yale.edu/cs430