CIS 122 - Algorithms and Programming
Announcements | Schedule | Assignments | Textbook | Scratch | Python
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.
Week 1 (July 20 - July 25) | ||
---|---|---|
01 | Mon |
Introduction to the class. What is programming?
|
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 | - |
Assignments | |
---|---|
1 | Our first Scratch project |
2 | Pong |
3 | ACME Widget Calculator |
4 | Graphics fun! |
5 | Word Frequencies |
Proposal | Final Project Proposal |
Final | Final Project |
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:
- You can read the book online in HTML format
- Or use a more nicely formatted PDF version which is suitable for printing
- Visit textbook's home page for more information about it
- Note that the book is a free book covered under the GNU Free Documentation License
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.