CMU SAMS 2018 - Programming Course

Course Syllabus

Course Description

This course introduces students to computer programming.

A computer program is simply a set of instructions that tells a computer how to perform a task. However, finding the right set of instructions can be quite challenging. To do this, one has to learn how to structure a larger problem into small subsets, and then find the solution to each of those subsets. A big part of this course is dedicated to teaching students a way of thinking that will enable them to build programs that solve interesting problems.

Just like human-understandable instructions can be given in various human languages, computer-understandable instructions can be given in various programming languages. There can be important differences between programming languages, but many of them use the same building blocks that are fundamental to programming. The course will teach these fundamentals using the Python programming language.

Learning Objectives


There is no required text for the course. Notes will be provided on the course website. We will frequently use notes from the Spring 2018 edition of the course 15-112 taught here at Carnegie Mellon University. These notes contain very useful examples and videos.

In this course you will need to use the Python programming language (which can be found here) and the editor Pyzo (which can be found here). Both are free to download and can also be found on CMU cluster computers. IMPORTANT NOTE: You'll need to install Python 3.6.5 if you're planning to use Pyzo, as Pyzo does not yet support the newest version (Python 3.7).

We highly recommend the official Python documentation for questions related to the Python programming language:

The following books can be used as additional resources:


Evaluation will be based on participation, weekly assigned homework, and weekly quizzes.

Final scores will be calculating the average of all homework scores and double-weighted quiz scores. Assuming that there are 5 homeworks and 2 quizzes, each homework is worth 11% of your final grade, and each quiz is worth 22%. Participation will be considered for all scores on the edge between two letter grades.