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).
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.
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 | #1 | 8/28 | Course Overview (and EBNF material) | 1,3,5,9 |
Lab #1 | 8/29 | Eclipse IDE | None | |
#2 | 8/30 | Tokens in Java Programs | 1,2,3,10,11,12 | |
#3 | 9/1 | Variables, Operators, and Expressions | 2,3,5,6,7,8,10,13,23 | |
#2 | 9/4 | No Class: Labor Day | ||
Lab #2 | 9/5 | Advanced Eclipse | None | |
  | #4 | 9/6 | Statements | 1,6,7,12,18,19,26,31,38,39 |
#5 | 9/8 | Objects, Using Class Libraries/Javadoc | 1,2,3,5,6,7,9,11,12 | |
#3 | #6 | 9/11 |
More Java,
Coding Style Program Construction and Debugging; | MJ:1-4,6, CS:1, PCD: none |
Lab #3 | 9/12 | Basics of the Eclipse Debugger | Will solve basic problems (the craps program) in class | |
#7 | 9/13 | Writing Classes and Javadoc | 2,3,6,14,21,22,23,24 | |
#8 | 9/15 | 1-d Arrays, the Object Class, and Simple Collections | 1,2,3,6,8,10,11 | |
#4 | #9 | 9/18 | Model Classes in the MVC Pattern and Simplification | MVC: 1,2,4,5,7 and S:2-4 |
Lab #4 | 9/19 | Writing a Simple Model Class | None | |
#10 | 9/20 | Interfaces | 2,3,6,7,8,9 | |
#11 | 9/22 | Inheritance in Class Hierarchies | 1,3,4,5,6,7,10,11,12 | |
#5 | #12 | 9/25 | Discussion of Photomosaic Assignment | Read it/Run executables |
Lab #5 | 9/26 | Photomosaic Workshop | TBA | |
#13 | 9/27 | Abstract Classes | 1-3 | |
#14 | 9/29 | Exceptions in Detail | 1-4 | |
#6 | #15 | 10/2 | Analysis of Algorithms (big-O notation) | 1-4 |
Lab #6 | 10/3 |
Sorting/Closest-Pair Algorithms:
Inferring Complexity Classes via Measurements |
TBA | |
#16 | 10/4 | Collection Classes: Basics (including iterators) | 1,2,4 | |
#17 | 10/6 | Collection Classes: Stacks, [Priority]Queues | 1,3 | |
#7 | #18 | 10/9 | Collection Classes: List, Set, Map | 1-5,7 |
Lab #7 | 10/10 | JUnit Testing | TBA | |
#19 | 10/11 | Collection Classes: Final Issues | TBA | |
  | #20 | 10/13 | Collection Classes: Reading/Using/Writing Generic Classes and Special Iterators | TBA |
#8 | #21 | 10/16 | Midterm Review | None |
Lab #8 | 10/17 | Practicing with Collection Classes | None | |
#22 | 10/18 |
Midterm (EBNF - Collection Classes) | None | |
10/20 | No Class: Midsemester Break | |||
#9 | #23 | 10/23 | Introducing Reflection | TBA |
Lab #9 | 10/24 | PRACTICE for In-Class Programming Exam #1 (Collections) | None | |
#24 | 10/25 | Self-Referential Classes: Linked Objects | 1,2 | |
#25 | 10/27 |
Linked List Processing |
2,3 | |
#10 | #26 | 10/30 | Recursion: Fundamentals (powerpoint) | Slide 26/Slide 27 (equals) |
Lab #10 | 10/31 | Linked List Methods | TBA | |
#27 | 11/1 | Recursion: Linked Lists | 1 | |
  | #28 | 11/3 | Trees: An Introduction | None |
#11 | #29 | 11/6 | Tree Processing: Iterative and Recursive | 1,2,4,5 |
Lab #11 | 11/7 | Recursion: Lists and Trees | TBA | |
#30 | 11/8 | Special Trees: Heaps, N-ary, Structured, Digital | TBA | |
#31 | 11/10 |
Search Spaces, Implicit Trees, Recursion, and Backtracking |
None | |
#12 | #32 | 11/13 | Graphs: An Introduction | None |
Lab #12 | 11/14 | Profilers and Efficiency | TBA | |
#33 | 11/15 | Graphs: Fundamental Algorithms | None | |
#34 | 11/17 | Discussion of Graph Assignment | None | |
#13 | #35 | 11/20 | View Basics: JFrames and JPanels | None |
Lab #13 | 11/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 | #36 | 11/27 | Views: Layout Managers | None |
Lab #14 | 11/28 | In-Class Programming Exam #1 (Collections) | None | |
#37 | 11/29 | Controller Components | None | |
  | #38 | 12/1 | Controller Components (continued) | None |
#15 | #39 | 12/4 | A Special Lecture: Theory of Computation | None |
Lab #15 | 12/5 | In-Class Programming Exam #2 (List/Trees) | None | |
  | #40 | 12/6 | Course Review | None |
#41 | 12/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 |