Second Summer 2007


Fri-Mon Aug 03-06
Date: Mon, 6 Aug 2007 10:51:44 -0400 (EDT)
From: Adrian German <dgerman@cs.indiana.edu>
To: A202/A598 2nd Summer 2007 Distribution List <dgerman@indiana.edu>
Subject: grades at the start of this last week, and a short guide


Dear A202/A598 Friends,

I am going to send today my current grades for your work thus far.
The basic outline, as you already know, is as follows:

Homework One 4.5% of the final grade and includes Lab One grade.
For this assignment you had to develop the Board class in Python.

Homework Two 4.5% of the final grade, also includes Lab Two grade.
For this assignment you took a test, basic OOP in Python.

Homework Three 4.5% of the final grade includes Lab Three grade.
For this assignment you had to implement the game of Nim using a
user-defined type of object, called Pile. Any version of Nim is
fine, the variant described in the midterm prep materials starts
with a pile of n marbles, and each move the user takes at most n/2
but at least 1. The player who takes the last piece loses. In this
game you're playing against the computer; computer takes random but
legal moves.

Homework Four 4.5% of the final grade and includes Lab Four grade.
A summary of what is Apache, how you install and maintain it, and how
it (Apache) can be programmed using Python (CGI) is what is required. We
spent about two labs, maybe three, with this, the installation, setting
up of protected and programming CGI keeping state in hidden fields.

Homework Five 4.5% of the final grade and includes Lab Five grade. Having
posted the code for the entire first half of the book I said chapter 6 is
a major chapter, so develop a TicTacToe game, playing against the computer
and make the computer be intelligent as in chapter 6 game implementation.
Variants of this, reasonably argued, are accepted. This and all the other
assignments are all meant to allow you to give a personal touch to what
you turn in, by getting involved in the problem specification (a bit, not
much, but just having the freedom to do that is already different). This
assignment as listed as Intelligent (Tic-Tac-Toe) Board, and complements 
Homework Assignment One.

Homework Six 4.5% of the final grade and include Lab Six grade as well. In
general http://www.cs.indiana.edu/classes/a202-dger/spr2007/grading.html
indicates a lab is 2% of the final grade and a homework is 2.5% of the
final grade so if you put these together you get 4.5%. For Homework Six
you need to turn in a summary in which you need to explain how the chat
that we developed in labs last week works. We had several stages, that we
discussed in class then implemented in lab, over a few days. The material
that this was based off is under class notes for July 11, or directly you
can go to it by following the URL:

http://www.cs.indiana.edu/classes/a202-dger/fall2006/ch13.pdf

Homework Seven 4.5% includes Lab Seven grade. Installation, purpose and
programming of MySQL. We discussed this all last week. The Python API is
useful in accessing data, and give CGI a web interface to a database is
easy to set up.

Homework Eight 4.5% and includes Lab Eight. Chapters 11, 12 in the book.
We had a Metal-led lab on this and several projects are using pygame and
livewires. It's an exercise in OOP including inheritance. Write up what
ever you thought was important and you learned. Just describing how the
basic bouncing pizza program works (in detail) would be enough.

Homework Nine 4.5% and includes grade for Lab Nine. You developed a
large program in lab with Metal based on Chapter 10 in the book. So for
this assignment write down the core facts about Python Tkinter GUIs, we
also have posted lots of info about Python GUI in class notes, and make
a statement of your understanding of this Python type of programming.

Homework Ten 4.5% of the final grade covers Lab Ten grade too. Blender
game kit, the Blender Summer of Documentation tutorial. Simple bowling
game was developed in lecture (with Adrian) and lab (Metal). Also we
have posted materials and demonstrated how the Python interpreter in
Blender can be used for various purposes. Describe how using the game
engine is different from usual programming (sensors, controllers and
actuators are more event-driven programming in GUIs? message passing
from actuators to sensors or other actuators is like regular function
calling or not? etc.) and in general how Blender is different from
what you learned in A201 and A202 and how that knowledge of Python
is going to help you program (control) it.

Midterm Written 15% of the final grade.

Midterm Practical 15% of the final grade. I am very flexible on the
specific goals and functionality of your programs but the code must
be demonstrably yours. Copying the code for Blackjack from Chaper 9
is not acceptable. We developed a bare bones blackjack in class too
and especially because of that I won't give any points if the code
you turned in for blackjack is the chapter 9 code. The best you can
do if you based it on the chapter 9 code is to attach extensive and
explicit explanations of your changes, and of how the rest of the
code works.

Semester Project 20% of the final grade. I have seen a lot of these
and I can already give you a lot of points of the 20% allocated here
recall that we have milestones, so please update your websites with
everything that's happened about the project, in blog fashion.

Minute Papers  5%, based on your attendance to labs and lectures.

All of this forthcoming later tonight. See you in lab and lecture
a bit later today.

Sincerely,
Adrian German
Thu Aug 02

Starting today lectures meet in the same room as the lab: LH023, MTWR 3:30-5:30pm.

Wed Aug 01

Example of Nim being played with the Pile object for Homework Three

Review of what the labs and assignments have been about:

Homework Ten: Blender Gamekit, Blender Summer of Documentation Mal CanDo Tutorial
Homework Nine: GUI with Tkinter, or Blender Python (one, two, three, five, six, seven)
Homework Eight Pygame, livewires (chapters 11, 12)
Homework Seven MySQL (coming up this Thu, last module)
Homework Six TCP/IP networking, basic chat (Mon, tue this week)
Homework Five Intelligent Tic-Tac-Toe Board
Homework Four Apache installation, protected folder, basic CGI
Homework Three Nim using Pile (design class Pile)
Homework Two Basic OOP Test
Homework One Basic Game Board
Tue Jul 31

Today we will wrap up networking with: server and chat.

Mon Jul 30

Today in class and lab: 1) MySQL, 2) basic Python networking.

Lab today must address project milestone.

Fri Jul 27

Remember that Friday office hours are by appt., please call 219-1035 if you need me.

I could be available between 11:45am and 2:45pm, if you need me (and call).

So far (9:30am) nobody has made any appointment for today (eventually Lisa and Peter did).

Thu Jul 26

Program developed in class.

Tue-Wed Jul 24-25

First round of e-mail feedback sent, re: midterm and practical.

Reminder: the practical exam is due at the end of this week.

Fri-Mon Jul 20-23

Here's Mark's perfect idea of a semester project: Tetris in less than 100 lines of code.

A summary of what the other projects picked are will be posted here shortly.

Here's a reference to Mark's starting point.

Fri-Mon Jul 20-23

Monday will be dedicated to these Blender notes.

Thu Jul 19

Relational Database Management Systems: a tutorial.

And here's a typical problem we might need to solve.

Wed Jul 18

Steps for installing MySQL: one, two, three, four.

Tue Jul 17

Steps for installing a protected folder: one, two.

Tue Jul 17

Next few labs:

Adrian will be in lab this Thu and the next, at least.

Mon Jul 16

Database access from Python.

Minimal database setup for the script above.

Basic CGI scripting in Python.

Steps for installing MySQL on silo.

Basic framework for web programming.

Thu-Sun Jul 12-15
Date: Wed, 11 Jul 2007 12:27:16 -0400 (EDT)
From: Adrian German <dgerman@cs.indiana.edu>
To: A202/A598 2nd Summer 2007 Distribution List <dgerman@indiana.edu>
Subject: A202/A598 update


Dear A202/A598 Friends,

Just a reminder: today is the last lecture of the week. There
is no lecture tomorrow, since I am leaving for a conference in
Vermont (I return Sunday night).

There is however a lab tomorrow, which will discuss the exams
posted and/or GUIs, HTML, basic CGI or even chapter 11.

Please let me know if you need any help or have any questions.

Sincerely,
Adrian German
Wed Jul 11

A simple Python/CGI tutorial and the Python/CGI API on the official Python web site.

Basic CGI scripting in Python.

Thanks to Lisa Mallinger for this very interesting example:

for p in [True, False]:
    for q in [True, False]:
        print p, q, not (p or q), (not p) and (not q), not (p or q) == (not p) and (not q)

Why does it look like De Morgan's law suddenly doesn't hold any longer?

Tue Jul 10

Code at the end of the lecture yesterday:

Mon Jul 9

List of ports (Apache ports listed for now):

dgerman (15654, 15754)
nahayes (13536, 15755)
saxsom (15656, 17656)
pconnor (15657, 15757)
jcracraf (15658, 15758)
madiekho (15659, 15759)
bsdonald (15660, 15760)
sgolembo (15661, 15761)
twhelms (15662, 15762)
djhwueng (15663, 15763)
lmalling (15664, 15764)
bottesen (15665, 15765)
mcsadler (15666, 15766)
hsapir (15667, 15767)
awiriant (15668, 15768)
wwyork (15669, 15769)

Sat-Sun Jul 7-8

Midterm exam, the scaled-down version.

The Practical exam is posted here.

silo accounts are now accessible, tomorrow we install Apache.

Fri Jul 6
Date: Fri, 6 Jul 2007 12:28:28 -0400 (EDT)
From: Adrian German <dgerman@cs.indiana.edu>
To: A202/A598 2nd Summer 2007 Distribution List <dgerman@indiana.edu>
Subject: A202/A598 update


Dear A202/A598 Friends,

I have posted a Word document to serve for both the midterm and
the practical exam. If you have questions about it please let me
know. The document might be way too long, and so I am working on
a second pair of documents, which would include only 12-18 clear
questions per exam. Exams would still be take-home.

I have been asked by some students about the length of the lecture
which also seems to be too long (2 hours). The truth is that it may
be a mistake: 8 x 4 x 105 = 3360 minutes and in a regular semester
we have about 14 x 2 x 75 = 2100 minutes. In light of this I would
like to use the extra 1200 minutes for extra help. Thus, I suggest
the following change to the schedule:

a) I come to LH102 at 3:30pm MTWR
b) First 30 minutes we do an informal help session. Attendance to
   this MTWR, hence daily, help session is optional.
c) Lecture starts at 4:00pm, and ends at 5:15pm. Minute papers and
   new material will be covered only after 4pm.

Labs are OK as they are.

Please let me know if you have any questions or concerns regarding
this minor change of schedule (it's minor because it virtually isn't)
and I will try to help.

I will send another note individually tonight as soon as the new,
shorter tests, are posted. Many thanks for your hard work so far and
all the very best.

Also, from now on my office hours are 11am-2pm MTWR, and F by appointment.

Sincerely,
Adrian German

Midterm Exam as posted yesterday.

Submit questions and programs separately: programs count as Practical Exam.

Chapter Nine code as developed in class yesterday:

We're only minutes away from finishing.

Thu Jul 5

The midterm and practical exams are TAKE HOME. They will be posted today.

Code that might be used today in class (lecture) or lab.

Code (metal_) that might be used in lab today.

In setting up the two exams I will be using these files:

All of the above used to form a midterm review (unfinished, will be finished now).

Wed Jul 4

INDEPENDENCE DAY. No class today. Enjoy your break.

The code developed in class yesterday.

Tue Jul 3

The code as updated during lab yesterday:

Today in class we finish this exercise.

Mon Jul 2

We developed the blackjack and games modules today (only started them).

Thu Jun 28

The Midterm Exam will be on Thu July 12, and will be a take home exam.

The Practical Exam will be on Thu July 19, in lab.

Projects are due the last week of classes (individual appointments).

Final Exam is written, closed-book and on the semester projects.

Homework Six will be on Python Networking (building a simple chat) and Python GUI development.

Homework Seven will be on MySQL, database design and database access from the web.

Homework Eight will be on the use of Pygame and livewires to develop 2D interactive environments.

Homework Nine will be on the use of the Python interpreter embedded in Blender.

Homework Ten will be on the use of the Blender game engine for 3D interactive environments development.

Wed Jun 27

Homework Three: implement a class Pile, and use it to play Nim. Details to follow.

Homework Four: install the Apache web server. Simple CGI programming with Python.

Homework Five: finish the Board class, and use it to play Tic-Tac-Toe just like in ch. 6.

Thanks to:

for their help in lecture yesterday, we're now ready for the test on Thu (in lab).

Tue Jun 26

Code developed by Will York in class yesterday.

Problems solved yesterday in lab:

Homework Three, Four and Five to be announced tomorrow.

Mon Jun 25

Homework One sketched, additional details will be posted today.

Homework Two will be a test (one random problem from the eight discussed last week) in lab.

Sun Jun 24

In lab tomorrow we install Apache.

Here are the pages that describe the process:

If the accounts are not ready today we will try again on Thu, or next Mon.

Sat-Sun Jun 23-24

Code developed in class on Thursday.

Fri Jun 22

Office hours 11am-2pm today.

Wed Jun 20

Code developed yesterday in class (with Jonathan Cracraft).

Wed Jun 20

Code discussed yesterday in class, minute paper for today.

Thanks to Shawn Axsom for his contribution to the first lab.

Tue Jun 19

Lecture notes for today posted.

Mon Jun 18

Class starts today in LH102.


Updated by Adrian German for A202/A598