Preface

This material serves as lecture notes and background reading for the second-semester course “Programming 2” that I regularly teach since 2008 in the Computer Science Bachelor’s programs at Saarland University.

Our curriculum emphasizes a solid programming education that does not only cover practical aspects but also an introduction to foundations such as structure and semantics of programming languages, type systems, program correctness, and verification. As the name “Programming 2” suggests, this course follows “Programming 1”, an introduction to functional programming and computer science in general and it precedes an introduction to algorithms and data structures.

Programming 2 (and therefore this text) has the following objectives:

Appendix C presents and discusses a sample course structure using this text. In this sample structure, some of the sections of this book are discussed in greater detail than others.

Happy hacking!