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

 

á       Course Requirements

á       Course Structure

á       Course Materials

o   Labs, Readings, and Assignments

o   Reference Materials

á       Office Hours

á       Lab Times, Locations, and Instructors (including email addresses)

á       Exam Schedule

á       Course Evaluation

o   Grading Policy for Labs and Tests

o   Late Policy

á       Course Description

 

Course Requirements

 

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.

 

Course Structure

 

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

Chap 1 – 2

Ch 1 Projects 1 – 3

Ch 2 Projects 1 – 5

2

Branching, while loops, planning; Guess My Number game

Chap 3

Ch 3 Projects 1 – 5

3

for loops, strings, tuples; Word Jumble game

Chap 4

Ch 4 Projects 1 – 5

4

Lists, dictionaries; Hangman game

Chap 5

Ch 5 Projects 1 – 5

5

Functions; Tic-Tac-Toe game

Chap 6

Ch 6 Projects 1 – 5

6

File, exceptions; Trivia Challenge game

Chap 7

Ch 7 Projects 1 – 5

7

Review (Midterm Exam during lab)

Review

MIDTERM EXAM

8

Review of material so far

Review

Week 8 Projects

9

Object Oriented Programming (OOP); Critter Caretaker game

Chap 8

Ch 8 Projects 1 – 5

10

Messages, combining objects, inheritance

Chap 9

Ch 9 Projects 1 – 3

11

Creating modules; Blackjack game

Chap 9

Ch 9 Projects 4 – 5

12

GUI development; Mad Lib game

Chap 10

Ch 10 Projects 1 – 5

13

Review, no lab, no assignment [Thanksgiving]

Read ahead!

No lab

14

Graphics; Pizza Panic game

Chap 11

Ch 11 Projects 1 – 5

15

Review in lecture & Final Exam in Lab

Review

Final Exam Game

 

 

 

 

 

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.

 

 

 

Office Hours

 

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)

LEAD Technologies Inc. V1.01

Eugene Chang

(eugchang)

Huijun Wang

(huiwang)

Artemy Kolchinsky

(akolchin)

Mike Conover

(midconov)

image015.png

Larry Yaeger

(larryy)

 

Exam Schedule

 

 

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

 

 

Lab assignments will lose 15 points—approximately one grade point—for each day they are late.  (So if you're more than three days late, don't bother.  This is final, no exceptions.)

 

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

                                               

Course Description

 

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:

Larry Yaeger