COMP 212 - 01 – INTERMEDIATE PROGRAMMING SYLLABUS

RICE UNIVERSITY - FALL 2000

INSTRUCTOR: Dr. Dung X. Nguyen (pronounced "Zung Gwen", it’s Vietnamese!)

OFFICE and PHONE: DUNCAN HALL (DH) 3097, 713-348-3835

OFFICE HOURS: WF 12 PM – 1 PM + by appointments, and whenever I am around

E-MAIL: dxnguyen@cs.rice.edu

TEXT BOOKS:

1. Suggested: The Java Programming Language, 3nd edition, by Arnold and Gosling, Addison-Wesley, 2000. James Gosling is the creator of Java. This book does not cover all the topics of the course and will be used only as a reference for Java syntax and semantics.

2. Suggested: Design Patterns Elements Of Reusable Object-Oriented Software, by Gamma, Helm, Johnsson, and Vlissides, Addison-Wesley, 1995. This is the bible of the pattern community. It predates Java. The authors are affectionately referred to as the Gang of Four (GoF). All examples are written in C++ and/or Smalltalk. It is hard to read if you are not familiar with these two languages. The "pattern language" used in this book also requires a lot of getting used to. I have learned so much from this book, and I am still reading it and learning from it. There is a version on CD-ROM which is cheaper (and perhaps, more versatile). I strongly recommend it.

COURSE PREREQUISITE:

Comp 210 – programming concepts and design recipes taught in Comp 210 will serve as part of the foundation of object-oriented programming (OOP).

COURSE DESCRIPTION

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 textbook does not systematically present these topics, additional lecture notes will be provided.

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.

COURSE OBJECTIVES

Upon successful completion of the course, the students should know:

COURSE SCHEDULE

There are basically 14 weeks of classes. I intend to present the following topics in the following order. The time allocated to each topic is only approximate.  I may also change the order of presentation of the topics should I find it necessary to do so.

Weeks 1-3: 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, exception handling.

Weeks 4-5 : Graphical User Interface and Event-driven programming, strategy pattern, command pattern, the Model-View-Controller (MVC) paradigm, mutable linear recursive structure and the state pattern.

Weeks 6-12:  Arrays, searching, sorting and the template pattern, simple sorting algorithms, quick sort, merge sort, heap sort; common data structures, stacks, queues, binary trees, binary search trees, self-balancing trees, adapter pattern, decorator pattern, iterator pattern, priority queues, hashing, complexity analysis.

Weeks13-14: Game trees, minimax principle.

The above schedule should be viewed as tentative only. There are a lot of materials to cover, and I may not be able to cover them all, as stated in the schedule. I 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 me feedback on how the class is coming along. I want you to all succeed and I need your help.

GRADING

The course grade will be based on the programming assignments, homework assignments, class participation and exams. Pop quizzes will be given in the lab from time to time and counted as class works. 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.

Programming assigments: 40%

3 exams: 45% (15% each)

Homework and class work: 15%

I reserve the right to make slight modification of the above weighting.

ADA:

Any student with a documented disability needing academic adjustments or accommodations is requested to speak with me during the first two weeks of class. All discussions will remain confidential. Students with disabilities should also contact Disability Support Services in the Ley Student Center.