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