General Information
Instructor
Professor: Brad Vander Zanden
- Office: Claxton 354
- Office Hours: By appointment
- Email: bvz@eecs.utk.edu
TAs
Kristy Van Hornweder
- Office: CL122C
- Email: kvanhorn@eecs.utk.edu
- Office Hours: TWR 2:00-4:00
Bo Yu
- Office: CL212
- Email: byu8@eecs.utk.edu
- Office Hours: MF 2:00-4:00
Jingyuan Wang
- Office: CL212
- Email: jingyuan@utk.edu
- Office Hours: By Appointment
Course Prerequisites
The course prerequisites are CS302, CS360, and some knowledge of object
oriented programming. The course will cover some aspects of the
Java language but for the most part you will be expected to pick
up Java on your own from a reference text. You are expected to
have some previous experience with object oriented programming,
either with C++, Java, or some other object oriented language.
In particular, I will assume that you understand classes, inheritance,
methods, constructors and destructors, and virtual functions. You are
free to use your own version of Java for testing your programs but
ultimately your program must run on the Java virtual machine installed
on the hydra and cetus machines, which is Java 1.6.0.
Textbook and Reference Material
- Textbook: Dan Olsen-Principles of Interactive Systems
- Java API:
I tend to answer all my questions by going to this web-site rather than
reading a textbook.
- Java Swing Tutorial
Resources for the Java Language
- Sun Java Tutorial:
Before you run out and spend a lot of money on a Java book, check out this
site. It's free and is constantly updated as new versions of Java are
released. If you buy a book there's a good chance that it will become
obsolete in a couple years.
- If you really feel that you must have a desk copy of a Java book,
my favorites are the Herbert Schildt books. JAVA: A Beginner's Guide
is an excellent introduction to Java. He keeps updating the book so try
to get the latest edition.
Java: The Complete Reference is an excellent
Java resource for more experienced Java programmers. Again try to get
the latest edition.
- My CS365 notes on Java:
Grading
- Project: 30%
- Homework: 20%
- Midterm (March 4): 25%
- Final: 25%
Homework and Project
There will be a number of homework assignments throughout the semester
to give you familiarity with the algorithms and languages presented in class.
There will also be a project of your choice that you will implement
throughout the semester. Undergraduate students will be allowed to work
in teams of up to 3 people and graduate students will be allowed to work
in teams of 2 people. More information about the project will be released
as the semester progresses.
Topics To Be Covered
The course will be a survey of tools and techniques
for constructing highly interactive, graphical user interfaces. The
course is oriented toward programming rather than towards usability
or graphic design. However, some usability and graphic design topics
will be discussed, especially early in the course. The course is
also oriented toward the creation of applications involving custom,
programmer defined objects and behaviors.
Emphasis will be on five major areas:
- Object Oriented Programming: Throughout the course we will
discuss design idioms, frequently called design patterns, for creating
graphical interfaces using object oriented programming. Design patterns
are general solutions to recurring design problems that arise in programming
applications.
- Display Management: When the user manipulates objects in a
user interface,
both the interface and the application typically provide various types
of pictorial feedback. This feedback may "damage" various areas of the
screen, and may require that the graphical objects that inhabit these
areas be redrawn. We will discuss efficient algorithms for incrementally
detecting and updating damaged areas of the display.
- Event Handling: GUIs have a user-centered model of computing
rather than a program-centered model. You are used to writing programs that
have a single thread of control and that determine when they receive input
from the user and when they provide output to the user. In contrast, GUIs
can have multiple threads of control and the user decides when to provide
input. When the user provides input, it is typically via an "event" that
then triggers an action procedure. This action procedure becomes the current
thread of control. It is imperative that the action procedure provide output
as soon as possible because users become impatient if they either do not see
an immediate response to their action. We will discuss event programming
and how events are handled in Java.
We will discuss models and algorithms for handling input, especially
the concept of interaction techniques (combinations of graphics
and behaviors that are reused in many interfaces).
- Animation: Animation is frequently used to provide an illusion
of smooth movement in an interface and we will discuss how animation is
achieved using timers and threads.
- Multi-User Applications: Many user interfaces support
user collaboration across the internet. We will describe general
principles for implementing multi-user applications.