Lecture/Lab Schedule

ICS-31: Introduction to 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 practicing 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 MessageBoard Forums. 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 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, and settling down when class starts: I will wait for the noise to subsist before starting 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.

Someone once said, "Distance education begins in the 8th row of the classroom": once you are that far back, it is easy to stop paying attention. So, I recommend that students sit in the rows that are at the front of the room. I once had the following comment on my final teaching evaluation, "Write bigger: I could never read what you wrote on the whiteboard from my seat in the back of the class." I have many deficiencies as an instructor; students should help themselves get what they need out of this class -like sitting near the front

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 asked to leave class for that day. 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; doing so is especially important in large classes.


Schedule, Topics, Readings, and Problems

 
Week     Activity       Date Topic (read for this date/do problems) Problems
#1Lecture 3/31 Course Overview (all)
1,3,5,9
 Lab 4/1 Download and Install Python, Java, and Eclipse.
Work through Python Programming in the Eclipse IDE
 
 Lecture 4/2 EBNF: A Notation to Describe Syntax 1,2,6,7
 Lab 4/3 Start Program #0: Computing Infrastructure  
 Lecture 4/4 Tokens and Python's Lexical Structure 2,3,6,7
#2Lecture 4/7 Defining Names in and from Modules 1,2,4,5
 Lab 4/8 Work on Program #0: Computing Infrastructure  
 Lecture 4/9 Reading Headers and Calling Functions 1,2
 Lab 4/10 Start Program #1: Simple Scripts  
 Lecture 4/11 Python Operators (5.1-5.2) tba
#3Lecture 4/14 Expressions 1, 3, 5, 6, 8
 Lab 4/15 Work on Program #1: Simple Scripts  
 Lecture 4/16 if Statements for decisions (Boxing Diagram) 2,8,10,11,12
 Lab 4/17 Work on Program #1: Simple Scripts  
 Lecture 4/18 Iteration and for loops (strings, range/irange, open) (Boxing Diagram)    forproject tba
#4Lecture 4/21 Iteration and while loops tba
 Lab 4/22 Start Program #2: The Debug Perspective in Eclipse  
 Lecture 4/23 Exceptions and the try/except statement tba
 Lab 4/24 Start Program #3: Intermediate Scripts  
 Lecture 4/25 Program Construction and Debugging
Program Simplification
tba
#5Lecture 4/28 Writing Functions and Modules I tba
 Lab 4/29 Work on Program #3: Intermediate Scripts  
 Lecture 4/30 Writing Functions and Modules II    functionproject
Testing Functions    driverbatch
tba
 Lab 5/1 Start Program #4: Functions and Control Structures  
 Lecture 5/2 Useful functions and Lambdas (little functions) tba
#6Lecture 5/5 Lists         Picturing Lists tba
 Lab 5/6 Work on Program #4: Functions and Control Structures  
 Lecture 5/7 List Processing 1    listproject tba
 Lab 5/8 Midterm Written Exam (covering Lectures 3/31-5/2)  
 Lecture 5/9 List Processing 2 (Comprehensions) tba
#7Lecture 5/12 Tuples and Named Tuples (with List/Tuple Comprehensions) tba
 Lab 5/13 Start Program #5: List Processing  
 Lecture 5/14 Dictionaries tba
 Lab 5/15 Work on Program #5: List Processing  
 Lecture 5/16 Dictionary Processing 1    dictionaryproject  
#8Lecture 5/19 Dictionary Processing (review)  
 Lab 5/20 Work on Program #5: List Processing  
 Lecture 5/21 Sets and Frozen Sets    updateddictionaryproject tba
 Lab 5/22 Start Program #6: Dictionary and Set Processing  
 Lecture 5/23 Using Classes tba
#9Lecture 5/26 Holiday (No Classes): Memorial Day  
 Lab 5/27 Work on Program #6: Dictionary and Set Processing  
 Lecture 5/28 Writing Classes    Class Object Diagram    A simple class and script: Predicate_List tba
 Lab 5/29 Work On Program #6: Dictionary and Set Processing  
 Lecture 5/30 Writing Classes (continued) tba
#10Lecture 6/2 Functions as Results tba
 Lab 6/3 Work On Program #6: Dictionary and Set Processing  
 Lecture 6/4 Functions as Data: map, filter, reduce, ...  
 Lab 6/5 In-Lab Programming Exam: From simple scripts to Dictionaries/Sets  
 Lecture 6/6 Class Wrapup and Quick Review for Final Exam  
Finals Exam Week6/10 We will have a comprehensive 2-hour written final exam on Tuesday, June 10th,
1:30pm - 3: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 19 at 5pm.