Try to work out solutions to the assigned problems, to prove that you have understood the material; you can often test/verify/explore your solutions on the computer. Here understanding means "be able to use the information operationally to write programs that 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 on the Forum. One of the few advantages of a big class like this is the potental for peer-teaching.
Because these problems are not graded, feel free to discuss them, but don't give away the answers for those still working on them: working on exercises like these builds your programming muscles. 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.
Ringing cell phones disrupt my lectures. 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 and you decide you must answer the call, please leave the class, with a minimum of disruption to the rest of the students. If your cell phone rings audibly in class, you will be charged points for interrupting the class. Finally, if you know that you must leave early, please sit by a door, so that you can exit quietly and without disturbing the class.
Overall, please strive to be a considerate class member, both to me and to your fellow students.
| Week | Activity | Date | Topic (read for this date/do problems) | Problems |
|---|---|---|---|---|
| #1 | Lecture | 4/1 |
Course Overview (all) | 1,3,5,9 |
| Lab | 4/2 | Start Program #0: Eclipse Python and Debugger Perspective |   | |
| Lecture | 4/3 | Review Python I | tba | |
| Lab | 4/4 | Start Program #1: Iteration and Major Data Types | ||
| Lecture | 4/5 | Review Python II | tba | |
| #2 | Lecture | 4/8 | EBNF: A Notation to Describe Syntax | 1,2,6,7 |
| Lab | 4/9 | Work on Program #1: Iteration and Major Data Types | ||
| Lecture | 4/10 |
Regular Expressions: Patterns retester.py (Regular Expression Tester) |
tba | |
| Lab | 4/11 | Work on Program #1: Iteration and Major Data Types | ||
| Lecture | 4/12 |
Regular Expressions: Methods remethods (Folder with programs illustrating RE methods) | tba | |
| #3 | Lecture | 4/15 | Class Review | tba |
| Lab | 4/16 | Work on Program #1: Iteration and Major Data Types | ||
|   | Lecture | 4/17 | Class Operator Overloading I | tba |
| Lab | 4/18 | Start Program #2: Classes, Overloaded Operators, Iterators | ||
|   | Lecture | 4/19 | Class Operator Overloading II | tba |
| #4 | Lecture | 4/22 | Iterator Protocol and Examples of Use | tba |
| Lab | 4/23 | Work on Program #2: Classes, Overloaded Operators, Iterators | ||
| Lecture | 4/24 | Iterators in Classes with iter and next | tba | |
| Lab | 4/25 | Work on Program #2: Classes, Overloaded Operators, Iterators | ||
|   | Lecture | 4/26 | Iterators in Functions: generators and yield | tba |
| #5 | Lecture | 4/29 | Recursive Functions | tba |
| Lab | 4/30 | Work on Program #2: Classes, Overloaded Operators, Iterators | ||
| Lecture | 5/1 | Functional Programming | tba | |
| Lab | 5/2 | Start Program #3: namedtuple | ||
| Lecture | 5/3 | Decorators (download decorators project) | tba | |
| #6 | Lecture | 5/6 | Inheritance I (download counters project) | tba |
| Lab | 5/7 | Work on Program #3: namedtuple | ||
| Lecture | 5/8 | Inheritance II (download inheritance project) | tba | |
| Lab | 5/9 | Midterm Written Exam (covering Lectures 4/1-5/3) | ||
| Lecture | 5/10 | Inheritance III | tba | |
| #7 | Lecture | 5/13 | Linked Lists (download linked list project) | tba |
| Lab | 5/14 | Start Program #4: Annotation Checker | ||
| Lecture | 5/15 | Trees I (download tree project) | tba | |
| Lab | 5/16 | Work on Program #4: Annotation Checker | ||
| Lecture | 5/17 | Trees II |   | |
| #8 | Lecture | 5/20 | Analysis of Algorithms and Complexity Classes | tba |
| Lab | 5/21 | Work on Program #4: Annotation Checker | ||
| Lecture | 5/22 | The Complexity of Python Operators/Functions | tba | |
| Lab | 5/23 | Start Program #5: Inheritance and Simulation | ||
| Lecture | 5/24 | Empirical Efficiency (also Hashing for sets and dicts) (download empirical project) | tba | |
| #9 | Lecture | 5/27 | Holiday (No Classes): Memorial Day | |
| Lab | 5/28 | Work On Program #5: Inheritance and Simulation | ||
| Lecture | 5/29 | DocTest | tba | |
| Lab | 5/30 | Work On Program #5: Inheritance and Simulation | ||
| Lecture | 5/31 | UnitTest (download unittests project) (view unittest pictures) | tba | |
| #10 | Lecture | 6/3 | Static Typing | tba |
| Lab | 6/4 | Work On Program #5: Inheritance and Simulation | ||
| Lecture | 6/5 | Python and Java | ||
| Lab | 6/6 | Work On Program #5: Inheritance and Simulation | ||
| Lecture | 6/7 | Class Wrapup and Quick Review for Final Exam | ||
| Finals Exam Week | 6/12 | We will have a comprehensive 2-hour written
final exam on Wednesday, June 12th, 10:30pm - 12:30pm in our lecture hall (see the Final Exam Schedule). I will send email when I have computed/entered final grades, which are due to UCI by Thursday, June 21 at 5pm. |
||