CSIS 3701: Advanced Object-Oriented Programming

Instructor:

Dr. John R. Sullins

Office hours:    

Monday 9:00 – 10:00, 4:00 – 5:00

Wednesday 9:00 – 10:00, 4:00 – 5:00

Friday 11:00 – 12:00

Or by appointment

Office: 314 Meshel Hall

Phone: 941-1806

Email: john@cis.ysu.edu

Web site: http://cis.ysu.edu/~john/

   Check the web site regularly, as assignments and announcements will be posted here.


Objectives:

  1. Introduce the principles of object-oriented programming (classes, objects, messages, encapsulation, static properties, inheritance, polymorphism, exception handling, and object-oriented containers).
  2. Introduce core sections of the Java language related to object-oriented programming, as well as their relationship to the Java Swing GUI.
  3. Apply object-oriented programming to the design, development, and testing of very large programs, as part of a programming team.
  4. Exercise critical thinking skills in the context of object-oriented design and group programming.

Note that this course is not meant as a comprehensive introduction to all of Java -- the primary objective is to use Java to introduce advanced concepts in object-oriented programming, and large-scale program design and development.

General Education Requirements Credit:

This is a Critical Thinking Intensive course, in which you will develop the following skills:

o       Problem solving – designing classes to meet requirements and facilitate easy reuse of code.

o       Developing and evaluating evidence and arguments – justifying your design choices.

o       Exploring issues from multiple perspectives – reaching design consensus in group programming.

o        Identifying and questioning assumptions – decisions affecting correctness, efficiency, reusability.

o       Applying knowledge to new situations – applying OOP concepts to the programming projects.

                                          

Prerequisite:

CSIS 2617: Data Structures and Objects. It is assumed that you are very familiar with C/C++ syntax (since Java is heavily based on it) as well as concepts related to data structures/abstract data types, and that you can design and implement reasonably large programs involving those concepts. As an alternative, CSIS 2610 and CSIS 3726 may be accepted instead, with instructor permission.

Textbook:

Object-Oriented Software Development Using Java, Second Edition

Xiaoping Jia, Adison-Wesley, ISBN 0-201-73733-7.
 

Programming Assignments:

The programming assignments will cover major concepts of object-oriented programming, and their relationship to the Java language and GUI. The Java 2 SDK (software development kit) and the NetBeans IDE are available on the lab PCs, and you are strongly encouraged to install a copy on your own PC from the Java web site (instructions for this are on the course web page).

Each programming assignment will have a significant critical thinking content related to the design, worth 50% of the assignment grade.

Work on these assignments must be your own. See the policy sheet for more details.


Group Project:

The final group project will review principles object-oriented programming in Java, and will also serve as an introduction to design, implementation, and testing of a program in teams of two or three people. The program itself will not be overly large -- the focus will be more on the team design, implementation, and testing aspects rather than on coding. Free time will be provided during class for group design and discussion.

The project will also have a significant critical thinking content, related to the design of your overall system and individual classes, worth 50% of the project grade.


Grading
:

Programming assignments

40% 

4 or 5 assignments during the first 11 weeks 

Exam 1

13.3%

Date TBA

Exam 2

13.3%

Date TBA

Exam 3

13.3%

Date TBA

Group Project

20%

Due during final exam period

      no final exam

 

 

            Last day to withdraw with a "W": Thursday, October 30.

 

Course Outline:  

WEEK

TOPICS

CHAPTERS

8/25

Introduction to object-oriented design, Java, and the NetBeans IDE

1, 3

9/1

Java language structure, Programming language characteristics
(no class Monday)

4.1 – 4.3

9/8

Introduction to Java classes

4.4 – 4.5

9/15

Useful built-in Java classes: Strings, GUI, and type wrappers

4.7, 8.3.1

9/22

Object-oriented design and specification, Universal Modeling Language

2, 6.1 – 6.3

9/29

Unit testing of classes; GUI layouts

6.4, 8.3.3

10/6

Exception handling; Robust design and user-friendliness

4.6, 8.3.5

10/13

Inheritance and Polymorphism

5.1 – 5.2

10/20

The Java object hierarchy; Applets; Interfaces

5.3 – 5.5

10/27

Collection classes; Java GUI event handling

8.2, 8.3.4

11/3

Design patterns; Large-scale design

7

11/10

Team meetings for project design

 

11/17

More design patterns; Large-scale testing

10

11/24

Streams and file manipulation  (no class Friday)

8.4

12/1

Database manipulation in Java

12.3

12/8

Group Project due