Lecture Schedule/Notes

Advanced Programming/Practicum
15-200: Sections A,B,C
Fall 2006


Lecture Expectations

Work Before and During Class

I expect students to read the required lecture materials before class, and work out solutions to the assigned problems (sometimes you can test/verify your solutions on the computer). During class, I will discuss this material, mostly by answering questions on the reading(s), asking you questions about the material, and amplifying on those topics that need further discussion. Class motto: "Those who are ashamed of asking are ashamed of learning. The only stupid question is the one left unasked."

I will randomly call on students to present their solutions to selected assigned problems, and discuss them as well (please be prepared). I may also ask students to solve, either individually or in groups, other problems relating to the material; we will then compare and discuss these solutions. Thus, I expect most "lectures" to be highly interactive, with students participating fully.

Note that doing the reading and working on the assigned problems before class is a critical step in the learning process: students must be familiar with the material to get the maximum benefit from the class discussions and problem-solving sessions. Solving the assigned problems is especially important, as it "proves" that a student has not only read the material, but "understood" it is as well. Here understood means "has used the information operationally to solve problems". If you have difficultly with a problem, it indicates that you should probably go back over the related reading -or certainly ask a question about it in class.

I will allow students to work together on these problems: to discuss them, to analyze how to approach solving them, and to collaborate on their actual solution. Such a discussion must go beyond copying another student's answer: it involves completely understanding the answer and the process whereby it was reached, which includes acquiring the ability to analyze and solve similar problems. In fact, students will be required to solve similar problems on (almost) weekly take-home quizzes, on which collaboration is NOT allowed. Don't cheat yourself in this aspect of the course.

CAs will hold help sessions almost every evening to aid you with understanding each reading and how to solve its problems (see the Help Schedule web page for details).

Class Attendance and Decorum

I expect students to attend class daily, arriving on time. The announcements made at the start of class are often very important; I reserve the right to give small pop-quizzes on the readings. I expect students to neither carry on private conversations, nor use their computers to answer e-mail, surf the web, day trade stocks, or perform any other activities unrelated to this course.

Unless you are responsible for someone's life, your cell phone should be turned off. Otherwise, you should set it to operate in some silent mode (as mine will be set); if it rings silently, please leave the class, with a minimum of disruption to the rest of the students, to answer it. If your cell phone rings audibly in class, you will be charged $1; this money will go towards a class doughnut fund. Finally, if you know that you must leave early, please sit by a door, so that you can exit quietly.

Overall, please strive to be a considerate class member, both to me and to your fellow students.


Schedule, Topics, Readings, and Problems


Week Lecture Date Topic (read for this date/do problems) Problems
Pre-Class EBNF Chapter / Powerpoint 1,2,4,8; Slide #24 for 8/28
#1#18/28 Course Overview (and EBNF material) 1,3,5,9
 Lab #18/29 Eclipse IDE None
 #28/30 Tokens in Java Programs 1,2,3,10,11,12
 #39/1 Variables, Operators, and Expressions 2,3,5,6,7,8,10,13,23
#2 9/4 No Class: Labor Day  
 Lab #29/5 Advanced Eclipse None
 #49/6 Statements 1,6,7,12,18,19,26,31,38,39
 #59/8 Objects, Using Class Libraries/Javadoc 1,2,3,5,6,7,9,11,12
#3#69/11 More Java, Coding Style
Program Construction and Debugging;
MJ:1-4,6, CS:1, PCD: none
 Lab #39/12 Basics of the Eclipse Debugger Will solve basic problems (the craps program) in class
 #79/13 Writing Classes and Javadoc 2,3,6,14,21,22,23,24
 #89/15 1-d Arrays, the Object Class, and Simple Collections 1,2,3,6,8,10,11
#4#99/18 Model Classes in the MVC Pattern and Simplification MVC: 1,2,4,5,7 and S:2-4
 Lab #49/19 Writing a Simple Model Class None
 #109/20 Interfaces 2,3,6,7,8,9
 #119/22 Inheritance in Class Hierarchies 1,3,4,5,6,7,10,11,12
#5#129/25 Discussion of Photomosaic Assignment Read it/Run executables
 Lab #59/26 Photomosaic Workshop TBA
 #139/27 Abstract Classes 1-3
 #149/29 Exceptions in Detail 1-4
#6#1510/2 Analysis of Algorithms (big-O notation) 1-4
 Lab #610/3 Sorting/Closest-Pair Algorithms: Inferring Complexity Classes via Measurements
TBA
 #1610/4 Collection Classes: Basics (including iterators) 1,2,4
 #1710/6 Collection Classes: Stacks, [Priority]Queues 1,3
#7#1810/9 Collection Classes: List, Set, Map 1-5,7
 Lab #710/10 JUnit Testing TBA
 #1910/11 Collection Classes: Final Issues TBA
 #2010/13 Collection Classes: Reading/Using/Writing Generic Classes and Special Iterators TBA
#8#2110/16 Midterm Review None
 Lab #810/17 Practicing with Collection Classes None
 #2210/18 Midterm (EBNF - Collection Classes)
None
  10/20 No Class: Midsemester Break  
#9#2310/23 Introducing Reflection TBA
 Lab #910/24 PRACTICE for In-Class Programming Exam #1 (Collections) None
 #2410/25 Self-Referential Classes: Linked Objects 1,2
 #2510/27 Linked List Processing
2,3
#10#2610/30 Recursion: Fundamentals (powerpoint) Slide 26/Slide 27 (equals)
 Lab #1010/31 Linked List Methods TBA
 #2711/1 Recursion: Linked Lists 1
 #2811/3 Trees: An Introduction None
#11#2911/6 Tree Processing: Iterative and Recursive 1,2,4,5
 Lab #1111/7 Recursion: Lists and Trees TBA
 #3011/8 Special Trees: Heaps, N-ary, Structured, Digital TBA
 #3111/10 Search Spaces, Implicit Trees, Recursion, and Backtracking
None
#12#3211/13 Graphs: An Introduction None
 Lab #1211/14 Profilers and Efficiency TBA
 #3311/15 Graphs: Fundamental Algorithms None
 #3411/17 Discussion of Graph Assignment None
#13#3511/20 View Basics: JFrames and JPanels None
 Lab #1311/21 OPTIONAL: PRACTICE for In-Class Programming Exam #2 (List/Trees) None
  11/22 No Class: Thanksgiving Break  
  11/24 No Class: Thanksgiving Break  
#14#3611/27 Views: Layout Managers None
 Lab #1411/28 In-Class Programming Exam #1 (Collections) None
 #3711/29 Controller Components None
 #3812/1 Controller Components (continued) None
#15#3912/4 A Special Lecture: Theory of Computation None
 Lab #1512/5 In-Class Programming Exam #2 (List/Trees) None
 #4012/6 Course Review None
 #4112/8 Closing Remarks, Course Questionnaires, Surprises(!?) None
Final Exams Week We will have a comprehensive 3-hour written final exam (scheduled by the registrar). When the registrar publishes the final date/time, I will post it here and announce it in class. None