I210: Information
Infrastructure I (Intro to Programming) — Fall Semester 2008 (Sections
10666 & 27344)
Instructor:
Larry Yaeger
Class
Time: Tuesdays and Thursdays,
2:30pm-3:45pm (27344) OR 4:00pm-5:15pm (10666), plus lab on Thursday
or Friday
Class
Location: Swain East 105 (lab locations vary)
Associate Instructors: Matt Whitehead, Eugene Chang, Art Kolchinsky, Mike Conover,
Augusto Alves, Huijun Wang, Yushen Han
Class email list:
i210_08f_10666@oncourse.iu.edu
or i210_08f_27344@oncourse.iu.edu
Note: This course is cross-listed with CSCI
A201. Credit given for only one of the following: INFO I210, CSCI N331 (IUPUI),
or CSCI A201 (IUB).
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. I strongly
disrecommend taking this class if you have not completed I101, and suggest you
first complete I201.
"Programming
is like making fine furniture with an axe and a nail file." – Larry
Yaeger
Contents
o Labs, Readings, and Assignments
á Lab Times, Locations, and Instructors (including email addresses)
o Grading
Policy for Labs and Tests
Recommended 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 Python or Pygame from
the included CD-ROM.
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 your assignments
on it as you move from lab machine to lab machine.
Windows users should install the latest "standard"
(aka "production") release of Python from http://www.python.org/download/. Mac users running Leopard (10.5.x)
already have Python installed, but you will need to install IDLE.app by
following the instructions at http://wiki.python.org/moin/MacPython/Leopard. Most modern Linux releases probably
already have Python and IDLE. For
older versions of Mac OS X or versions of Linux that do not have at least
Python 2.5.1 installed, you should go to the same link as the Windows users and
download and install a version of Python suitable for your operating system.
You will probably also want to copy the source code for the
problems in the book to your computer (or flash drive).
After the Midterm Exam, everyone 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 CD-ROM included with the book.
The course will be taught in
three classes each week, two lectures and one lab.
The lectures will introduce new
material each week, but you will do much better if you have read the
corresponding textbook chapters.
Lecture notes are online, and closely follow the textbook.
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 will be due by the start of
the first lecture class following the lab (see late
policy).
A weekly quiz on the current
chapter's material will be given 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, as is
reading the textbook.
Course Materials
Assignments are due by the start
of the first lecture class in the week following the lecture & lab in which
they are discussed.
|
Week
|
Topics |
Reading |
Assignment |
|
1 |
Python types, variables,
simple I/O; Useless Trivia game |
||
|
2 |
Branching, while
loops, planning; Guess My Number game |
||
|
3 |
for loops, strings,
tuples; Word Jumble game |
||
|
4 |
Lists, dictionaries;
Hangman game |
||
|
5 |
Functions; Tic-Tac-Toe
game |
||
|
6 |
File, exceptions;
Trivia Challenge game |
||
|
7 |
Review
(Midterm Exam during lab) |
Review |
MIDTERM EXAM |
|
8 |
Review of material so far |
Review |
|
|
9 |
Object Oriented Programming
(OOP); Critter Caretaker game |
||
|
10 |
Messages, combining
objects, inheritance |
||
|
11 |
Creating modules;
Blackjack game |
||
|
12 |
GUI development; Mad Lib
game |
||
|
13 |
Review,
no lab, no assignment [Thanksgiving] |
Read
ahead! |
|
|
14 |
Graphics; Pizza Panic game |
||
|
15 |
Review
in lecture & Final Exam in Lab |
Review |
|
|
|
|
|
|
On Windows machines in the STC labs
around campus, you may run Òpython25Ó or ÒIDLEÓ from the Start menu > All
Programs > Departmentally Sponsored > Informatics.
On Mac OS X machines in the STC
labs around campus, may launch Terminal.app in the Applications/Utilities
folder and type ÒpythonÓ or run IDLE.app from the Developer Tools folder in the
Dock.
|
Day |
Time |
Instructor |
Room |
|
Monday |
10:00am – 12:00pm |
Augusto Alves |
I2 001 |
|
Monday |
01:00pm – 03:00pm |
Yushen Han |
I2 001 |
|
Monday |
01:45pm – 03:45pm |
Art Kolchinsky |
I2 001 |
|
Monday |
03:00pm – 05:00pm |
Huijun Wang |
I2 001 |
|
Monday |
04:00pm – 06:00pm |
Mike Conover |
I2 001 |
|
Tuesday |
10:00am – 12:00pm |
Matt Whitehead |
I2 001 |
|
Tuesday |
11:30am – 01:30pm |
Eugene Chang |
I2 001 |
|
Wednesday |
10:00am – 12:00pm |
Matt Whitehead |
I2 001 |
|
Wednesday |
12:00pm – 02:00pm |
Augusto Alves |
I2 001 |
|
Wednesday |
01:00pm – 03:00pm |
Yushen Han |
I2 001 |
|
Thursday |
10:00am – 12:00pm |
Huijun Wang |
I2 001 |
|
Thursday |
12:00pm – 02:00pm |
Mike Conover |
I2 001 |
|
Friday |
04:30pm – 06:30pm |
Art Kolchinsky |
I2 001 |
"I2" is Informatics East (919 E. 10th
St.).
Lab Times, Locations, and Instructors
|
Section |
Time |
Day |
Bldg |
Room |
AI(s) |
|
10667 & 27347 |
06:50p-08:45p |
R |
WY |
125 |
Matt Whitehead, Eugene Chang |
|
10668 & 27346 |
10:10a-12:05p |
F |
FA |
215 |
Augusto Alves |
|
10669 & 27348 |
12:20p-02:15p |
F |
SE |
045 |
Yushen Han, Huijun Wang |
|
10670 & 27345 |
02:30p-04:25p |
F |
HP |
154 |
Michael Conover, Art
Kolchinsky |
|
Matt
Whitehead (mewhiteh) |
Augusto Alves (aalves iusb) |
Yushen Han (yushan) |
Eugene Chang (eugchang) |
Huijun Wang (huiwang) |
Artemy
Kolchinsky (akolchin) |
Mike Conover (midconov) |
Larry Yaeger (larryy) |
I strongly recommend reviewing Final Exam policies and
schedule information on the official Registrar page:
http://registrar.indiana.edu/time_sensitive/finalexamsche4082.shtml
In
particular, it is the student's responsibility to notify the Dean of your school of
any final exam conflicts, and to alert all affected instructors before the
halfway point in the semester if you are scheduled for more than three final
exams on the same day.
Course Evaluation
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. And 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.
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.
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: |