I210:
Information Infrastructure I (Intro to Programming) — Fall Semester 2010
(Sections 20348 & 13986)
Combined
Oncourse Section C16619
Instructor:
Larry Yaeger
Class
Time: Tuesdays and Thursdays,
4:00pm-5:15pm (20348) OR 5:45pm-7:00pm (13986), plus lab on Friday
Class
Location: Ballantine Hall, room 340 (lab locations vary)
Associate Instructors: Jared Evans, Yuping Gu, Nitesha
Guta, Craig Jackson, Rewati
Ovalekar
with help from: Aditya Bhagwate,
Rong Jin, Mihir Raut, Anup Vasisth
Class email list: i210_f10@oncourse.iu.edu
Class email help list: i210-help-l@indiana.edu
Note:
Credit given for only one of INFO I210 or INFO H210 (Hutton Honors version).
WARNING: This class is difficult and time
consuming. Plan your schedule
accordingly. The only way to learn
programming is to do it, so you will be writing multiple programs each week as
lab assignments. Lab assignments
will be a large proportion of your grade, so they are absolutely required.
"Programming
is like making fine furniture with an axe and a nail file." – Larry Yaeger
"Python
makes it more like working with a table saw and a lathe. (You still have to learn how to use them,
but theyÕre the right tools for the job.)
Hooray!" – Larry Yaeger
Contents
o Labs, Readings, and Assignments
á Lab Times, Locations, and Instructors (including email addresses)
o Grading
Policy for Labs and Tests
Prerequisites:
INFO I101 Introduction to Informatics, INFO I201 Mathematical
Foundations of Informatics.
Required textbook: Guide to Programming with Python,
by Michael Dawson. Do NOT install
anything from the included CD-ROM.
Instead, download this: http://informatics.indiana.edu/larryy/i210/PythonTextbookCDContent.zip.
Owning your own laptop computer will be a significant
benefit in this class, as you will be able to do homework, labs, and tests in
your own, familiar environment, configured to your liking, with all your old
code as well as that from the book to draw on for reference. If you don't have a laptop, then you
should invest in a modest-sized flash drive, so you can keep the textbook's
source code and your assignments on it as you move from lab machine to lab
machine.
All users should copy the source code for
the problems in the book from the "PythonTextBookCDContent.zip" archive you downloaded above to
your computer (or flash drive).
Mac users running Leopard (10.5.x) or
later already have a version of Python installed that is good enough, but
installing the main development tool (IDLE) and the modules you will need in
the second half of the semester can be a bit challenging, especially on Snow
Leopard (10.6.x), so I recommend you do the following:
á Download and install the free academic version of the Enthought Python Distribution. (Be sure to choose the Mac version; the standard 32-bit version is sufficient.)
á Replace
the newly installed version of IDLE.app (in
/Applications/Enthought) with this version
of IDLE.app. The original version works, but this one is a bit better
behaved. Also, the first time you
run IDLE.app, go into its Preferences and select the
"IDLE Classic Mac" built-in key set. You may also wish to change the "remove-selection"
key binding from command-r to something else (like option-command-r) and make
command-r the key binding for the "run-module" action (which is
normally assigned to F5).
á Download
and install this
version of PyGame. (This will not be used until the second half of the
semester.)
á Install
the version of LiveWires found in the "PythonTextBookCDContent.zip" download from above, by unzipping
it and, from the command line in Terminal.app, typing
"python setup.py". (Not used until second half of the
semester.)
á Later
in the semester it will be convenient to edit files with a free copy of TextWrangler.
Should you prefer to work with the built-in version of
Python for some reason, you can install IDLE.app by
following the instructions at http://wiki.python.org/moin/MacPython/Leopard
(or you can invoke IDLE from the command line or you can use a different
editor). You will be on your own
installing PyGame, as the version available above
will probably not work. The LiveWires installation should be the same. (Do not install LiveWires
from the web, as the textbookÕs version is different and required for the
textbook assignments.)
Windows users should install the latest 2.x
"standard" (aka "production") release of Python from http://www.python.org/download/. (Do not install a 3.x release, as
important syntax changes have taken place in the language that make it incompatible with the textbook examples.) Alternatively, you may also wish to
download and install the free academic version of
the Enthought Python Distribution. In the first half of the semester you
will probably use the IDLE application to edit program files. Later in the semester you may want to
use a different editor, so you should be warned that NotePad
is not a good choice, but WordPad is perfectly fine, though a more
programming-oriented editor might be an even better choice. After the Midterm Exam, you will need
to install a recent release of Pygame appropriate to
your operating system from http://www.pygame.org/download.shtml. Then install the "LiveWires" packages from the "PythonTextBookCDContent.zip" archive you downloaded above. (Do not install LiveWires from the web, as the textbook's version is different and required
for the textbook assignments.)
Linux users: Most modern Linux releases probably already have Python and
IDLE. For those that do not have at least Python 2.5.1 installed, go to http://www.python.org/download/ and
download and install a recent 2.x version of Python. You will also need to install PyGame
(from the web) and LiveWires (from the "PythonTextBookCDContent.zip" archive you downloaded
above) for material in the second half of the semester.
The course will be taught in three classes each week, two
lectures and one lab.
The lectures will introduce new material each week. Lecture notes are online, and closely
follow the textbook.
Lab attendance is required. A weekly quiz on the current chapter's material will be
given at a random time during the lab.
These quizzes contribute 20% of your grade and can only be taken during
the lab, so lab attendance is mandatory and extremely important. There is a strong correlation between
lab attendance and grade.
During the lab, student assistant instructors (AIs) will help you tackle assigned problems that use the
topics and methods learned that week.
In some cases you may be able to finish the lab assignment during the
lab, and this is recommended to the extent possible. Regardless, all lab assignments
must be turned in to the combined section on Oncourse
by the start of the first lecture class following the lab (see late policy).
Assignments are due by the start
of the first lecture class in the week following the lecture & lab in which
they are discussed. Assignments
are taken from the projects at the end of the chapters, except for one
additional assignment in week 3.
The required assignments are identified in the table below and in the
corresponding weekly Oncourse assignment. Extra credit problems are worth 10
points total, and allow you to score up to 110 (out of 100!) points each week.
|
Week
|
Topics |
Reading |
Assignment |
Extra
Credit |
|
1 |
Python types, variables,
simple I/O; Useless Trivia game |
Ch 1 Projects 1 – 3 Ch 2 Projects 3 – 5 |
Ch 2 Projects 1 – 2 |
|
|
2 |
Branching, while
loops, planning; Guess My Number game |
Ch 3 Projects 3 – 5 |
Ch 3 Projects 1 – 2 |
|
|
3 |
for
loops, strings, tuples; Word Jumble game |
Ch 4 Projects 4 – 5, and ixtlan.py |
Ch 4 Projects 1 – 3 |
|
|
4 |
Lists, dictionaries;
Hangman game |
Ch 5 Projects 4 – 5 |
Ch 5 Projects 1 – 3 |
|
|
5 |
Functions; Tic-Tac-Toe game |
Ch 6 Projects 3 – 5 |
Ch 6 Projects 1 – 2 |
|
|
6 |
Files, exceptions;
Trivia Challenge game |
Ch 7 Projects 3 – 5 |
Ch 7 Projects 1 – 2 |
|
|
7 |
Review in lecture & Midterm Exam in lab |
Review |
|
|
|
8 |
Object Oriented Programming
(OOP); Critter Caretaker game |
Ch 8 Projects 3, 5 |
Ch 8 Projects 1,2,4 |
|
|
9 |
Messages, inheritance,
modules; Blackjack game |
Ch 9 Projects 1,2,4 |
Ch 9 Projects 3,5 |
|
|
10 |
GUI development; Mad
Lib game |
Ch 10 Projects 3 – 5 |
Ch 10 Projects 1 – 2 |
|
|
11 |
Graphics; Pizza Panic game |
Ch 11 Projects 4 – 5 |
Ch 11 Projects 1 – 3 |
|
|
12 |
Sound, animation,
development; Astrocrash game |
Ch 12 Projects 1 – 2 |
||
|
13 |
Review, no lab or lab
assignment [Thanksgiving] |
|
|
|
|
14 |
Clicks, layers, rotation,
following, keyboard input to GUI |
See code |
|
|
|
15 |
Office hours replace lecture
& lab |
|
|
On Windows machines in the STC
labs around campus, you may run "python26" or "IDLE" from
Start menu > All Programs > Departmentally Sponsored
> Informatics, or "c:\python26" from the DOS prompt.
On Mac OS X machines in the STC
labs around campus, you may run IDLE 2.6.app in the Departmentally Sponsored
folder in the Dock, type "python" or "idle" on the command
line in Terminal.app after running the "Python Profile Updater" located in the
"Accessories/Utilities" folder, or type
"/usr/local/bin/python2.6" from the command line in Terminal.app (with no need for the Python Profile Updater).
|
Day |
Time |
Instructor |
Room |
|
Friday |
02:00pm – 06:00pm |
Yupeng Gu |
Info East 001 |
|
Monday |
11:00am – 03:00pm |
Nitesha Gutha |
Info East 001 |
|
Monday |
01:00pm – 05:00pm |
Craig Jackson |
Info East 001 |
|
Tuesday |
11:00am – 03:00pm |
Rewati Ovalekar |
Info East 001 |
|
Tuesday |
02:30pm – 04:30pm |
Jared Evans |
Info East 001 |
|
Wednesday |
03:00pm – 05:00pm |
Larry Yaeger |
Info East 305 |
"Info West" is Informatics West (910 E. 10th
St.) at the corner of 10th St. and Woodlawn.
"Info East" is Informatics East (919 E. 10th
St.) adjacent to Info West on 10th St.
Lab
Times, Locations, and Instructors
|
Lab # |
Sections |
Time |
Day |
Bldg |
Room |
AI(s) |
Assisted By |
|
1 |
20350 & 13988 |
10:10am – 12:05pm |
F |
GR |
102A |
Jared Evans |
Anup Vasisth |
|
2 |
20351 & 13987 |
10:10am – 12:05pm |
F |
MN |
001B |
Yupen Gu |
Mihir Raut |
|
3 |
20352 & 13989 |
12:20am – 02:15pm |
F |
GR |
102A |
Nitesha Gutha,
Craig Jackson |
|
|
4 |
20349 & 13990 |
02:30pm – 04:25pm |
F |
I |
109 |
Rewati Ovalekar |
Rong Jin |
|
Jared Evans (evansjam) |
Yupeng Gu (yupgu) |
Nitesha Gutha (ngutha) |
Craig Jackson (crajacks) |
Rewati Ovalekar (rovaleka) |
Larry Yaeger (larryy) |
|
Aditya Bhagwate (adibhagw) |
Rong Jin (rongjin) |
Mihir Raut (mraut) |
Anup Vasisth (avasisth) |
Exam
Schedule
Always
do your own work. Students caught
cheating will lose all credit for the relevant assignment or test and be
reported for campus disciplinary action.
(Besides, you won't learn anything if you don't do the work.) WARNING: We will be using automated tools to identify copied
code. Changing comments, spacing,
and even variable names will not protect cheaters. You have been warned.
Grades
will be assigned based on the point values in the following table:
Grade MinScore
A+ 98
A 93
A- 90
B+ 85
B 80
B- 75
C+ 70
C 65
C- 60
D+ 55
D 50
D- 45
F 0
Computer programming is profoundly empowering. With the ability to program computers,
even at a very basic level, comes the ability to make the most ubiquitous tool
in modern society perform the tasks you want it to. This course introduces basic computer programming concepts
and skills, with an aim to empowering you. If you are pursuing any of the science-Informatics
(Bioinformatics, Chemical Informatics, Complex Systems, Cybersecurity,
etc.), you will most definitely need and use these skills. If you are in the Design area, the
concepts learned in this class will help you create better tools and work more
effectively with professional programmers. In the area of Social Informatics, data analysis and models
are frequently computer based these days.
Many modern companies employ programmers and IT specialists for all
aspects of their business, so even if you successfully enter a management track
in business, you will need to understand and manage the programming work done
by employees and contractors. And
the logical and organizational skills you learn and strengthen in creating
these computer programs will stand you in good stead for the rest of your life,
no matter what you do.
To make sure everyone acquires the basic skills, I will
assume no knowledge of computer programming whatsoever. If you have experience programming
already and must take this class, please talk to me and we will see about
making things a bit more interesting for you. I don't want anyone getting lost or bored.
This semester you will be learning the Python programming
language. Python is a very
intuitive and easy to use, yet very powerful language, that is highly regarded
in industry, and is in use at NASA, Google, Microsoft, and Disney and throughout
the scientific community.
During the semester you will write lots of little
programs. None of them will be
terribly difficult, but by the end of the course you should feel entirely
comfortable designing and writing a program to accomplish whatever you need to
accomplish. Almost all of the
programs you will be writing are games or relating to computer gaming! Learning should be fun, and hopefully
you will enjoy this semester (even though you have to work hard to succeed).
I'm excited about sharing my passion for computer
programming with you, having applied it to wildly varying applications, from
computational fluid dynamics to computer graphics for the film and television
industries, to developing a user interface for Koko the gorilla, to calculating
"ejection fraction" measures of the healthiness of the human heart
for heart surgeons, to creating handwriting recognition systems for the Newton
and Mac OS X, to evolving machine intelligence in an "artificial
life" computational ecology (my current research area). What you do with the skills will depend
on your interests, your educational choices, and your professional career
choices, but they will stand you in good stead regardless of what those might
be.
|
For more information, contact: |