CMSC 131 -- Object Oriented Programming I

Spring 2008

Fear the Turtle!

Tentative Schedule

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

Exam Dates:
  Monday Wednesday Friday
Week 1
1/28

Intro to course; using an IDE; introduction to course tools

intro to Eclipse, CVS, and submitting projects

intro to computer systems; hardware; operating system; programming languages

Week 2
2/4

portability; intro to Object Oriented way of thinking; primitive Java examples; text output; variables; statements; main method; assignment operator; primitive types;
 

expressions; operators; programming errors and debugging; strings and concatenation; arithmetic operators; integer truncation;
comparison operators; input with Scanner; equals with Strings

if-statements; blocks
logical operators; nesting of statements;
 

Week 3
2/11

more about if-statements; Java identifier names; Camel case; choosing proper variable names; named constants;

while loops; do-while loops; for-loops; nested loops

literals; escape sequences; short-circuiting; increment/decrement operators; various assignment operators; rules of precedence

Week 4
2/18

suggestions for readable code; type casting (of primitives); overview of program design; pseudocode; overview of testing/debugging;
Objects in Java; state/behaviors

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

assignments with reference variables; aliasing; equals method

Week 5
2/25

example of Object Oriented class, including: parameters, return values; constructors; writing an equals method; toString

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;

setting default values; memory diagrams for passing parameters; begin exception handling; throwing exceptions; catching exceptions; try/catch

 

Week 6
3/3

Review for Midterm #1

...more about exception handling; finally block; Java libraries; intro to packages;
fully qualified names; import; Math class;
 

Midterm #1 (in Lab)

String class in detail; encapsulation and visibility; public vs. private; API

Week 7
3/10

software testing; JUnit; assertTrue; assertEquals; methods that modify parameters; copy constructors

proper commenting; examples of good programming style; instance methods calling other instance methods;

Fun Day (Topics to be announced.)

 

 

Week 8
3/17

Spring Break

Spring Break

Spring Break

Week 9
3/24

summary of accessing class members; Java call stack; initialization of variables; setting "default" values

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

Example of a complete Java class, including test cases

Week 10
3/31

connection between testing and debugging;
using the Eclipse Debugger

method overloading; prototype vs. signature;
"this"

ternary ?: operator; switch statements; break; continue

Week 11
4/7

arrays of primitives

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

Java interfaces; polymorphism; wrappers

Week 12
4/14

Review for Midterm #2

 

More interface examples; algorithms

 

Midterm #2 (in Lab)

intro to complexity; design of large projects

 

Week 13
4/21

command line Java; passing arguments to main method; proper use of commenting; internal vs. external comments; Javadoc

two-dimensional arrays (ragged and rectangular)

polymorphic arrays; package visibility; overview of Java packages...

Week 14
4/28

continue overview of Java packages;  Java generics (brief intro); overview of collections; Stack class

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

more about for-each loops; inheritance examples; super in constructors; memory diagrams with inheritance

Week 15
5/5

method overriding; using super with overridden methods; variable shadowing;
connection between super and this; early vs. late binding; Object class; polymorphic arrays; inheritance example

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)
[Other topics TBA.]

Week 16
5/12

Review for final exam.

 

Final Exam

 

Web Accessibility