CIS 122 - Algorithms and Programming

Classroom: McKenzie 471
Lab room: Klamath b13 Mac Lab
Hours: Monday-Friday 12:00-1:50
Grading Policies: See the policies page
Grade book: See the grade book page
About this class: See the class details page
Textbook: Think Python: An Introduction to Software Design
 
Instructor: Shad Stafford
Email: staffors@cs.uoregon.edu
IM: shadstafford@yahoo.com
Office: Deschutes 235
Office Hours: Drop in any time Monday through Friday 9-4

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!

Scroll down to see information about our schedule, assignments, and our textbook. The class details page has information about what the class covers. The grading policies page outlines my expectations regarding late assignments, group work, plagiarism, and all that sort of stuff.

Tuesday, July 29, 11:30am
All the final projects are now posted on the projects page.
Friday, July 25, 10:10am
I sent out grades for the final project this morning. You can check your total score on the grade book page. Your official grades will be uploaded to duckweb soon, but I don't know when they'll be visible to you. I'll post a page with the final projects next week.
Friday, July 18, 11:45am
Today is the last day of class, don't forget to turn in your final project today! You should get a grade back in about a week. I'll also post everyone's project, so check back next Friday to see all the cool projects this class completed.

Thanks for being such a great group. I really enjoyed teaching you this term, its amazing the amount of stuff you guys have picked up in just four short weeks!

Previous announcements

Note: the schedule is subject to change, this a guide only.

Week 1 (June 23 - June 27)
Mon Introduction to the class. What is programming? Writing our first program.
Tue Values, Types, Variables, and Operators
Wed Expressions, conditionals, and loops
Thu Strings, Lists, and the for loop
Fri Functions and parameters, range, modulus, break

Week 2 (June 30 - July 4)
Mon Tuples, Dictionaries, Modules, and Random Numbers
Tue Formatting output, Reading and writing files
Wed Dictionaries, more file IO, working with strings
Thu Error Handling, review
Fri No class, 4th of July Holiday.

Week 3 (July 7 - July 11)
Mon Introduction to graphics programming
Tue Graphics programming 2 (tic-tac-toe)
Wed Animation, Introduction to Object Oriented Programming
Thu Object Oriented Programming 2, Modules
Fri Debugging practice

Week 4 (July 14 - July 18)
Mon Odds and ends: timing, more graphics functionality
Tue Threading, Final Project Progress Check
Wed Keyboard event handling
Thu Network Access
Fri Review of Term, What does it all mean?

During this class we will use the graphics library released by John Zelle of Wartburg College. We have updated the library slightly to provide key press data so we can write more interesting programs. The enhanced version is called uographics.py, and adds a little bit of functionality to the GraphWin class. Now in addition to calling win.getMouse() to get the next mouse click, you can also call win.getKeypress() to get the next key press.

The graphics library is released under the GNU Public License. It works on all the machines in the lab, and should work on home computers as well.

There is a wealth of good information about programming in Python available on the web. This includes a nice free textbook that is perfectly suited for an introductory course like this. The textbook is called Think Python: An Introduction to Software Design by Allen B. Downey. You can access the book in a couple of different ways:

Other great online resources include

  • 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 I wanted to list it for the sake of completeness.

Some folks really want to have a physical book in their hands, and our online textbook just won't be satisfying. If that's how you feel, I highly recommend the book Python Programming: An Introduction to Computer Science by John Zelle. It is available at amazon.com and many other places I am sure. I also have a copy in my office that I would be happy to loan out overnight to students. It is the text that has been used in the past and is a great resource, but I didn't think it was worth requiring that everyone shell out for it given the quality and abundance of free resources.

This class moves very quickly. We cover a full four credits worth of material in just four weeks, and that means we have to hit the ground running and keep running hard the whole way.

The most important things you can do to do to succeed in this class are:

  • Talk to me I can't help you if you don't talk to me. Ask questions in class, come to my office hours, IM me when I'm online, use me as a resource.
  • Don't get behind The class is so short it will be almost impossible to get caught up.

I love to teach and I want to do it well. If you have feedback about this class or my teaching style, please don't hesitate to give it. Even if you just think I'm really annoying, I'd like to know it. I promise I won't let it impact your grade, and if you're nervous about that, you can leave it anonymously in my mailbox. Otherwise, please send me email, drop by my office, or send me an IM. I honestly do want to be an outstanding teacher, and the best way for that to happen is for me to get some feedback on what you like and don't like.


U of O | CIS | Questions? Ask me!