CS242: Advanced Programming Concepts in JAVA

Syllabus
Fall 2007

Instructor:

     Prof. Janice T. Searleman
     375 Science Center, 268-2377,
     email: jets@clarkson.edu

Course Objectives:

  1. Students will learn advanced programming concepts and modern programming techniques. These will include object-oriented design and design patterns, graphical user interfaces (GUIs), event models, exception handling, multithreading, network programming and the client/server paradigm.

  2. Students will learn the Java programming language and core APIs, the Java Virtual Machine (JVM), and Java Foundation Classes (JFC/Swing).

Required Textbooks:

On-line References:

Java SE Development Kit 6 (JDK 6u1) Download page for Java SDK (includes the run-time environment JRE & useful java tools)
NetBeans IDE 5.5.1 IDE for Java
Eclipse An Open Source IDE for Java
Apache Ant An excellent Java-based build tool from Apache
Java Tutorials An excellent collection of tutorials from SUN
Java SE 6 documentation Contains link to download documentation (scroll down the page)

Additional Course Information:

All announcements, schedule updates, handouts, etc., will be posted on the CS242 homepage (http://www.clarkson.edu/~jets/cs242/fa05).

Grading Policy: to be determined

You are responsible for all material discussed in class and in the reading assignments. Attendance is particularly important, and class participation is encouraged. The written homework assignments are expected to be individual efforts; however, you may work on the programming projects in teams when the assignment clearly indicates this option. You are encouraged to learn from each other and to help each other understand the concepts, but be ethical -- do not copy or edit a program which isn't yours or allow another student to write or debug your program for you.

All assignments are due at the beginning of class on the given due date. Late homework will be accepted up to the day on which the homework is graded and returned, but there will be a reduction in the grade proportional to the number of days late. You are strongly urged to see the instructor before any problems arise.

Course Outcomes:

Course Content:

Object-Oriented Programming: abstraction, interface vs. implementation, encapsulation, polymorphism
Design Patterns, UML, Program Design: model-view-controller architecture (MVC), Client-Server (Servlets, JSP), testing strategies (unit testing).
Java Basics: Java core APIs, primitive types, Array, String, Collections, Packages and access modifiers, javadoc, Java Virtual Machine (JVM), Java Software Development Kit (JDK), classpath, Java Archives (JAR).
Abstract Classes, Interfaces and Inner Classes: cloning, anonymous inner classes
Event Handling: event models, event listeners and sources, registering events, adapter classes
Exception Handling: try/catch, propagating vs. handling exceptions
Java Foundation Classes (JFC): Swing, GUI design, Components, Containers
Input/Output: I/O streams, files, serialization, tokenizer, compression
Multithreading: synchronization, scheduling & priorities
Networking: client/server, sockets, RMI