CMSC 131 - Object-Oriented Programming I

Summer 2005

Course Schedule

Note that this schedule is tentative and subject to change. Readings are from our text by Lewis and Loftus (L&L).

Week Topics Reading Work
Week 1
May 30
Introduction to computer systems, overview of a Java program, comments, code style, I/O via JOptionPane, Eclipse IDE, CVS overview.  Variables, primitives types, operators, String and String operators, conditional statements, while and do-while, constants (literals), variable name conventions, boolean operators, assignment operators, short-circuiting, operator precedence, use of Eclipse and CVS. L&L Chap 1,2, 3.3, 5.1, 5.2, 5.3

5.5, 5.7

HW#1 Out (Fri/Jun 3)
Week 2
Jun 6
Type casting, program design strategies, pseudocode, tracing, testing and debugging, introducing objects (creation and method invocation), reference variables, heap, import, cmsc131Picture library, Java class library (String, Math, NumberFormat), equality, null reference, garbage collection. 3.1, 3.2, 3.5, 3.6 HW#1 Due (Thu/Jun 9)
HW#2 Out (Thu/Jun 9)
Quiz#1 (Fri/Jun 10)
Week 3
Jun 13
Defining classes and methods, toString, visibility (public, private) and encapsulation, method call/return, parameter passing, pass by value, method syntax, local variables and scope, test drivers. 4.0 → 4.4, 5.3 HW#2 Due (Thu/Jun 16)
HW#3 Out (Thu/Jun 16)
Quiz#2 (Fri/Jun 17)
Week 4
Jun 20
Static and non-static methods and variables, method overloading, parameter type promotion, java memory layout (call stack), references as parameters, this. Review of static variables and methods. 6.1 → 6.4, 6.7, 6.8, 6.9 HW#3 Due (Thu/Jun 23)
Quiz#3 (Fri/Jun 24)
Week 5
Jun 27
JUnit testing, constructors, accessors and mutators, conditional operators, interfaces (basics), switch statement, for loops, Random class, break and continue, nested loops, one-dimensional arrays of primitives, arrays as arguments, GUI design, MVC design. One-dimensional arrays of object references, command-line arguments, arrays as instance variables. 3.4, 5.4, 5.5, 5.8, 6.5, 7.1→7.5

(GUI's and MVC are not covered in L&L)

Midterm1 (Tue/Jun 28)

HW#4 Out (Tue/Jun 28)

Week 6
July 4
Command-line arguments, deep/shallow copying, privacy leaks, JUnit Testing. More about interfaces, generic methods, Accessors and mutators (revisited), Java file structure, shadowing (hiding), wrappers, system design, eclipse debugger (in lab).  Event-driven programming, callbacks.  3.8, 4.6,

6.0 → 6.9, 7.4,

Introduction to Program Design [pdf]
The Software Development Process [pdf]

HW#4 Due (Tue/July 5)

HW#5 Out (Tue/July 5)
Quiz#4 (Fri/July 8)

 

Week 7 July 11 Comments (revisited), types of documentation, Javadoc, Random number generation, valueOf, text matching, regular expressions, two-dimensional arrays of primitives, ragged arrays, two-dimensional arrays of object references.  Packages 7.4,7.6,12.3,

Appendix F, H, I

Midterm2 (Thu/July 14)

HW#5 Due (Tue/July 12)

HW#6 Out (Tue/July 12)
Quiz#5 (Fri/July 15)

 
Week 8 July 18 Java API (StringBuffer, Stack)Exceptions (try, catch, finally),Java API (ArrayList), Iterator, introduction to inheritance, superclasses, subclasses, method overriding, overriding vs. overloading, use of super and this, protected and package access. 5.6, 7.7,

8.1→ 8.5, 9.1→9.3, 9.6, 10.1→ 10.5, Appendix M (Stack, and StringBuffer sections)

HW#6 Due (Tue/July 19)

HW#7 Out (Tue/July 19)
Quiz#5 (Fri/July 22)


 
Week 9
July 25
Dynamic systems, state-transition, Object class, early and late binding, polymorphism, final methods, abstract classes, getClass, instanceof, up-casting, down-casting, equals, clone, "is-a" vs. "has-a" relationships.

Interfaces, interfaces vs. abstract classes, multiple inheritance, interface hierarchies

8.1→ 8.5

Appendix E

HW#7 Due (Tue/July 26)

HW#8 Out (Tue/July 26)
Quiz#6 (Take Home Due Aug 3)

Week 10
Aug 1
Bitwise operators, Sorting (Selection sort), "Big-Oh" notation.

Sorting (Bubble sort, insertion sort and Tree Sorts), Searching (Linear and Binary), running time, Review.

Appendix D

9.4 → 9.5

HW#8 Due (Tue/Aug 2)
Final Exam,

Friday Aug 5,

9:00am-11:00am

Web Accessibility