Concepts of Programming

Summer 2005


Course number: CSPP 50101
Location:Ryerson 251
Time: Mon 5:30pm-8:20pm
Mailing List:  cspp.introprogramming  :  web page

Lab:
Th 5:30pm-6:50pm

Instructor
:  Kathy Gray
Office: Hinds B-041 & Ryerson 175-B
Email: kathyg@cs.uchicago.edu
Office Hours: 4:30pm-5:30pm Thurs (in Ryerson office) or by appointment

TA:  George Kuan
Office hours: 9:30am - 11:00 am Saturday 4th floor Ryerson

Schedule Software Final project page
 


This course is an introduction to programming for students without prior programming experience. The goal is to familiarize students with the fundamental components of object-oriented programming --  algorithms, data structures, modular design, etc. The course emphasizes fundamental concepts and elementary program design. Upon completion of the course, students should be well prepared to branch out into more modern, application-specific, and/or higher-level programming models.

Grading: Weekly homeworks -- with grades of Check plus, Check, Check minus, and Zero -- a midterm exam and a final project. 


 The final grade is determined as:

Explanation of Homework grades:
Check plus - Indicates complete mastery of the assignment, no mistakes
Check - Indicates satisfactory mastery of the assignment
Check minus - Indicates some mastery of the assignment
Zero - Assignment was not turned in or failed to follow instructions

Successful completion of Challenge problems can raise assignment grade one level

Course will be graded on a curve


ACADEMIC INTEGRITY

Students are expected to have read and understood the University's policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations, available online at http://www.uchicago.edu/student/manual/academic_honesty.html .

Required texts: no required texts: lecture and lab materials will be available on the web page

Recommended Texts:

How to Design Programs, Felleisen, Findler, Flatt, Krishnamurthi www.htdp.org
This book presents a conceptually similar approach to programming. The language used in this text is Scheme instead of Java. The book may aid in understanding aspects of the design recipe seen in this course.
A Little Java, A Few Patterns, Felleisen,  Freidman. MIT Press 1998
This book also presents a related approach to programming, this time using Java. The book is presented as a Socratic dialog between teacher and student. The syntax of this text, and exact ordering, differ from what is seen at the beginning of this course.
Effective Java,  Bloch. Addison-Wessley 2001
This text provides an additional perspective on programming in Java, which may be helpful later in the course.

Course Software and Patches


Testing Guide
      Use this guide to write tests without using the testcase boxes. Feel free to continue to use the testcase boxes if you wish to.



Homework Submission


Typically, homework will be assigned after class on Mondays and is due at 5:20pm the following Monday. This schedule will vary on the first week, 4th of July week, and midterm week.

Homework should be submitted as detailed on the homework submission section, either by e-mail with a specified subject line or as a printout at the start of class. Unless otherwise noted, only one file should be turned in if submitted electronically, and this file Must work in the Programming environment/language level stated in the assignment. Failure to do this will result in a Zero grade.

The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material.


Class/Date
Lecture Topics
Lecture material
Lab Material
Homework & Assignments
Programming
Environment
Class 1
June 20
Course Introduction, Data design and  simple programs
Slides,
Design Recipe,
Programs written in class: A simple Fish, Fish with design recipe, Fish with design recipe and wishlist
Note: all programs are drscheme files
Extra examples of data analysis
Using DrScheme
(no lab this week,
for the unix tutorial)
Hw 1 - part 1 :Due 6-23 5:30pm
Hw 1 - part 2 :Due 6-27 5:20pm
Solution set (DrScheme file, save and open in DrScheme)
DrScheme: ProfessorJ Beginner
Class 2
June 27
Inheritance, large data and more complicated programs
Slides (through slide 37)
Programs written in class: Fisherman and Fish, Food, Plant & Plankton
Lab 2 Problem
Lab 2 Solution set
Hw 2: Due 7-6 5:30pm
Solution set (no tests included due to testbox problems)

July 4


Lab 3 Problem
Lab 3 Solution set
Tutorial material


Class 3
July 11
Programming with lists, recursion
Slides
Programs written in class: Fisherman and Catchables; Catch; CatchOfFish
Lab 4 Problem
Solution set
Tutorial material
Hw 3: Due 7-18 5:30pm
Solution Set

Class 4
July 18
Trees
Slides
Programs written in class:
Pizza, VegePizza, Ancestor, Eyecolor

Evaluation steps
Lab 5 Problem
Solution set
Tutorial info
Hw 4: Due 7-28 5:30pm
Solution Set

Class 5
July 25
Midterm
Solution


Slides
searchList, searchTree
Lecture at Lab time


Class 6
August 1
Trees, Lists & Abstraction
Slides
FamilyList
Lab 6 Problem
Solution:
FaceWorld1.ijava
FaceWorld2.ijava
Extra exercises
Tutorial info
Hw 5: Due 8-8 5:30pm
Solution set
DrScheme: ProfessorJ Intermediate
Class 7
August 8
Abstraction & Queues
Slides
Product1, Product2, sysUser
Lab 7 Problem
Tutorial info & Extra exercises
Solution set: TrafficLight, GraphicTrafficLight
Hw 6: Due 8-15
5:30pm

Solution set

Class 8
August 15
casts & equality & mutually referential data
Slides
Lunchbox, Person1, Person2
Lab 8 Problem
Solution set
Tutorial material
Hw 7: Due 8-22
Solution set

Class 9
August 22
Arrays & iterative programming Slides
instanceof, weeklyschedule
Lab 9 Problem
Hw 8: Due 8-29 5:30pm
DrScheme: ProfessorJ Advanced
Class 10
August 29
Programming with libraries, Programming in full Java
Slides
Fish.java Person.java PersonList.java EmptyPL.java LargerPL.java Announcement.java
Hello.java
Lab 10 Problem
Opt Hw 9: Due 9-6
eclipse
Class 11
Sept 6th
Exceptions, Hashtables
Slides
Exception Examples
Lab 11: No problem set; help with project


Class 12
Sept 12th
Programming Beyond Java
Slides