Effective teaching of operating system concepts requires projects. This paper describes a series of operating system projects all based on a simple hardware simulator that have been used to teach operating system concepts at the undergraduate level. A key feature of this approach is the use of a simple but realistic hardware model upon which an operating system is progressively built. The hardware simulator evolves as the operating system evolves.