Course Description
A computer program is a formal, mathematical object. It has a well-defined syntax, and when compiled and executed it has a well-defined behaviour. It seems clear that we should be able to prove properties of programs mathematically; properties such as whether the answers that programs give are actually correct.For over 35 years, computer scientists have been slowly moving toward the goal of being able to mathematically prove properties of programs. For this, they have needed programming language semantics -- precise mathematical descriptions of what the syntactic constructs in a programming language are supposed to mean. Once we have such descriptions, we can associate each program with a mathematical structure such as an input/output relation, and then prove properties of those structures.
I believe that one of the things that has hindered progress towards proofs of properties of programs is that programming language semantics are traditionally based on lattice theory, not on logic. This has required us to define program-proving systems in separate logics and relate them to the semantics through complex theorems.
This course, based on a book that I am writing, gives a different view. Starting with symbolic logic and proof systems, it gives a logical foundation for logic, functional, imperative, and object-oriented programming languages, unifying and simplifying the semantics of all these forms of languages.
Students will gain an understanting of the mathematical structures used to characterize programming languages, such as symbolic logic, structured operational semantics, and the lambda-calculus. They will also gain an understanding of the relationships between the execution models of the various forms of programming languages.
Prerequisites
Instructor
Course Details
We will meet once a week for three hours, from 10:30am - 1:30pm on Mondays in MC 316.Textbook
There is no published textbook. I will post draft chapters of the book in progress on the course website. Students will be asked to read chapters before the classes in question. Students are asked not to circulate the draft material.Course Website
Student Evaluation
Every effort will be made to have assignments marked and handed back within 2 weeks of the hand-in date.
Topics (with approximate dates)
Assignments
Ethical Conduct
All assignments are individual assignments. You may discuss approaches to problems among yourselves; however, the actual details of the work (assignment coding, answers to concept questions, etc.) must be an individual effort. Assignments that are judged to be the result of academic dishonesty will, for the student's first offence, be given a mark of zero with an additional penalty equal to the weight of the assignment also being applied. You are responsible for reading and respecting the Computer Science Department's policy on Scholastic Offences and Rules of Ethical Conduct .
Please note that we have sophisticated software in place that will examine your code against everyone else in the class and report any incidents of copying. Plagiarism: Students must write their essays and assignments in their own words. Whenever students take an idea, or a passage from another author, they must acknowledge their debt both by using quotation marks where appropriate and by proper referencing such as footnotes or citations. Plagiarism is a major academic offence (see Scholastic Offence Policy in the Western Academic Calendar).