CMSC 131 -- Object Oriented Programming I

Fall 2007

Fear the Turtle!

Tentative Schedule

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

Exam Dates:
  Monday Wednesday Friday
Week 1
8/27

NO CLASS

1.

intro to course;  intro to computer systems.

2.

hardware; operating system; programming languages

Week 2
9/3

HOLIDAY (NO CLASS)

3.

using an IDE; introduction to course tools (Eclipse and CVS repositories); portability; intro to Object Oriented "lingo"

4.

primitive Java examples; text output; variables; statements; main method; assignment operator; primitive types; expressions; operators; programming errors and debugging; strings and concatenation

Week 3
9/10
5.

arithmetic operators; integer truncation; comparison operators; input with Scanner; equals with Strings; if-statements; blocks

6.

logical operators; nesting of statements; more about if-statements

7.

Java identifier names; Camel case; choosing proper variable names; named constants; while loops; do-while loops

Week 4
9/17
8.

nested loops; literals; escape sequences; short-circuiting; increment/decrement operators; various assignment operators

9.

rules of precedence; suggestions for readable code; type casting (of primitives); overview of program design

10.

pseudocode; overview of testing/debugging; Objects in Java; state/behaviors; classes; instance variables

Week 5
9/24
11.

primitive vs. reference to Objects; the Heap; memory diagrams; garbage collection

12.

assignments with reference variables; aliasing; equals method; begin example of Object Oriented class...

13.

...continue example of Object Oriented class, including: parameters; return values; constructors; setters/getters; writing an equals method; toString

Week 6
10/1
14.

for-loops; static vs. non-static; static methods vs. instance methods; the three kinds of variables:  instance, local, static; syntax for accessing static/instance members; example of static/instance members;

15.

memory diagrams for passing parameters; Java libraries; intro to packages; fully qualified names; import; Math class; String class in detail

16.
Review for Midterm #1
(Midterm is on Monday in lab session.)

 

 

Week 7
10/8
17.

encapsulation and visibility; public vs. private; API; methods that modify parameters; copy constructors

Midterm #1 in Lab.

18.

proper commenting; examples of good programming style;  instance methods calling other instance methods; summary of accessing class members

19.

Java call stack; initialization of variables; setting "default" values; method overloading; prototype vs. signature

Week 8
10/15
20.

"this"; software testing; JUnit; assertTrue; assertEquals

21.

connection between testing and debugging; using the Eclipse Debugger

22.

typical uses of constructors; use of copy constructor to avoid aliasing; mutability; rounding errors in floating point calculations

Week 9
10/22

23.

Example of a complete Java class, including test cases

24.

ternary ?: operator; switch statements; break; continue

25.

arrays of primitives; arrays of references

Week 10
10/29
26.

privacy leaks; three ways to copy arrays:  reference/shallow/deep

27.

Java interfaces; polymorphism

28.

more interface examples

Week 11
11/5

29.

algorithms; intro to complexity

30.

design of large projects; command line Java; passing arguments to main method

31.

proper use of commenting; internal vs. external comments; Javadoc

Week 12
11/12
32.

Review for Midterm #2 (Midterm is on Wednesday in Lab session.)

33.

two-dimensional arrays (ragged and rectangular

Midterm #2 in Lab.

34.

package visibility; overview of Java packages

Week 13
11/19
35.

exception handling; throwing exceptions; catching exceptions; try/catch

36.

Fun day. (topics to be announced).

HOLIDAY (NO CLASS)

Week 14
11/26
37.

more on exception handling; finally block; Java generics (brief intro); overview of collections; Stack class; ArrayList

38.

for-each loops; StringBuffer class; overview of inheritance; superclasses and subclasses

39.

inheritance examples; super in constructors; memory diagrams with inheritance; method overriding; using super with overridden methods; variable shadowing

Week 15
12/3
 
40.

connection between super and this; early vs. late binding; Object class; polymorphic arrays; inheritance example

41.

instanceOf; getClass; explicit type casting;proper equals method (in view of inheritance); inheritance vs. association vs. composition; overloading vs. overriding; multiple inheritance (and Java's lack thereof);

42.

TBA

 

 

Week 16
12/10
43.

Review for Final Exam.  (Final is on Friday at 4:00PM).

NO CLASS

FINAL EXAM   4:00pm - 6:00pm