Lecture Schedule/Notes

Introduction to Computer Science I
ICS-21: Lecture A/Labs 1-3
Spring 2012


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. Sometimes we will split our labs between a lecture and a true lab. This is especially true early in the quarter, where we must first learn enough in lecture to apply/practice in lab.

Work Before and During Lecture

I expect students to read the assigned lecture materials before class, and (attempt to) work out solutions to the assigned problems (sometimes you can test/verify your solutions on the computer). During class, I will discuss this material, mostly by answering questions on the reading(s), asking you questions about the material, and amplifying on those topics that need further discussion. Class mottos: "Those who are ashamed of asking are ashamed of learning." and "The only stupid question is the one left unasked."

I will also 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.

Note that doing the reading and working on the assigned problems before class is a critical step in the learning process: students must be familiar with the material to get the maximum benefit from the class discussions and problem-solving sessions. Solving the assigned problems is especially important, as it "proves" that a student has not only read the material, but "understood" it is as well. Here understood means "has used the information operationally to 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 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 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 reserve the right to give small pop-quizzes on the readings. 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, 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 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/02 Course Overview (all)
1,3,5,9
 Lab 4/03 Introduction to Eclipse
 
 Lecture 4/04 EBNF Chapter / Powerpoint 1,2,4,8; Slide #24
 Lab 4/05 Discuss/Start Program #0  
 Lecture 4/06 Tokens in Java Programs (all) 1,2,3,10,11,12
#2Lecture 4/9 Variables and Operators (Introduction - The % Operator) 2,3,4
 Lab 4/10 Lecture Part: Variables and Operators (Relational Operators - Experiment!)
Lab Part     : Work on Program #0
5,6
 
 Lecture 4/11 Expressions (Expressions - Pragmatics) 7,8,10,13,23
 Lab 4/12 Lecture Part: Simple Statements: Declaration, Expression, and Block (Introduction - Boxing Statements)
Lab Part     : Discuss/Start Program #1
1,2,5,6,7
 
 Lecture 4/13 Simple Control Structures: Decision (if Statement - if Pragmatics) 11,12,18,19
#3Lecture 4/16 Simple Control Structures: Looping (for Statement - More Boxing) 26,31
 Lab 4/17 Work on Program #1  
 Lecture 4/18 Advanced Control Structures: Exceptions (try/catch - File Reading) 38,39
 Lab 4/19 Discuss/Start Program #2  
 Lecture 4/20 Program Construction and Debugging (all) none
#4Lecture 4/23 More Java (all)
Coding Style (all)
More Java: 1,3-6
Coding Style: 1,2
 Lab 4/24 Basics of the Eclipse Debugger
Work on Program #2
Page 11 Problems
 
 Lecture 4/25 Simplification (all) 1,2,3,4,5
 Lab 4/26 Discuss/Start Program #3  
 Lecture 4/27 Classes and Objects: Fundamentals (Introduction - == vs equals) 1,2,3
#5Lecture 4/30 Reading/Using Classes (Class Terminology - Field Members) 5,6
 Lab 5/1 Work on Program #3  
 Lecture 5/2 More Useful Classes (OOP Summary - Other Useful Classes) 7
 Lab 5/3 Programming Exam #1: Control Structures
Discuss/Start Program #4
 
 Lecture 5/4 A File I/O Class (Java File I/O - Buffering) 9,11,12
#6Lecture 5/7 Writing static Methods (Introduction - Method Design) 2,3,4,5,6,8
 Lab 5/8 Work on Program #4  
 Lecture 5/9 Writing static Methods in Classes (Defining Classes: EBNF -Eclipse IDE)
 
 Lab 5/10 Midterm Written Exam
 
 Lecture 5/11 Writing Classes (Classes with Objects - Methods) 21-24
#7Lecture 5/14 Writing Classes (continued) (Special Methods - Class Summary) none
 Lab 5/15 Programming Exam #2: static Methods + Using Objects
 
 Lecture 5/16 The 1-d Array Class (Introduction - Modeling Data) 1,2,3,6,8
 Lab 5/17 Discuss/Start Program #5  
 Lecture 5/18 Examples of Array Processing  
#8Lecture 5/21 The Object Class (Wrapper Classes - Reference Casting) none
 Lab 5/22 Work on Program #5  
 Lecture 5/23 Simple Collections via Arrays (Collection Classes - Doubling Performance) 9-13
 Lab 5/24 Discuss/Start Program #6  
 Lecture 5/25 Interfaces (all) 2,3,6,7,8,9
#9Lecture 5/28 Holiday (No Classes): Memorial Day  
 Lab 5/29 Programming Exam #3: Writing Classes  
 Lecture 5/30 Model Classes in the MVC Pattern (all) 1,2,4,5,7
 Lab 5/31 Work on Program #6  
 Lecture 6/1 List Collections and List processing (all in Text file) None
#10Lecture 6/4 Inheritance in Class Hierarchies (all) 1,3,4,5,6,7,10,11,12
 Lab 6/5 Work on Program #6  
 Lecture 6/6 Abstract Classes (all)  
 Lab 6/7 Programming Exam #4: Writing Classes + Arrays  
 Lecture 6/8 Class Wrapup and Review for Final Exam  
Final Exams Week6/10 We will have a comprehensive 2-hour written final exam on Tuesday, June 12th, 1:30pm - 3:30pm in SSPA 1100 (see the Final Exam Schedule, Spring 2012). I will send email when I have computed/entered final grades, which are due to UCI by Thursday, June 21 at 5pm.