Student Course Feedback

Screenshot of survey pagePlease fill out the short online feedback page for APL. This is organised centrally by the University, with all results sent to the individual course organiser and to the Director of Teaching. I read every comment individually, and for Informatics courses we post results online to help other students choosing courses for the future.

Thank you.

Feedback for this course: Advances in Programming Languages
All surveys on MyEd: Course Enhancement Questionnaires
Reports from previous years: Student Course Feedback

Lecture 17: Traits and References in Rust

Title slideToday’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 apart, each treated separately for their individual contribution. I also included a number of pictures of food to illustrate this.

Continue reading Lecture 17: Traits and References in Rust

PL News

I’m going to count this as course-relevant news. Barack Obama has announced this year’s recipients of the Presidential Medal of Freedom. Two of those recognised are for their work on advancing computer science: Grace Hopper and Margaret Hamilton.

Bill and Melinda Gates are in there, too, but that’s for the philanthropic work of the Gates Foundation rather than anything specifically related to computing or programming languages.


Guest Lecture: Andrew Kennedy

The Hack Programming Language:
Types for PHP

Andrew Kennedy

3–4pm Friday 18 November
Gaddum Lecture Theatre G.8
1 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, for example.) Over the last three years Facebook has embarked on an ambitious project to migrate its code base to Hack, which takes the syntax of PHP, removes the worst features, and adds static typing and modern constructs for asynchronous programming and typed UI components. In this talk I will focus on Hack’s type system, which combines ML-like type inference, object-oriented generics in the style of C# or Java, and flow-based typing of local variables.


Andrew Kennedy is a software engineer at Facebook London working on the Hack team. Before joining Facebook in January this year he spent 16 years at Microsoft Research, during which time he helped design and implement the generics feature for the .NET Common Language Runtime and polymorphic units-of-measure inference for the F# programming language, in addition to making many research contributions in type systems, semantics, formal verification and compilation.

CertiKOS / Advances in Java

These are the links I gave at the close of yesterday’s lecture: two APL-related things that came up last week and I think interesting to look at.

CertiKOS: Certified OS Kernels

Project: CertiKOS
Press Release: Yale News

This is a project out of the FLINT group at Yale, building large verified systems. CertiKOS is a toolkit for building operating system kernels, hypervisors, and embedded systems. It’s part of the DeepSpec initiative and linked to DARPA HACMS and SAFE.

Java Language and Platform Futures — A Sneak Peek

Talk: Video

This is a talk by Brian Goetz at the Devoxx 2016 conference in Antwerp last week. He’s “Java Language Architect” at Oracle, and has been involved in a lot of the advances in the Java language over the last ten years. In the presentation he talks about some ideas that are under development to be part of the language in a year or two.

Lecture 15: The Rust Programming Language

Title slideThis 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 the basics of Rust, and gave a few small indications of how its C-like appearance masks a quite substantial effort to do things differently.
Continue reading Lecture 15: The Rust Programming Language