CMSC 131 -- Object Oriented Programming I

Spring 2007

Fear the Turtle!

Tentative Schedule

 

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

Exam Dates:
  Monday Wednesday Friday
Week 1
1/22

NO CLASS

Intro to Course.  Intro to Computer Systems. Programming Languages. Intro to Eclipse IDE and CVS repositories. 
Week 2
1/29
Simple Java programs.  Output with "System.out".  Variables.  Primitive types.  Expressions.  Statements. Strings. Programming Errors.  Operators (arithmetic, comparison, String).  Input with Scanner.  "if" Statements.  Logical operators.  Nesting statements. 
Week 3
2/5
"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.).  Precedence.  Type casting.  Program design considerations.  Pseudocode.  Intro to testing and debugging
Week 4
2/12
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.) Example of a "good class" (continued from last time.)   "for" loops.
Week 5
2/19
"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. Intro to comments and good style.  More on instance methods. 
Week 6
2/26
More on variables, scope, and visibility Memory map.  The call stack.  Method overloading. More on method overloading.  Review for exam.
Week 7
3/5
"this".  Testing.  JUnit.  More about constructors. 

Midterm #1 (During lab session).

Writing a class (complete example, including testing.) 

Switch statement.  Break statement.  Continue statement.  Begin Arrays.
Week 8
3/12
Continue with arrays. Even more on arrays.  Privacy leaks. GUI's and Model-View-Controller design pattern. Fun Day!  Lecture topics to be announced.
Week 9
3/19
SPRING BREAK SPRING BREAK SPRING BREAK
Week 10
3/26
Copying arrays:  "deep", "shallow", and "half-deep" copies.   Interfaces.  Intro to polymorphism. Wrappers.  More Interface Examples. Algorithms.  System design.
Week 11
4/2

Command line java.  Observer design pattern.  More on comments and documentation.  Javadoc.  Two-dimensional Arrays.
Week 12
4/9
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 13
4/16
StringBuffer class.  Inheritance. Midterm #2 (During lab session)More on Inheritance. Abstract methods and classes.  "getClass".  "instanceOf".  Explicit "downcasting".
Week 14
4/23
Proper equals method in view of polymorphism.  "clone" method.  Compare and constrast: inheritance, association, composition.  Concept of "multiple inheritance".  Begin asymptotic complexity.  (Big-O notation.)  Linear and binary search. More on "Big-O" notation.
Week 15
4/30
 
More on "Big-O". 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.)
Week 16
5/7
Linear sorting.  (Counting sort and radix sort.) Review for final.

NO CLASS

Week 17
5/14

FINAL EXAM  

4:00PM - 6:00 PM

Location to be announced