CMSC 131 -- Object Oriented Programming I

Fall 2006

Fear the Turtle!

Tentative Schedule

 

The schedule below is approximate, tentative, and subject to change!

Exam Dates:

 

  Monday Wednesday Friday
Week 1
8/28

No Class

Intro to Course.  Intro to Computer Systems. Programming Languages. Intro to Eclipse IDE and CVS repositories. 
Week 2
9/4

Holiday -- No Class

Simple Java programs.  Output with "System.out".  Variables.  Primitive types.  Expressions.  Statements. Strings. Programming Errors.  Operators (arithmetic, comparison, String).  Input with Scanner. 
Week 3
9/11
"if" Statements.  Logical operators.  Nesting statements.  "else if" cascaded style.  "while" loops.  "do while" loops.  Constants (literals).  Escape sequences in Strings.  Variable naming.  Short-circuiting.  Increment/Decrement operators.   Various assignment operators (+=, *=, etc.). 
Week 4
9/18
Precedence.  Type casting.  Program design considerations.  Pseudocode.  Intro to testing and debugging.  Intro to Objects.  Intro to classes.  Primitives vs. references to Objects.  The "heap".  "==" vs. "equals".  Garbage collection.  Example of a "good class" (including fields, general methods, equals method, toString method.)
Week 5
9/25
Example of a "good class" (continued from last time.)   "for" loops. "static" vs. "non-static".  "instance" variables vs. "local" variables.  More details on passing parameters.Libraries and intro to packages (java.lang, String class, Math class, CMSC131PictureLibrary class.)  Encapsulation and visibility.  API.
Week 6
10/2
Intro to comments and good style.  More on instance methods.  More on variables, scope, and visibility. Memory map.  The call stack.  Method overloading.
Week 7
10/9
More on method overloading.  Review for exam. (Exam in Lab Session.)
"this".  Testing.  JUnit.  More about constructors. 
Writing a class (complete example, including testing.) 
Week 8
10/16
Switch statement.  Break statement.  Continue statement.  Begin Arrays. Continue with arrays. Even more on arrays.  Privacy leaks. GUI's and Model-View-Controller design pattern.
Week 9
10/23
Copying arrays:  "deep", "shallow", and "half-deep" copies.   Interfaces.  Intro to polymorphism. Wrappers.  More Interface Examples. Algorithms.  System design.
Week 10
10/30
Command line java.  Observer design pattern.  More on comments and documentation.  Javadoc.  Two-dimensional Arrays.
Week 11
11/6

More on two-dimensional arrays.  Details about packages. Runtime errors and techniques for handling them.  Java exception handling. More on exception handling.  Intro to Java "generics".  Stack class. ArrayList class.
Iterators.
Week 12
11/13
StringBuffer class.  Inheritance. (Exam in Lab Session.)
More on Inheritance.
Abstract methods and classes.  "getClass".  "instanceOf".  Explicit "downcasting".
Week 13
11/20
Proper equals method in view of polymorphism.  "clone" method.  Compare and constrast: inheritance, association, composition.  "Fun" Lecture.  Topics to be announced.

Holiday -- No Class

Week 14
11/27
Concept of "multiple inheritance".  Begin asymptotic complexity.  (Big-O notation.)  Linear and binary search. More on "Big-O" notation.   More on "Big-O".
Week 15
12/4
 
Assessing the complexity of an algorithm by inspection.  Sorting in quadratic time (bubble sort and insertion sort.) Sorting in O(n log n) time.  (Merge Sort and/or Quick Sort.) Linear sorting.  (Counting sort and radix sort.)
Week 16
12/11
Review for final.

No Class

Final Exam
4:00 - 6:00pm.  Location to be announced.