Syllabus

Java Programming

(Preliminary Draft)

DIST 1090
Spring 2004 (04-2)
CRN: 29573
Monday & Wednesday 3:00-4:15 Room 411
  Michael B. Spring
Department of Information Science and Telecommunications
University of Pittsburgh
  727 SIS Building
Personal Email: spring@imap.pitt.edu
Class Email: mbsclass@mail.sis.pitt.edu
Office Hours:  Monday-Friday 8:00-6:00
Phone: 412-624-9429

Important Note

This course is intended for advanced majors in information science.  In some ways, the course might be viewed as a programming language course – on Java.  From another perspective, the course will look at issues of Object oriented programming more generally.  Finally, the course might be viewed as a course on gaming and interactive system design, i.e. games are one specialized form of interactive system.  Because the course will teach Java in the context of complex system development, students who are considering the course need to know that they will be expected to commit serious time to doing some heavy duty programming.

Prerequisites

You should have finished IS 0020 and be a good programmer.  It would be desirable to have taken at least two of the advanced courses in the BSIS curriculum: IS 1024 (Information System Analysis and Design), IS 1044 (Human Factors) would be optimal. IS 1014 (Computer Graphics), IS 1022 (Database Management) are also good foundations. Knowing more than one language will be a real boon.  You should like programming and like to work. You are required to meet with either the Instructor or the Director of the undergraduate program to obtain permission to register for this course.  You should read this syllabus before the meeting..

Disability Accommodation

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and the Office of Disability Resources and Services (DRS), 216 William Pitt Union, phone (412) 648-7890/(412) 383-7355 (TTY) as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.

Introduction

This course is focused on object oriented programming in Java.  You will learn Java, but the context will be object oriented programming and programs that are substantive.  While the fundamentals of Java can be learned in a few days, it takes years to become a good Java programmer.  This is because Java’s power comes from the ability to reuse code and there are already hundreds of reusable components that a “good” Java programmer should be aware of.  Consider for example that a simple JTextBox has about two dozen methods and can be learned in a few minutes.  On the other hand, a JEditorPane has several related classes that must be learned and literally thousands of related methods which require months to come to grips with. (There are hundreds of Java packages, each of which could be the subject of an entire course.  You will choose those of interest to you beyond those covered in class.)

The good news is that if you come to grips with the Java in an intelligent way – understanding its structure and capabilities, you can extend your knowledge of Java as needed and on your own.  This will be the approach in this course.  Early on, you will be directed by the instructor and learning will be closely guided.  As the course moves on, you will be free to choose what you will focus on and learn and the classes will focus less on the language and more on concepts and ideas for problem solving and system design.

Overview

The course will begin with the fundamentals of object-oriented programming and the implementation of OOP as it applies these to Java.  The course will move as far into Java as possible focusing on Java as a cross platform development language.  To this end, the course will focus on standalone Java applications.  While web components – applets, servlets, and enterprise java beans will be touched upon, they will not be the focus of this course.  The primary foci will be as follows:

The mechanics of programming in Java

Objected oriented thinking in programming

Language basics

Graphical user interfaces (Swing),

File I/O and database connectivity (JDBC), and

Sockets and client server implementations

Course Philosophy

The instructor normally teaches graduate courses where students share the responsibility for creating a learning experience.  As an advanced undergraduate course, this course is much like a graduate course.  Specifically, this means students are expected to do two things:

Come to class prepared:  Some students hate to be lectured to from a book, others love it. Some students hate interactive classes, other students love them. This course will be taught in an interactive fashion and will cover ideas and concepts based upon but beyond those covered in the book.  The instructor will ask questions about what you have read in preparation for the class.  It is my style to challenge you in class to think about the issues and to question you about your grasp of the material.  It is the student’s responsibility to read and learn the material in the textbooks. It is my job to clarify what the textbooks fail to make clear and to go beyond what is said in the textbooks to new or more difficult ideas. The lectures will begin with the assumption that students have read and understood what is in the books. If you have not read the assignments prior to class, the lectures will be very difficult to follow. It is important that you come to class prepared to discuss and move beyond what was in the books and readings.

Be engaged in the subject: While much can be learned by rote memorization, things learned by memorization tend not to be the skills that one generalizes and applies in later life. A different kind of learning takes place when students engage in the process actively. This course is based upon students being actively engaged—in class, in the assignments, in the reading etc.   The goal is to learn by producing products that work. In all cases the products will be both toys and real. That is to say, they will provide real functionality, but at a level that is attainable within the course of a term.

At a personal level, the instructor is not interested in excuses.  I am interested in results and performance.  As I see it, adults – and you are adults – make choices.  Late assignments, lack of attention to details, missing class, failure to do the necessary reading are your choices.  You choose to perform or you choose not to perform.  You, and I, plan for social events, family responsibilities, and other activities.  When my children were born, I missed no classes and came prepared.  When I need to travel overseas, I prepare and record my lectures in advance.

As I see it, if you do not master the assignments in the course in 10 hours, you should try 20.  As a full time student, your job is learning.  I anticipate that you will spend 10-15 hours per week on this course – three hours per week in class and about 9 hours per week on reading and homework.  (For every hour in class, you will spend a minimum of three hours preparing and following up.  Thus, every week you will be spending a minimum of twelve hours working on this course.)  You will be awake 90 hours or more per week.  I don’t care how you spend 75 of them, but I expect 15 will be devoted to the course.


Course Goals

The goals of the course are to:

Course Materials

There is only one required book for the course.

Ivor Horton, Beginning Java 2 Wrox; (March 2002) ISBN: 0764543652

However, students are strongly encouraged to purchase the following for reference.

Brett Spell, Professional Java Programming Wrox(2003). ASIN: 186100382X

Beyond these book, you will find that the online resources to answer all your questions.

Course Requirements and Grading:

Grading for this course will be out of 100 points.

There will be seven programming assignments in the course. The assignments will account for 42% of the grade.  They will include:

A first java program with I/O(3pts)

A java program with multiple classes (4 pts)

A simple GUI based Java program(5pts)

A GUI based java program implementing MVC(Model View Controller) (6pts)

A simple one person game in Java(7pts)

A multi-person game in Java(8pts)

A simple network based game in Java(9pts)

There will be a midterm exam that will account for 20% of the grade.

A final programming project that will account for 30% of the grade.

The instructor will assign 8% of the grade based on his estimation of student effort and involvement in the class.

Each programming assignment will be submitted electronically.  The assignment will not be graded unless it is complete.  A complete assignment will consist of:

an email which contains:

a synopsis of your program

complete instructions for anything that needs to be done to run the program.

An attached zip file that contains:

Any data files that are needed

Generated javadoc files

All the source files – which must be formally documented using the javadoc

The compiled class files

Grading of the projects will be bases on written report, as well as the software design and

Implementation.  The final project will contain all the components listed above.

Programming assignments will be due before 3:00am of the day of the class they are assigned.  One point will be deducted for each day a programming assignment is late. 


Preliminary Lecture Outline (Draft 10/28/2003)

The outline presented below is very tentative and still needs to be coordinated with the book selected for this course and the assignments proposed.

Lecture

Topics

Assignments

Week 1
Lecture A

Course Introduction

History and basics of Java

The JDK, JRE, and IDE

Tools: javac, java, javap, javadoc

Java API Documentation

Syllabus

JDK Installation

Documentation

Week 1
Lecture B:

Java memory model

Introduction to Classes and objects

Ch. 1: Introducing Java

Ch. 2: Programs, Data, Variables, and Calculation

Week 2
Lecture A

Language Basics

Data types

Control Structures

Logic

Ch. 3: Loops and Logic

Ch. 4:  Arrays and Strings121

Week 2
Lecture B:

Classes: fields, methods, and constructors

Objects and Object References ("this", "final", abstract, static fields and methods) Parameter passing in Java method call

Declaration, creation, initialization, use

Access Control: private, default, public

static field and static method

in-line initialization

Assignment 1

Ch. 5: Defining Classes

Week 3
Lecture A

extending classes: subclass, superclass

inheritance: fields and methods

constructor chain... super(...)

inheritance hierarchy

Object reference promotion

Ch. 6: Extending Classes and Inheritance

Week 3
Lecture B:

Packages and JVM run-time environment

CLASSPATH for Compiler and JVM

import statement

Assignment 2

Week 4
Lecture A

Exception and Exception handling

Throwing an exception: throw

Method/Caller contract: throws

Exception handling: try-catch-finally

Exception objects

Week 4
Lecture B:

GUI and IDE

Components and containers

Sandboxes

Layout management

Events

Ch. 16:  Creating Windows

Week 5
Lecture A

Exception class extension

throws - declaration with Exception types

try-catch-blocks

Assignment 3

Ch. 7:  Exceptions

Week 5
Lecture B:

Extending class for inheritance

Overriding methods

Dynamic method binding

Polymorphism

final method and final class

Week 6
Lecture A

Introduction to Swing (and AWT)

Component and Container and Layout

Jframes and JPanel: organizing components

Jbuttons, Jlists, JtextField, etc.

Layouts: FlowLayout, GridLayout, BorderLayout Event handling model in swing: delegation

Ch. 17: Handling Events

Ch. 18: Drawing in a Window

Ch. 19: Extending the GUI

Week 6
Lecture B:

Inner Class and local inner class

Event class, Listener interface

Listener object and Event Handler

Listener Registration (addListner)

Week 7
Lecture A

Access control: private, default, protected, public.

Abstract classes and methods

Interfaces: class vs type

Defining an interface

Implementing an interface in a class

Ass 4

Ch. 12: Serializing Objects

Ch. 13: Collection Classes

Week 7
Lecture B:

Interface extending interface

Implementing multiple interfaces

Issues of name conflicts in implementing interfaces

Week 8
Lecture A

Review for Midterm

Ass 5

Week 8
Lecture B:

Midterm

Week 9
Lecture A

The delegation model for event handling

Source, Event, and Listener objects, Handler method.

Inner Class

Ass6

Ch. 8: Understanding Streams

Ch. 9: Accessing Files and Directories

Ch. 10: Writing Files

Ch. 11: Reading Files

Week 9
Lecture B:

Inner class: member inner class and local inner class

Listener interfaces and Adapter class

Anonymous inner class

Week 10
Lecture A

Games and game theory

Information theory

Types of games

Game basics

Ass 7

Week 10
Lecture B:

Game Design

Rules

Roles

Controls

Week 11
Lecture A:

  Threads

Control of Threads

Ch. 15: Threads

Week 11
Lecture B

Open

Week 12
Lecture A

ODBC and JDBC – setting up Data Source Name

Setting up table in Microsoft Access

Using JDBC: Connection, Statement, ResultSet

Ch. 20: Filing and Printing Documents

Ch. 21: Java and XML

Ch. 22: Creating and Modifying XML Documents

Week 12
Lecture B:

JDBC Connection and Executing SQL

Connection and executing SQL Statement, using Result Set.

Week13
Lecture A

Client Server Basics

Client Server Algorithms

Ch. 14: A Collection of Useful Classes

Week 13
Lecture B:

Protocols

Final