A design methodology for reliable software systems Liskov 1972 We've come to the end of Liskov's list. The final paper is by Barbara Liskov herself, on the question of how best to go about designing software systems so that we can have some confidence they will work. The unfortunate fact is that the standard approach … Continue reading A design methodology for reliable software systems
Category: Uncategorized
Programming with Abstract Data Types
Programming with Abstract Data Types Liskov & Zilles, ACM SIGPLAN Notices, 1974 This is paper 6/7 from Liskov's list, and it's by Barbara Liskov herself. What an enormous impact this paper has had on how we program today. Has there been any single advance in programming languages since this work (42 years ago) which has … Continue reading Programming with Abstract Data Types
Protection in programming languages
Protection in programming languages Morris Jr., CACM 1973 This is paper 5/7 on Liskov's list. Experienced programmers will attest that hostility is not a necessary precondition for catastrophic interference between programs. So what can we do to ensure that program modules are appropriately protected and isolated? We still need to allow modules to cooperate and … Continue reading Protection in programming languages
Hierarchical program structures
Hierarchical Program Structures Dahl and Hoare, 1972 We continue to work our way through Liskov's list. 'Hierarchical program structures' is actually a book chapter, and is notable for defining a 'prefix' mechanism that looks awfully like a form of class inheritance, paving the way for hierarchical program structures (i.e. Class hierarchies). The main takeaway for … Continue reading Hierarchical program structures
Information distribution aspects of design methodology
Information distribution aspects of design methodology Parnas, 1971 We're continuing with Liskov's listthis week, and today's paper is another classic from David Parnas in which you can see some of the same thinking as in 'On the criteria....' Parnas talks about the modules of a system (for contemporary feel, we could call them 'microservices' once … Continue reading Information distribution aspects of design methodology
Program development by stepwise refinement
Program development by stepwise refinement Wirth, CACM 1971 This is the second of Barbara Liskov's 7 'must-read' CS papers. Wirth's main point is that we have a tendency to focus far too much on mastering the syntax and style associated with a particular programming language, and nowhere near enough time on the process by which … Continue reading Program development by stepwise refinement
Go to statement considered harmful
Go to statement considered harmful Dijkstra, CACM 1968 It sounds like the Heidelberg Laureate Forum this summer was a great event. Johanna Pirker was there and took notes on Barbara Liskov's talk, including 7 papers that Liskov highlighted as 'must reads' for computer scientists. I'm sure you've figured out where this is going... for the … Continue reading Go to statement considered harmful
Towards deep symbolic reinforcement learning
Towards deep symbolic reinforcement learning Garnelo et al, 2016 Every now and then I read a paper that makes a really strong connection with me, one where I can't stop thinking about the implications and I can't wait to share it with all of you. For me, this is one such paper. In the great … Continue reading Towards deep symbolic reinforcement learning
Progressive neural networks
Progressive neural networks Rusu et al, 2016 If you've seen one Atari game you've seen them all, or at least once you've seen enough of them anyway. When we (humans) learn, we don't start from scratch with every new task or experience, instead we're able to build on what we already know. And not just … Continue reading Progressive neural networks
Asynchronous methods for deep reinforcement learning
Asynchronous methods for deep reinforcement learning Mnih et al. ICML 2016 You know something interesting is going on when you see a scalability plot that looks like this: That’s a superlinear speedup as we increase the number of threads, giving a 24x performance improvement with 16 threads as compared to a single thread. The result … Continue reading Asynchronous methods for deep reinforcement learning
