Programming‎ > ‎


This semester you will learn how to program a computer. All the programs you use every day, like MS-Word, iTunes, and even Windows itself are nothing more than a series of instructions, created by humans, that tell the computer hardware what to do. Programs are written in various languages. The language we will learn this semester is called "Python". It is an elegant language that makes it easy to learn simple concepts, but scales smoothly to provide very powerful modern constructs like methods and objects. 

All of our resources this year are online and freely available, so you can install the software and read the textbook on your home computer. In addition most of our resources are also very "portable" which means you can use them on a variety of computer systems including Windows, Mac, and Linux.

Python is an open-source language, which means that it's free to use. Python works on Windows, Mac OS-X, and Linux so you can download it for free onto your home computer. Like all things computer related, there are different versions of Python. The two major versions are v2.7 and v3.1. Of course, we won't be using these. We will be using v2.6.5 for class. Yes, I know it's not the most recent, but an important software library that we need at the end of the class doesn't work on 2.7 or 3.1, it only works on 2.6.5. Welcome to the exciting world of software.  At the level of work we're doing, it won't matter much that we're using 2.6.5 instead of the latest versions.

Course Structure
This course will involve mostly self-study on your part. Although I'll provide a few short weekly lectures on the material, you will learn how to program by doing it on a daily basis. You'll work through the chapters in the text and write short programs after each chapter to prove to me you've mastered the content. Every few weeks, however, I'll have you work an short project that ties the various chapters together as you write a moderately complex program. The final project for the class with a graphical video game, while not as beautiful or complex as Starcraft II, will still give you an idea of how all video games fundamentally work.

Assignments and Grading

CodeHS Units: CodeHS is a website that you will use to learn the fundamentals of python. It will provide mini lessons much like Khan Academy and give you numerous short programming tasks. As you complete tasks and quizzes you will earn points. 

Mini-Projects: There are four mini-projects in the course.  The mini-projects are assigned after you cover the appropriate content in CodeHS. Mini-projects are done with partners, requiring you to demonstrate various programming knowledge and skills. In addition to the programs you write for the mini-projects, you must also turn in design documents that explain how the programs are structured and how they work. Each partner will turn in their own code write-up.

Tests: After each mini-project is complete you will take a written test over the material covered in mini-project.  In second quarter you will have a final project that you will work on with a partner. The final project will count as a test score, and if done well, will replace your lowest test score for the class.

Assignment weighting is shown below:

50%    Tests
25%    Mini Projects
25%    CodeHS

Grading follows the conventional 90/80/70/60/0 scheme for A/B/C/D/F.

Due Dates
Due dates for CodeHS, mini-projects, and tests will be posted on the class website calendar.  Extensions to due dates must be discussed with me at least one week prior to the deadline. I do not guarantee that extensions will be granted. CodeHS progress and mini-project work is submitted online so being absent on a due date doesn't preclude you from turning in your work on time. Work turned in up to one week late will receive a 25% penalty. Work submitted more than a week late will not be graded and earn a 0%.