CMSC 131 -- Object Oriented Programming I

Summer 2007

Fear the Turtle!

Tentative Schedule

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

Exam Dates:
  Monday Wednesday Friday
Week 1
6/4
intro to course; computer systems; hardware; operating system; programming languages using an IDE; intro to course tools; portability; intro to Object Oriented lingo; 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
Week 2
6/11
if-statements; blocks; logical operators; nesting of statements; Java identifier names; Camel case; choosing proper variable names; named constants; while loops do-while loops; nested loops; literals; escape sequences; short-circuiting; increment/decrement operators; various assignment operators; rules of precedence; 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
Week 3
6/18
assignments with reference variables; aliasing; equals method; example of Object Oriented class, parameters; return values; constructors; setters/getters; writing an equals method toString; 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 memory diagrams for passing parameters; Java libraries; intro to packages; fully qualifed names; import; Math class; String class in detail; encapsulation and visibility; public vs. private
Week 4
6/25
API; methods that modify parameters; copy constructors; proper commenting; examples of good programming style;  instance methods calling other instance methods; summary of accessing class members

Java call stack; initialization of variables; setting "default" values

REVIEW FOR MIDTERM #1

Midterm #1 is on Thursday, 6/28

method overloading; prototype vs. signature; "this"; software testing; JUnit; assertTrue; assertEquals; connection between testing and debugging; typical uses of constructors
Week 5
7/2
use of copy constructor to avoid aliasing; mutability; rounding errors in floating point calculations; Example of a complete Java class, including test cases

July 4th Holiday -- NO CLASS!

switch statements; break; continue; arrays of primitives
Week 6
7/9
arrays of references; privacy leaks; three ways to copy arrays: reference/shallow/deep Java interfaces; polymorphism; wrappers; more interface examples algorithms; intro to complexity; design of large projects
Week 7
7/16
command line Java; passing arguments to main method; proper use of commenting; internal vs. external comments; Javadoc two-dimensional arrays (ragged and rectangular); package visibility overview of Java packages; runtime errors; exception handling; throwing exceptions; catching exceptions; try/catch
Week 8
7/23
more on exception handling; finally block

REVIEW FOR MIDTERM #2

Midterm #2 is Tuesday, 7/24

Java generics (brief intro); overview of collectionsStack class; ArrayList class; Iterator interface; StringBuffer class; for-each loops overview of inheritance; superclasses and subclasses; inheritance examples; super in constructors; memory diagrams with inheritance; method overriding; using super with overridden methods; variable shadowing
Week 9
7/30

connection between super and this; protected visibility; early vs. late binding; using final to disable overriding; Object class; polymorphic arrays; inheritance example; abstract methods and classes; instanceOf; getClass

explicit type casting; interfaces vs. abstract classes; proper equals method (in view of inheritance); inheritance vs. association vs. composition; overloading vs. overriding; further uses of interfaces

multiple inheritance (and Java's lack thereof); interface hierarchies; binary and linear search; running times:  best/worst/average; graphs for runtimes; theta notation; examples of various complexity "categories;" big-O notation

Week 10
8/6
more on complexity; Atari vs. Cray supercomputer example; practical limitations of complexity analysis; complexity of bubble sort; intro to recursion complexity of merge sort; theorem on run-times for comparison-based sorting; overview of linear sorting

REVIEW FOR FINAL EXAM

Final Exam

 

Web Accessibility