class logo

CIS 122 - Algorithms and Programming

In CIS 122 you'll learn how to program a computer in the Python programming language. It is a tremendously useful skill to have and should be a lot of fun as well!

Classroom: McKenzie 122
Lab room: Klamath b13 Mac Lab
Hours: Monday-Friday 12:00-1:50
Class Information: See the information page
Grade book: See the grade book page
Textbook: Python Programming: An Introduction to Computer Science
 
Instructor: Shad Stafford
Email: staffors@cs.uoregon.edu
Office: Deschutes 235
Office Hours: By appointment (email me)

Scroll down to see information about our schedule, assignments, and our textbook. The class policies page has information about the grading policy and my expectations regarding late assignments, group work, plagiarism, and that sort of thing.

Friday, August 14, 2:00pm
I have posted everyone's final projects on the projects page. Check out some of the great final projects that were done this year.

Previous announcements

Week 1 (July 20 - July 25)
01 Mon Introduction to the class. What is programming?
  • Reading: Chapter 1.1 - 1.5
02 Tue Scratch Variables, Conditionals, and Loops
03 Wed More Scratch Features. The Programer's Mindset
04 Thu Scratch Lists. Programming Practice
05 Fri Review of Scratch
Week 2 (July 27 - July 31)
06 Mon Introduction to Python
07 Tue Python Basics
08 Wed Python Graphics Programming
09 Thu Python Graphics Programming
10 Fri Python Graphics Programming and Functions
Week 3 (August 3 - August 7)
11 Mon Python Dictionaries
12 Tue Programming Practice
13 Wed Python Error Handling, Timing
14 Thu Functions and Modules, Graphics Features
15 Fri Work on Final Project
Week 4 (August 10 - August 14)
16 Mon Introduction to Object Oriented Programming
17 Tue More on Object-Oriented Programming
18 Wed Review of the Term
19 Thu Final help session (during final exam period)
20 Fri -

Our textbook for the class is: Python Programming: An Introduction to Computer Science by John Zelle. It is available at the bookstore and many online book sellers, with used copies available for as little as $25. It is possible to get through the class without the textbook, but I have found in the past that students generally do better if they have it available as a resource.

In addition to our textbook, there is a wealth of good information about programming in Python available on the web. This includes a nice textbook called Think Python: How to Think Like a Computer Scientist by Allen B. Downey. This is now a commercially available textbook, but also has a free version available. You can access the free version of the book in a couple of different ways:

Scratch is a visual programming environment developed at MIT. It is a great way to learn the concepts of programming and will let us do some really neat projects. The downside is that it is a simplified environment that limits the types of projects you can build. We'll use it for the first week of the class, then switch to Python.

The main Scratch website is the best resource for information about Scratch. I've added a couple of links to local versions of the Scratch environment so that we can install them more easily if needed.

  • Here's the Mac version of Scratch which can be installed on the Desktop of the Macs in the computer lab.
  • Here's the files only Windows version of Scratch. There is a full installer available on the main website, but you can't use that in the computer labs without administrative privileges, so this one is better suited for installing on lab machines.

Python is a "real" programming language in that it gives us power to do pretty much anything we want on a computer. It is very accessible and a great teaching language too, though, which is why we're using it instead of C++, C#, or Java. There are many, many programming languages out there, and I'm not saying that Python is the best, but I do think it is the best suited for this class.

Python comes already installed on Macs, so you don't need to do do anything special. I'll let you know what the best thing to do for windows is, but I haven't gotten that far yet.

There are lots of great online resources about python

  • The official python tutorial. It has lots of great examples, but sometimes might assume that you've got more programming experience than you do.
  • Here's a list of additional tutorials targeted at people new to programming. Different styles appeal to different people, and if you're struggling with our book or a project, you should browse these to see if there's one that makes things clearer. Also, reading a couple different explanations of something done by different people can really help because they all explain it slightly differently.
  • The Python library reference gives details on all the standard libraries that ship with Python.
  • The Python language reference is a very technical description of the details of the language. This one probably won't be useful to you, but it is useful to know about it.

We do some graphics programming in this class using the graphics library from the textbook. You can download graphics.py here. There is also a nice reference manual available as a PDF file you can download and print.