Lecture 20: Exam Review

This was the final lecture for the course, directed in particular at visiting students who will be taking an exam shortly: with some general information on assessment practices, advice on exam technique, and specific details on the exam structure for this course. I also went through some example questions from previous exams, circulated earlier. The … Continue reading Lecture 20: Exam Review


Guest Lecture: Maria Gorinova

Probabilistic Programming:What is it and how to improve it? Maria Gorinova 3–4pm Tuesday 29 NovemberDrummond LibraryG.10 GeosciencesProbabilistic programming languages and frameworks, such as Infer.NET, attempt to unify general purpose programming with probabilistic modelling, in order to introduce a more abstract and powerful way of applying probabilistic models to real-world problems. This approach is becoming especially … Continue reading Guest Lecture: Maria Gorinova

Lecture 18: Concurrency and More in Rust

This afternoon's lecture completed the review of Rust with an exploration of how references and ownership interact with threaded concurrency. Impressively, the same mechanisms that ensure safe memory access also give data-race freedom; and applications of marker traits then extend that to guarantees about channel-based communication. All is not entirely straightforward, though: programming under Rust's … Continue reading Lecture 18: Concurrency and More in Rust

Lecture 17: Traits and References in Rust

Today's lecture presented the core of Rust's claim to provide safe systems programming: the use of move semantics, reference ownership and borrowing to provide precise and powerful memory-safe programming without runtime overhead. The features that provide this form a detailed deconstruction of what in other languages would be objects, but in Rust are carefully prised … Continue reading Lecture 17: Traits and References in Rust

Guest Lecture: Andrew Kennedy

The Hack Programming Language:Types for PHP Andrew Kennedy 3–4pm Friday 18 NovemberGaddum Lecture Theatre G.81 George Square Facebook’s main website, ads platform, and much of its internal tooling is implemented in PHP, a language not known for elegance or best practice in programming language design. (See http://phpsadness.com, for example.) Over the last three years Facebook … Continue reading Guest Lecture: Andrew Kennedy

Lecture 15: The Rust Programming Language

This final APL topic addresses programming for memory safety, and in particular the techniques used in the Rust language. Rust is a fairly recent language, designed for “safe systems programming”: providing low-level precise control for programmers, minimal execution overheads, and promises about correct use of memory and threads. In this short introductory lecture I covered … Continue reading Lecture 15: The Rust Programming Language

Lecture 14: Certifying Correctness

This afternoon's lecture presented ways to take proofs of code properties beyond correctness or safety of specific code into the domain of mobile applications, guarantees of trustworthiness, and complete systems. It's now standard to use digital certificates to authenticate software, providing information about where it comes from. However, this doesn't actually say anything about the … Continue reading Lecture 14: Certifying Correctness