Instructor:
Dr. John R. Sullins
Office hours:
Monday
Wednesday
Friday
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:
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 |
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
|
|