Include a brief summary of the course topics and requirements, the general format of the course, and the methods of evaluation. This is an introductory course on Object-Oriented Programming (OOP). It focuses on the fundamental OOP concepts and techniques along with suitable applications. Students will have ample opportunities to improve their development skills with the Java programming language through assignments and lab exercises. == Skills and knowledge students should have prior to beginning the course: == * Basic knowledge of a procedural programming language such as C and can write computer programs independently either through previous courses or working experience. * Basic understanding of simple data structures such as arrays, linked lists, and hash tables. == Course Topics: == * OOP introduction * Class design in terms of variables and methods * Information hiding and encapsulation * Inheritance, polymorphism, and overloading * Data structures such as Arrays, ArrayLists, and HashMaps * Exception handling and event-driven programming * Swings and graphical user interfaces (GUIs) * UML modeling and OO design patterns == Course Format: == * Lecture format: regular classes * Online materials location and format: all lecture notes and related materials are posted at moodle.socs.uoguelph.ca * Lab or tutorial format and expectations: five lab assignments along with tutorials == Method of evaluation: == * Number of Assignments: 3 or 4, depending on the TA supports. * Number of Graded Labs: 5 * Number of Quizzes: * Formal Midterm? yes, two midterms * Course project? no * Final Exam? yes * Group work? no * mostly programming assignments? yes * Written documents? yes, part of assignment submissions