Course Dates (2 days):
Course Hours:
Cost:
Instructor: David Beazley
This course was part of the Summer of Rust. That has come and gone, but you can undertake the project yourself. I've posted a general overview on GitHub. Ask questions on the related discussion section for hints.
Returning home to his apartment, Graydon found that the elevator was out of order--AGAIN! "It's ridiculous", he thought, "that we computer people couldn't even make an elevator that works without crashing!" Graydon later went on to invent the programming language Rust.
Your task is a bit more mundane than that: You've been given the job of writing the software for controlling an elevator in Rust. Memory safety is a given, but you'll still need to ensure that your code doesn't crash, cause the elevator to shoot through the roof, or accidentally slice passengers in half. Elevators don't seem so complicated--they move up and down, stop from time to time, and have a panel of buttons. So, in some sense, they might be a close cousin of a toaster. How hard could it be?
Elevators are much trickier than they look. Many a job-seeker have been defeated by some kind of "elevator question." Elevators are diabolical.
In this 2-day project course, your goal is to tackle my version of the infamous "elevator problem"--which is simply to write software that you think could be used to control a basic elevator according to the standard elevator algorithm. Aside from the challenge of doing this in Rust, you'll also be challenged by almost everything else including problem solving, design, and testing.
This course is for intermediate programmers who want to test their problem solving, modeling, design, and testing skills on a "modest" problem of curious difficulty. You don't need to be a Rust expert, but you should have some basic knowledge of setting up a project and knowing how to work with Rust data structures and functions.
The course starts with a general overview of the problem and a blank slate. From there, you'll probably go on to start making a huge mess of things. Much of the rest of the course will be about ways to NOT do that. Expect a significant amount of coding intermixed with group discussion and thinking through the problem. There are no powerpoint slides. This is not a passive course.
There is also no one "right way" to code the project as long as you can eventually convince others that it might be safe to ride on your elevator. This leads to a lot of possibilities concerning design alternatives, tradeoffs, and other matters. A major challenge concerns the difficulty of writing code that can be tested, debugged, and reasoned about.
This course is taught by David Beazley. David is probably best known in the Python world as the author of Python Distilled (Addison Wesley) and the Python Cookbook, 3rd Edition (O'Reilly Media). You might be wondering what would qualify him to teach a Rust course, but David is also a former University Professor, having formerly taught Operating Systems, Compilers, and Networks at the University of Chicago. In 2023 and 2024, he taught Programming Languages with Shriram Krishnamurthi at Brown University. If you must know, he's also trying to get better at Rust programming.
Copyright (C) 2005-2026, David Beazley