CMPU 101: Computer Science I (Section 52), Spring 2006

Instructor

David Hovemeyer

Lecture

MW 12:00-1:15 PM, OLB 105

Lab

Thursday 6:00-7:30 PM
Thursday 7:30-9:00 PM
In OLB 104 (the Mac lab)

Coaching hours

Monday 7-8 PM in OLB 104

Throughout the semester this web page will be updated with important course information.  Please check it regularly.

News

The Final Exam will take place Tuesday, May 23 from 9:00-11:00 AM in RH 307.  It is open book and open notes.

18 May 2006
Notes for Lecture 17 (Inheritance) and Lecture 22 (Recursion) are available.
11 May 2006
Elise will hold coaching hours in the Mac lab this evening from 7-9 PM, Monday the 15th from 7-9 PM, Thursday the 18th from 8-10 PM, and Monday the 22nd from 8-10 PM.
9 May 2006
There will be a final exam review session Tuesday, May 16th from 7-9 PM.  Bring questions!
26 Apr 2006
Assignment 8 is posted, due by 11:59 PM on Monday, May 8th.
17 Apr 2006
Assignment 7 is posted, due by 11:59 PM on Wednesday, April 26th.
8 Apr 2006
A review session for Midterm 2 will be held Monday, April 10th from 8:30-9:30 PM in OLB 105.  The exam will take place in class on April 12th.
29 Mar 2006
Assignment 6 is posted, due by 11:59 PM on Friday, April 7th.
28 Feb 2006
Assignment 5 is posted, due by 11:59 PM on Thursday, March 9th.
21 Feb 2006
Midterm 1 Review Notes are available.
16 Feb 2006
A review session for the first midterm will take place Monday, February 20th from 8:30-9:30 PM in the CS classroom (OLB 105).  Bring questions!
15 Feb 2006
The first midterm exam will take place in class on Wednesday, February 22nd.  The exam is open book and open notes.  Assignment 4 is posted, due by 11:59 PM on Friday, February 24th.
8 Feb 2006
Assignment 3 is posted, due by 11:59 PM on Wednesday, February 15th.
1 Feb 2006
Assignment 2 is posted, due at the beginning of class on Wednesday, February 8th.
30 Jan 2006
Lab sessions will be Thursday night from 6-7:30 and 7:30-9 PM in OLB 104 (the Mac lab).  You may attend whichever is most convenient: let me know if you can't attend during these time slots.  Coaching hours will be held Monday from 7-8 PM, also in OLB 104.  The coach is Elise Stickles.
25 Jan 2006
Welcome back!  Assignment 1 is posted, due Friday, January 27 by 11:59 PM.  (Don't worry, it's easy!)

Resources

Software you can optionally install on your home computer.  (You will need both the Java Development Kit and DrJava.)

Lectures, Assignments, and Exams

Please note: the exact topics of future lectures are tentative.

Date Topic, Lecture Notes, Examples Assignment Reading for next time
Wed, Jan 25 Course overview, computer organization, binary arithmetic. Notes Assignment 1, due Jan 27 by 11:59 PM Savitch, Chapter 1
Mon, Jan 30 Machine language and high level languages. Objects and classes. Java lexical elements. Notes   Savitch, Chapter 2, Section 2.1
Wed, Feb 1 Variables and assignments. Expressions and statements. The main method. DrJava. Notes Assignment 2, due Feb 8 by beginning of class (12:00 noon) Savitch, Chapter 2, Sections 2.2-2.3. Chapter 3, Section 3.1.
Mon, Feb 6 Boolean expressions, relational operators, and logical operators. If/else statements. Methods (intro). Notes   Savitch, Chapter 4, Section 4.1.
Wed, Feb 8 The Java API. Classes, objects, and methods. Notes, Demo.java, Person.java Assignment 3, due Wednesday Feb 15 by 11:59 PM Savitch, Chapter 4, Sections 4.2-4.3.
Mon, Feb 13 Classes, methods, and objects continued. Notes, Person.java, SmileyFace.java, SmileyWindow.java   Savitch, Chapter 3, Sections 3.2-3.3.
Web, Feb 15 Control flow: if, switch, and loops. Variables and scope. Notes, Chars.java, Loops.java, Person.java Assignment 4, due Friday Feb 24 by 11:59 PM Savitch, Sections 2.4 and 3.4. Review Section 2.2.
Mon, Feb 20 Loops and control flow continued. Notes   Study for Exam.
Wed, Feb 22 First midterm exam, in class. Open book and open notes.
Mon, Feb 27 Input and Output. Notes, ScannerDemo.java, BankDemo.java, BankDemo2.java Assignment 5, due Thursday Mar 9th by 11:59 PM Review Section 2.3. Read Sections 5.1-5.2.
Wed, Mar 1 Strings. Notes    
Mon, Mar 6 StringTokenizer. Loops, break, and continue. ReadTokens.java, ReadTokens2.java, ContinueDemo.java, StringScannerDemo.java, OverloadDemo.java   Sections 6.1-6.2.
Wed, Mar 8 Objects and equality. Arrays (intro). Notes, StringEqualityDemo.java, Person.java, ArrayDemo.java, TempDemo.java
Mar 10 - Mar 26 Spring Break, no class
Mon, Mar 27 Top-down program design. Array algorithms. Notes, TempsDemo.java   Sections 6.3-6.5.
Wed, Mar 29 Selection sort. Multidimensional arrays. Notes, SelectionSort.java Assignment 6, due by 11:59 PM on Friday, April 7th Sections 5.3-5.5.
Mon, Apr 3 Objects, arrays, and collections. Person.java, PersonTest.java   Section 7.1.
Wed, Apr 5 Collections continued. JUnit. Inheritance (intro). Person.java, PersonTest.java, PersonCollection.java, PersonCollectionTest.java,   Sections 7.2-7.3.
Mon, Apr 10 Inheritance continued. Notes, Face.java, FaceDemo.java, SurprisedFace.java, Study for Exam.
Wed, Apr 12 Second midterm exam, in class.  Open book and open notes.
Mon, Apr 17 Inheritance, polymorphism, and downcasts.  Abstract classes and interfaces.  Superclass constructors.  java.lang.Object.  Assignment 7, due by 11:59 PM on Wednesday, April 26th. Section 10.1.
Wed, Apr 19 Standard collections. Notes, ArrayListDemo.java, ArrayListBug.java, ArrayListDemo2.java, ArrayListBug2.java Sections 8.1-8.3. Sections 9.1-9.2
Mon, Apr 24 Exceptions. File input (intro). Notes, BufferedReaderDemo.java Section 11.1.
Wed, Apr 26 File input and output. Recursion. Notes Assignment 8, due by 11:59 PM on Monday, May 8th. Section 11.2. Sections 12.1-12.3.
Mon, May 1 Recursion continued. Sections 12.4-12.6.
Wed, May 3 GUI / Event-driven programming. TempConverter.java, TempConverterApp.java
Mon, May 8 Switch statements. Do-while loops. The super keyword. Course wrap-up.
Tuesday, May 23 Final Exam. 9:00-11:00 AM, in RH 307. Open book and open notes.

Labs

Week Lab Files
Week 1 (Jan 25 - Jan 27) no lab  
Week 2 (Jan 31 - Feb 3) Lab 1: DrJava intro, variables, assignments and expressions FirstProgram.java
Week 3 (Feb 6 - Feb 10) Lab 2: Methods and mathematical expressions PlottingCalculator.java, Functions.java
Week 4 (Feb 13 - Feb 17) Lab 3: The Java API and Graphics class Picture.java, PictureWindow.java
Week 5 (Feb 20 - Feb 24) Lab 4: Loops Loops.java
Week 6 (Feb 27 - Mar 3) Lab 5: I/O and Strings  
Week 7 (Mar 6 - Mar 10) Lab 6: Arrays  
Week 8 (Mar 27 - Mar 31) Lab 7: Top-Down Design, Algorithms, and Testing  
Week 9 (Apr 3 - Apr 7) Lab 8: JUnit  
Week 10 (Apr 10 - Apr 14) Lab 9: Inheritance and Javadoc cs101-lab9.zip
Week 11 (Apr 17 - Apr 21) Lab 10: Collections cs101-lab10.zip
Week 12 (Apr 24 - Apr 28) Lab 11: Text File Input  
Week 13 (May 1 - May 5) Lab 12: Recursion Lab12.java, Lab12Test.java
Week 14 (May 8 - May 9) No lab