CS 399 Spst: Advanced Java Programming

Credit Hours: 4
Course Coordinator: Cynthia Brown
Course Description: Examines aspects of the Java(tm) programming language including object-oriented programming, the Java class libraries, and writing applications with a graphical user interface (GUI). Additional topics may include the Extensible Markup Language (XML), networking, concurrent programming, the Unified Modeling Language (UML), object-oriented design patterns, remote method invocation (RMI), security, Java Database Connectivity (JDBC), and Java 2 Enterprise Edition (J2EE). Each student will be responsible for five programming projects, in-class quizzes, and a final exam. Students are expected to have a solid programming background in a language such as C, C++, Pascal, or Fortran and a strong working knowledge of the UNIX development environment.
Prerequisites: Fundamental concepts of Object-Oriented Programming, basic knowledge of data structures (sets, maps, etc.), notion of concurrent programming, basic concepts of networking components (sockets, servers, etc.), familiarity with GUI programming components (buttons, menus, etc.)
Goals: Provide a Provide a solid background for Java application development. Reinforce object-oriented programming concepts. Build a non-trivial, functional application. Expose students to an application programming interface that they did not design or implement.

Upon the successful completion of this course students will be able to:

  1. Compile and run a Java program consisting of code developed by both the student and someone else.
  2. Demonstrate a working knowledge and solid understanding of the fundamental Java programming APIs.
  3. Apply software engineering and software development techniques in an individual and a group environment.
  4. Experiment with developing Graphical User Interfaces.
Example Textbooks: Thinking In Java by Bruce Eckel.
References: The Java Tutorial (http://java.sun.com/docs/books/tutorial/index.html)
Major Topics:
  • The Java Programming Language
  • Object-Oriented Programming
  • The Java API (java.lang, java.io, java.util)
  • Using XML with Java (SAX and DOM APIs)
  • Concurrent Programming
  • Networking
  • GUI development with the Abstract Windowing Toolkit (AWT) and Swing
  • Introduction to Java security mechanisms
Laboratory Exercises:
  • Compiling a simple program (1 week)
  • Writing a simple class (1 week)
  • Writing several domain classes (1 week)
  • Reading and writing application data from a file (1 week)
  • Sorting and formatting application data (2 weeks)
  • Reading and writing application data as XML (2 weeks)
  • Developing a client/server application or a GUI (2 weeks

CAC Category Credits Core Advanced
Data Structures .2
Algorithms .2
Software Design .3 .3
Computer Architecture
Programming Languages .2 .2

Oral and Written Communications: Every student is required to submit at least 5 written reports (not including exams, tests, quizzes, or commented programs) of typically 1 pages and to make 0 or 1 oral presentations of typically 7 minutes duration.
Social and Ethical Issues: None.
Theoretical Content: This course is applied in nature and covers very little theoretical content.
Problem Analysis: For the most part, the students are given well-defined specifications for the behavior of their programs including command line interfaces. The amount of problem analysis is limited.
Solution Design: Through the project and group work, students are given a series of problems to solve. As the course progresses, the students are responsible for designing an increasing protion of their projects. Sample programs are provided to demonstrate good design and implementation practices. Students who choose to create a GUI application for their final project have complete control of the look and feel, as well as the implementation, of their programs.