Upcoming Course Dates:
Instructor: David Beazley
This is one of my favorite "small" programming projects. Normally, I teach it as part of my Advanced Programming with Python course, but I decided to break it out into its own thing. Hopefully you'll join me! -- Dave
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: You've been given the job of writing a new version of the decision making logic for the elevator. You'll get to do it in an easy memory-safe language called Python. You just 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. 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 1-day project course, your goal is to tackle my take on the infamous "elevator problem." It will likely challenge almost everything that you know about problem solving, design, programming, and testing. You will likely write a huge mess of barely working code that will make you want to take the stairs for awhile. However, you'll probably get some new ideas.
This course is for experienced programmers who want to test their problem solving, modeling, design, and testing skills on a "small" problem of curious difficulty. Basic knowledge of data structures, functions, and classes is recommended.
The day starts with an overview of the problem and a blank slate. From there, we'll work towards a possible solution. 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. Course attendance is limited.
You are free to use any programming language you wish. However, Python will be the preferred language for live-coding, demonstration, and discussion. The project involves no third-party dependencies or tools.
There is also no one "right way" to code the project. 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. In many ways the project is more about coming up with a framework for solving the problem than actually solving the problem itself.
This course is taught by David Beazley. David is a former university professor who used to enjoy torturing students with courses in operating systems and networks. David is better known in the Python world as the author of the Python Distilled (Addison Wesley) and Python Cookbook, 3rd Edition (O'Reilly Media). He has also given various conference talks including a few infamous bits of live coding.