This course is intended as a second course in Java programming. Hands-on learning is emphasized, with assignments that include debugging clinics, partially completed programs and full programming exercises. Specific topic coverage includes: Inheritance, Swing Components, Layout Managers and Events, Exception Handling, File Input and Output, Serialization; Collections; Multithreading; JavaBeans; Using Relational Databases and Building Web Applications.