Lecture/Lab Schedule

ICS-33: Intermediate Programming


Course Expectations

Lectures and Labs

Learning to program is an intensive activity. We will have class every day of the week: MWF lectures and TuTh labs. By staying on task 5-days per week, learning and practicing what we learn, we are more likely to master programming in Python. One learns programming by programming.

Work Before, During, and After Lecture

I expect students to read the assigned lecture materials, either before class (as a way to preview the lecture) or after class (where the lecture previews the reading), to get the most out of both: cover the material twice. I will lecture during class, but I prefer discussing the material and answering questions; asking you questions about the material, and amplifying on those topics that need further discussion. I expect most "lectures" to be interactive, with students participating. Class mottos: "Those who are ashamed of asking are ashamed of learning." and "The only stupid question is the one left unasked."

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.

Lecture 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 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.

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.


Schedule, Topics, Readings, and Problems

 
Week     Activity       Date Topic (read for this date/do problems) Problems
#1Lecture 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
#2Lecture 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
#3Lecture 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
#4Lecture 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
#5Lecture 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
#6Lecture 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
#7Lecture 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  
#8Lecture 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
#9Lecture 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
#10Lecture 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 Week6/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.