|
Tentative Schedule |
The schedule below is approximate, tentative, and subject to change!
- Midterm #1: Thursday 6/28
- Midterm #2: Tuesday 7/24
- Final Exam: Friday, 8/10
| 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 |
