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..
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.
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.
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
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.
The goals of the course are to:
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.
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.
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 |
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 |
Java memory model Introduction to Classes and objects |
Ch. 1: Introducing Java Ch. 2: Programs, Data, Variables, and Calculation |
Week 2 |
Language Basics Data types Control Structures Logic |
Ch. 3: Loops and Logic Ch. 4: Arrays and Strings121 |
Week 2 |
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 |
extending classes: subclass, superclass inheritance: fields and methods constructor chain... super(...) inheritance hierarchy Object reference promotion |
Ch. 6: Extending Classes and Inheritance |
Week 3 |
Packages and JVM run-time environment CLASSPATH for Compiler and JVM import statement |
Assignment 2 |
Week 4 |
Exception and Exception handling Throwing an exception: throw Method/Caller contract: throws Exception handling: try-catch-finally Exception objects |
|
Week 4 |
GUI and IDE Components and containers Sandboxes Layout management Events |
Ch. 16: Creating Windows |
Week 5 |
Exception class extension throws - declaration with Exception types try-catch-blocks |
Assignment 3 Ch. 7: Exceptions |
Week 5 |
Extending class for inheritance Overriding methods Dynamic method binding Polymorphism final method and final class |
|
Week 6 |
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 |
Inner Class and local inner class Event class, Listener interface Listener object and Event Handler Listener Registration (addListner) |
|
Week 7 |
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 |
Interface extending interface Implementing multiple interfaces Issues of name conflicts in implementing interfaces |
|
Week 8 |
Review for Midterm |
Ass 5 |
Week 8 |
Midterm |
|
Week 9 |
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 |
Inner class: member inner class and local inner class Listener interfaces and Adapter class Anonymous inner class |
|
Week 10 |
Games and game theory Information theory Types of games Game basics |
Ass 7 |
Week 10 |
Game Design Rules Roles Controls |
|
Week 11 |
Threads Control of Threads |
Ch. 15: Threads |
Week 11 |
Open |
|
Week 12 |
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 |
JDBC Connection and Executing SQL Connection and executing SQL Statement, using Result Set. |
|
Week13 |
Client Server Basics Client Server Algorithms |
Ch. 14: A Collection of Useful Classes |
Week 13 |
Protocols |
Final |