This course addresses two primary topics: (1) Literate programming, the writing of computer programs that meant primarily for a human reader, their interpretation by a machine being an important, but secondary, consideration. (2) Programming fundamentals, the theoretical and practical foundations of computer programming. The course is suitable for students irrespective of their programming experience: it should suit those with no programming experience as well as those with extensive experience. Further details appear in the introduction below. This course satisfies the university’s Mathematics and Writing-Intensive General Education requirements.