Administrivia
- Course web page: http://www.andrew.cmu.edu/course/15-121
- Course discussion tool: Email Bboard
- Handin submission system - FTP to andrew.cmu.edu
- Online grades
Workload
- 8 quizzes
- 7 programming labs
- 2 midterm exams
- 1 final exam
Course grade curve
How to succeed in the class?
- Go to lectures and recitations
- Read my online notes in advanced
- Study online code examples
- Go to the office hours
- Do not procrastinate
- Practice, practice and practice
Language Component
- Encapsulation, Polymorphism, Inheritance, Interfaces
- Abstract classes, Inner classes
- Generics - parametric classes
Data Structures
- Strings
- Arrays
- Linked Lists
- Stacks, Queues
- Hash tables
- Binary trees
- Heaps
- Game trees
Programming is Writing
- You cannot design unless you can transcribe your thoughts on paper
- If you cannot say it in English, you certainly cannot say it Java.
- The OO process has more to do with linguistic modeling that with traditional programming.
Testing you code
by Joshua Bloch, Google Inc.
http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.htmlThe general lesson that I take away from this bug is humility: It is hard to write even the smallest piece of code correctly, and our whole world runs on big, complex pieces of code.We programmers need all the help we can get, and we should never assume otherwise. Careful design is great. Testing is great. Formal methods are great. Code reviews are great. Static analysis is great. But none of these things alone are sufficient to eliminate bugs: They will always be with us. A bug can exist for half a century despite our best efforts to exterminate it. We must program carefully, defensively, and remain ever vigilant.
Java Puzzlers
- Five Java Puzzles