Course Outline and Links

[Note: this webpage last modified Friday, 04-Feb-2011 19:44:51 EST]

We will cover most but not all of the material in the Mark Guzdial text. Below, I summarize what is covered in each third of the course as well as potential "special topics" students may choose to explore for their final projects. Do not be afraid if you are starting the course and do not understand the descriptions below; you will certainly understand them by the end of the course. ;) The first third of the course will be tested on the first exam, the second third on the second exam, and the final third of the material on the last exam.

Note: This page describes my best guess as to what we will cover this semester. In actuality, we may cover some topics not listed here, and some topics listed here we may not cover. I will not be updating this page as to what we actually cover in the course. But I will keep the Course Schedule and Links up to date with what we do cover.

Introduction to Programming, Pictures

In the first third of the course, we cover the first part of the textbook which includes chapters 1-5. Depending on the pace of the course, we may not cover all of chapter 5. This part of the course gives you a basic understanding of programming in Python with the particular example of writing programs to manipulate pictures. You will learn how to implement some of the commands that are available in picture editing programs like Adobe Photoshop. For example, you will learn how to convert an image to grayscale, rotate and mirror pictures, and correct for red-eye. To do this, you will learn how images are stored on computers and how to manipulate them. In terms of the Python language, you will learn how to use variables, functions, arithmetic operations, conditional statements (if/else statements), iteration (for loops), comments, and special functions that are part of the JES programming environment but not standard Python.

More Programming, Sounds

In the second third of the course, we switch to working with sounds rather than images, the second part of the text which includes chapters 6-9. You will learn how to implement some commands that are included in sound editing software. For example, you will learn how to increase the volume of a sound file, clip a sound file, splice different files together, and create an echo. To achieve this, we will use many of the same programming techniques that we learned in the first part of the course and in addition learn about how sound is stored on a computer. You will learn some additional features of Python. In addition, we begin to think about the efficiency of the programs that we are writing, and so may cover some portions of chapter 14 that deals with this issue.

Working with Text, Unix/Linux

In the last third of the course, we cover the third part of the book that includes chapters 10-12 for manipulating files in Python. We will learn how to read a text file from the hard drive, "do something" with the file, and write the result back out to the hard drive. We also will focus on getting input from the user and printing output that is nicely displayed. To achieve these goals, we will learn how the computer stores text files. We also will learn some new features of Python, including file processing, dealing with strings, and input/output functions.

The second main component of the final third of the course is to learn how to use computers that use Unix/Linux and write programs in this setting. Unix/Linux is the traditional environment used for computer programming. This environment has many nice features (in particular for making programming easy!) that you can hopefully appreciate by the time the course is finished.

Additional Topics

I have allocated the last week of the course and the final exam period for final project presentations. Students may choose to learn material that we have not covered for use in their final project. Depending on the pace of the course, we may cover some additional topics in the first three parts of the course as well. Potential additional topics include (but are not limited to): manipulating movies, drawing on the screen with turtle graphics, network programming, functional programming, object-oriented programming, programming in a language other than Python, ...