Comp 212: Intermediate Programming
We do not use any text books in this class.
Comp 210 programming concepts and design recipes taught in Comp 210 will serve as part of the foundation of object-oriented programming (OOP).
This course provides the transition from the functional paradigm (Comp 210) to the object-oriented paradigm. It introduces OOP using Java as the implementation language. It emphasizes proper formulation and abstraction of the problem domain in the programming process in order to build programs that are robust, flexible, and extensible. It teaches how design patterns help formulate and implement abstractions in effective and elegant ways.
The course covers data structures and algorithms to manipulate them that are essential to programming, such as lists, stacks, queues, trees, tables. These structures are implemented as systems of cooperating objects using appropriate design patterns. The course will also cover both stream I/O and event-driven I/O. Since the textbooks do not systematically present these topics, additional lecture notes will be provided. As such, class and laboratory attendance is mandatory!
Programming assignments are designed to help understand how the above concepts are implemented and used in various situations. These assignments constitute as an integral part of the course. They can be very time-consuming and require that you start working on them early and budget your time wisely.
Laboratory sessions serve to complement the class lectures and provide a highly interactive environment where students can work in small groups to explore and discuss new topics, topics presented in the lectures, and problems that may arise from the assignments. Attending and actively participate in the lab discussions will help you succeed in the course.
Upon successful completion of the course, the students should know:
There are basically 15 weeks of classes. We intend to present the following topics in the following order. The time allocated to each topic is only approximate. We may also change the order of presentation of the topics should we find it necessary to do so.
Weeks 1-4: Transition from functional to object-oriented programming: primitive types, String type, classes, fields, methods, constructors, UML diagrams, abstract classes, interfaces, inheritance, polymorphism, immutable linear recursive structure and the composite pattern, static fields, static methods, the singleton pattern, the visitor pattern, tail recursion, exception handling, framework, abstract factory, component software.
Weeks 5-6 : Mutable linear recursive structure and the state pattern; Graphical User Interface and event-driven programming, strategy pattern, command pattern, the Model-View-Controller (MVC) paradigm; inner classes.
Weeks 7-12: Object-oriented formulations and implementations of common data structures such as stacks, queues, binary trees, binary search trees, self-balancing trees; adapter pattern, decorator pattern, iterator pattern; priority queues as restricted access containers.
Weeks 13-15: Game trees, min-max principle, alpha-beta pruning; Arrays, searching, hashing, Meritt's sort taxonomy and the template pattern, simple sorting algorithms, quick sort, merge sort, heap sort, complexity analysis,
The above schedule should be viewed as tentative only. We will vary the pace of the class and change the presentation order of the topics according to how fast the class is absorbing the materials as a whole. If we work hard together, we will cover everything. Please feel free to fit to give us feedback on how the class is coming along. Your input is very important to the success of this class. We want you to all succeed and we need your help.
The course grade will be based on:
Assignments due dates and rules will be clearly stated at the time they are given. No make-up exams will be given unless there is a legitimate excuse such as proof of medical emergency.
We reserve the right to make slight modifications of the above weighting.
Any student with a documented disability needing academic
adjustments or accommodations is requested to speak with us during the first
two weeks of class. All discussions will remain confidential. Students with
disabilities should also contact Disability Support Services in the Ley