A beginner's introduction to programming, using Oberon since it is the natural descendant of the teaching languages Pascal and Modula, and because it is designed to encourage good object-oriented practices. The author begins with introducing procedures - the basic building blocks of Oberon programs - before introducing types and then type-bound procedures. Along the way, students build increasingly complex modules of Oberon code and develop a basic understanding of the advantages of object-oriented programming. As a result students coming to programming for the first time will appreciate this hands-on textbook, while readers familiar with programming but new to Oberon will find this a well-paced guide to the language.