Lecture Schedule/Notes

Introduction to Computer Science III
ICS-23: Lecture A/Labs 1-4
Spring 2008


Lecture Expectations

Reading

Every lecture will link to notes that I prepare for it. I am hoping to have the notes finished by the morning of the lecture; but I am promising only that I will have them done by the morning after. You should check in the morning and print these notes (if they are available) and bring them to class: the notes will be in text form only, and you might want to fill in -on the notes themselves- the pictures that I show in class. I'm hoping for lots of questions, both in class and on the discussion list. Class motto: "Those who are ashamed of asking are ashamed of learning. The only stupid question is the one left unasked."

Most lectures will also list a reading from the textbook. It would probably be useful to read these materials before or after class (or even both), although everything "important" (meaning those things that are part of the curriculum and tests) will be discussed in class.

If I assign problems for class (as I am doing for the first day of class; see below) 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 interactive, with students participating fully.

For any problems that I assign for presentation 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 problems on (almost) weekly take-home quizzes, on which collaboration is prohibited. Don't cheat yourself in this aspect of the course.

TAs will hold help sessions almost every evening to aid you with understanding with the course material 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 at the start of class. 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 class-participation point for interrupting the class. 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 Activity Date Topic (read for this date/do problems) Goodrich/Tammassia Reading
Pre-Class Interfaces
Be prepared to present solutions to problems 5, 9, and 10 in class on 4/1
None
#1Lecture4/1 Course Overview, Object/Instance Pictures, Interfaces None (Notes)
 Lab4/2 Assessment, Basics of the Eclipse Debugger, Digital Pictures None
 Lecture4/3 Review of Linked Lists, List Processing, Recursion, Recursion on Linked Lists, 2-Dimensional Arrays 3.1.5, 3.2 (Notes)
 Lab4/4 Discuss/Start Program #1 None
#2Lecture4/8 Generic Collection Classes (and their Iterators), Correctness/Performance of Implementations 3.1.5, 3.2 (Notes)
 Lab4/9 Work on Program #1 None
 Lecture4/10 Analysis of Algorithms: big-O and Omega, and Theta notations 4.1-4.3 (Notes)
 Lab4/11 Discuss/Start Program #2 None
#3Lecture4/15 Advanced Linked Lists: Header, Trailer, Doubly-linked, Circular 3.2-3.4 (Notes)
 Lab4/16 Work on Program #2 None
 Lecture4/17 Trees: Binary Search (insert,find,remove), Traversal Orders
Trees and Tree Processing.
7.1-7.3, 10.1 (Notes)
 Lab4/18 Work on Program #2 None
#4;Lecture4/22 Heaps section in Special Trees AVL (and other self-balancing trees) 8.3, 10.2 (Notes)
 Lab4/23 Work on Program #2 None
 Lecture4/24 General Trees: Children via Sets and Lists, Binary embedding, Digital Tress via Maps, Structure Trees (Expressions) See Nary Trees and Expression Trees in Special Trees None (Notes)
 Lab4/25 Discuss/Start Program #3 None
#5Lecture4/29 Problem Solving and Search Trees: Explicit and Implicit None (Notes)
 Lab4/30 Work on Program #3 None
 Lecture5/1 See Hash Tables section in Collection Classes: (Hash Table) web document: Hashing, Chaining, Probing, Iterators 9.2 (Notes)
 Lab5/2 Work on Program #3 None
#6Lecture5/6 Skip Lists (as an alterntive to Trees) 9.4 (Notes)
 Lab5/7 Work on Program #3 None
 Lecture5/8 Midterm Exam (please arrive promptly for maximum time)  
 Lab5/9 Discuss/Start Program #4 None
#7Lecture5/13 Sorting: Time/Space/Stability, Arrays/Lists, Comparison/Structural 11.1-11.5 (Notes)
 Lab5/14 Work on Program #4 None
 Lecture5/15 String Processing: Quadratic/Linear Searching, Tries, Compression (Huffman Trees) 12.1, 12.3, 12.4 (Notes)
 Lab5/16 Work on Program #4 None
#8Lecture5/20 Graphs: Terminology and Representations 13.1-13.5 (Notes)
 Lab5/21 Work on Program #4 None
 Lecture5/22 Graph Algorithms I: Topological Sorting, Spanning Trees 13.7, 13.6 (Notes)
 Lab5/23 Discuss/Start Program #5 None
#9Lecture5/27 Graph Algorithms II: Fast Union/Find, Connected Components, Dijkstra's algorithm 11.6 (Notes)
 Lab5/28 Work on Program #5 None
 Lecture5/29 Memory (and its Interaction with Algorithms) 14.1-14.2 (Notes)
 Lab5/30 Work on Program #5 None
#10Lecture6/3 Memory-Limited (External) Searching & Sorting and/or
Special Lecture (Infinity and Computer Programs)
14.3-14.4 (Notes)
 Lab6/4 Work on Program #5 None
 Lecture6/3 Course Review, Final Words, Written Survey None
 Lab6/6 Work on Program #5 None
Final Exams Week6/10 We will have a comprehensive 2-hour written final exam on Tuesday, June 10th, 4:00pm - 6:00pm
(see the Final Exam Schedule, Spring 2008). I will send email when I have computed/entered final grades, which are due to UCI by June 19 at 5pm.