COP 2805
Java Programming II

COP 2805 - Java II Syllabus
View Weekly Course Schedule   Other interesting links:

Resources  (examples, ...)

  Instructions for Programming Assignment #1.
  Instructions for Programming Assignment #2.
  Instructions for Programming Assignment #3.
  Instructions for Programming Assignment #4.
  Instructions for Programming Assignment #5.
  Instructions for Programming Assignment #6.
  Instructions for Programming Assignment #7.
  Instructions for Programming Assignment #8.
  Instructions for Programming Assignment #9.

Weeks of Programming

Can Save You

Hours of Planning

Reported by: "Anne Applin" <anne.applin@GMAIL.COM> - The source for JDK and more.
On-line version of the Java 8 JDK Docs from Oracle.  (Java 8 API docs.) - links to all official Java documentation, including references, guides, and tutorials.
On-line Textbook supplements and Student Resources - Liang's textbook companion website. - Tampa Bay area Java Users Group.
on-line Java Language Reference - the final word on Java; explains obscure language features.
on-line Java Tutorials — Excellent tutorials on all topics, including sample code.
Thinking in Java free (PDF), highly regarded book by Bruce Eckel.
A Java FAQ (Java Glossary), lots of answers.
on-line training articles from Oracle.
IBM Java developerWorks — Large collection of beginner to expert articles on all things Java. A large collection of OO tips, techniques, and design patterns. The site for UML standards, tutorials, and more.  Download ArgoUML, a free UML modeling tool.
Java Certification Programs and Oracle Certified Associate (OCA) exam topics.  (See also Oracle Certified Professional (OCP) exam topics.)
Professional Software Engineering certification information (may be required to practice SE in some states).

COP 2805 Syllabus

Spring 2014

Cource policies
Time & Place: Ref No. 51052: Tuesday & Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427
Instructor: Name:  Wayne Pollock
E-mail:  Internet:
Office & Phone:  DTEC–404, 253–7213
DM Office Hours:  Monday–Thursday, 3:55–5:25 & 8:30–9:00;
On-line Office Hours:  Tuesday–Friday, 12:00 PM (noon)–1:00 PMor by appointment.
Contact Information
Instant Messenger ID (Yahoo Messenger):  waynepollocklive
Homepage URL:
          Yahoo Messenger on-line status - click to chat or leave a message
Text: Liang, Y. Daniel, Introduction to Java Programming, Custom Edition Volume II, ©2013 Pearson/Prentice-Hall:
ISBN-10: 1-269-24112-5,   ISBN-13: 978-1-269-24112-0

This is a custom textbook, made from the Ninth Edition Comprehensive version.  This book only contains the material used in our class, and should be much cheaper than the full 9th comprehensive edition.  However, it is probably only available from the HCC bookstore.

Kathy Suerra and Bert Bates, Head First Java, ©2009 O'Reilly Media.  ISBN-10: 0596009208   ISBN-13: 9780596009205
(A good self-study book for beginners.)

Cay Horstmann and Gary Cornel, Core Java Volume 1 and Core Java Volume 2, (latest editions of each), ©Prentice Hall. 
(A good reference set.)

HCC bookstore on-line

Description: (This course is 3 credit hours long.)  This course is a continuation of COP 2800 (Java Programming I).  The focus is on the development of client-server applications and advanced GUI.  Topics include Java features (such as enums, autoboxing, and generic types), multithreading, collections, files, advanced multimedia and GUIs, internationalization, and web programming (including database use, networking, security, servlets, Java Server Pages, JavaBeans, and Remote Method Invocation).
Objectives: The student will demonstrate a knowledge of the following topics through objective tests, hands-on activities, and projects:
  1. Understand and build applications and applets using advanced object-oriented programming concepts (such as design patterns and basic UML)
  2. Understand and use advanced Java features including reflection, annotations, weak references, enums, and autoboxing and unboxing
  3. Understanding Exceptions, Assertions, and testing (JUnit)
  4. Understanding and using generic collections
  5. Understand how to construct internationalized applications and applets
  6. Understand and build advanced graphic user interfaces (including 2-d graphics and advanced layout techniques)
  7. Understand multithreading concepts and build multithreaded applets and applications
  8. Work with files and I/O, including XML files (including DOM, SAX, and XSLT)
  9. Understand how to digitally sign an applet and applications, and how to grant extra privileges to an applet, and other features of JAR files
  10. Understanding deployment issues and the use of Java WebStart
  11. Describe JavaME concepts and components
  12. Understand how to use databases from a Java program
  13. Printing from a Java application
  14. Understand basic networking concepts and building client-server (web based) applications with servlets and Java Server Pages (JSPs), JavaBeans, and Remote Method Invocation (RMI)
  15. Understand issues and basic design of enterprise applications using Java EE (including such concepts as web-, business-, and EIS- tiers, fat and thin clients, grids and clusters, WARs and EARs, etc.)
  16. Understand and describe enterprise technologies and related services and protocols, including JNDI, JMS, JavaMail, and Web Services ( UDDI, SOAP, and WSDL)
Prerequisite: COP 2800, or permission of the instructor.  Students enrolled in a degree or college credit certificate program must complete all prerequisites.  Note!  HCC registration computers may not check for prerequisites before allowing you to enroll.  Be certain you have all required prerequisites or you won't have much of a chance of success.  Also you may be dropped from the class.
Facilities: All assignments can be performed on any computer that supports current Java SE and the Java EE development tools.  (These include the HCC classroom and Computer Lab computers.)  You can obtain the JDK from, The Glassfish Java EE server (Open Source edition) from, Eclipse from, NetBeans from, JUnit from, and other (free) tools, which will be introduced as needed.  (These are all free tools, and often the tools of choice in the industry.)  You will also need to create a (free) account at

You will need your own flash disk, writing materials (for taking notes), and three Scantron 882–E or 882–ES forms (for taking tests).  You can use HawkNet (WebAdvisor) or Florida Virutal Campus (Formerly to obtain your final grade for the course.  You can use your assigned Hawkmail (Hawkmail365) email address if you wish to discuss your grades via email.  (Note, it is possible to setup your Hawkmail account to forward all received emails to some outside email account; but you still must send mail from Hawkmail to discuss grades.)

Most college systems now (or will in the future) use a single sign-on user ID, known as HCC “NetID”.  Visit to register and to update your credentials.  (Your initial password is your uppercase first name initial, lowercase last name initial, and your seven digit student ID number.)  Note, the quickest way to resolve login issues is the HCC Live Web Portal (

Hawk Alert text messaging service allows you to receive important information regarding campus closures or emergencies.  You may also sign up for financial aid notifications and registration and payment deadlines.  This is a free service, although some fees may be applied by your cellular service provider or plan for text messages.  To sign up, or for more information, visit

HCC DM Open Lab

Computers with Java software installed are located in the computer science department open lab in DTEC–462.  Lab hours are:

Dale Mabry campus open lab hours
Monday – Thursday8:00 AM to 10:00 PM
Friday 8:00 AM to 4:30 PM
Saturday 8:00 AM to 2:30 PM

(Note:  Lab technicians (“Lab Techs”) are not teaching assistants or tutors, and shouldn't be expected to help you with your coursework.)

Rules for Using HCC Facilities

  1. No food or drinks near computer equipment.
  2. Students bringing their own laptops need to use the wireless network only.  Students cannot disconnect network cables from classroom's computers to connect their personal devices.
  3. Students are not allowed to disconnect monitors or computers to power their personal equipment.
grading policy
3 equally weighted exams:     50%
Programming projects (about 6):     50%
Classroom participation:     +5%

Grading scale:  A=90-100,   B=80-89,   C=70-79,   D=65-69,   F=0-64
(If you stop attending the course before it is 60% complete, you will be awarded an “FX” grade.)
(Or you can elect to “audit” the class during the add/drop period.)

  • No makeup exams will be offered without the prior approval of the instructor.  If a make-up exam is offered, you can take the exam in my office during my regular office hours, or from the Dale Mabry Testing Center.  (Check for their hours of operation, and make sure to give yourself sufficient time to complete an exam.)
  • Exams will be closed book and closed note multiple choice exams.  While the exams are non-cumulative, each does build upon knowledge acquired earlier.  Exams are based mostly upon material presented in class however some questions may be from assigned readings (the textbook and on-line resources).
  • Exams will only cover material discussed in class or assigned as reading, before the exam.  Should the class fall behind the course schedule, some topics shown on the syllabus due for an earlier exam will be tested on the following exam instead.
  • Regular attendance is imperative for the successful completion of this class.  The textbook and on-line resources should be considered as required course supplements; in other words, the course is not based on the text.
  • All phones, pagers, and beepers must be turned off during class time, except with prior permission of the instructor.  No food or drink is permitted in HCC classrooms.
  • Attendance will be taken within 5 minutes of the start of class; after 4 unexcused absences and/or lateness, the student will lose 2 points off the final grade for each additional occurrence.
  • If you miss a class, you are still responsible for the material covered in that class.  All students should exchange contact information (name, email address, phone number) with at least one other student in the class.  If you must miss a class, you should then contact another student and request they take class notes for you.  (Note, Hawknet has Hawkmail365 email for HCC students.)
  • Credit for class participation includes attendance, preparedness, and adding to class discussions by asking questions and participating in discussions.  Playing computer games, surfing the Internet, or working on assignments for this or other classes during class time will lose you credit.
  • Additional time outside of class will be required.  For typical students an average of between 6 and 10 hours each week outside of class are required for preparation, practice, projects, and homework assignments.
  • Students are expected to prepare for each class by completing all reading assignments, reviewing examples and model solutions provided, and practicing outside of class.  This is important — you can't learn a skill such as Java programming only by attending class and reading books.  You must practice several hours a few days each week!  If you won't have enough time available, consider auditing the course.
  • Students are expected to check the class website regularly.  Any syllabus changes, class cancellations, project assignments, and homework assignments are announced in class and posted to the website and the RSS feed for this class.
  • A student shall not, without my express authorization, make or receive any recording, including but not limited to audio and video recordings, of any class, cocurricular meeting, organizational meeting, or meeting with me.  Further, you do not have my permission to post on the web or otherwise distribute my class lectures and other course materials.  (You can distribute freely any materials I make publicly available from the HCC (or the website, without asking permission, provided you give me credit for the work and don't alter it.  Any other use will require expressly given permission.)
  • Working together on individual assignments is considered as cheating!  Turning in someone else's work without giving them credit is also considered cheating (plagiarism).  Cheating will result in an automatic F (zero) for the project for all parties.  Also, you can only earn credit for your own work and not someone else's, even if you do cite your sources.  Note that some projects may be group projects, where each member of a small group works together on a project.  It is also okay to ask a fellow student for class notes (in the event you miss a class) or for help in understanding the text or material given to the class (e.g., examples on the class website).  You are encouraged to study together as well.
  • You must abide by the HCC Acceptable Use Policy (AUP) for computers and services.  In particular, you must not run network scanners, or attempt to obtain administrator (“root”) privileges or otherwise disrupt HCC computers and services.
  • You must follow the academic honesty policy and the student code of conduct for HCC.  A second cheating offense will result in an “F” for the course, and your name will be turned over to the dean for further handling.  I take these matters very seriously.  You have been warned!
  • Every effort will be made to stick to the weekly schedule for our course.  However it may happen that we will fall behind the schedule at some point.  If so, no topics will be skipped.  Instead we will attempt to catch up over the following weeks.
  • Please be aware that if we fall behind on the weekly schedule, the topics discussed may not match what shows on the syllabus.  The weekly schedule may (but probably won't be) updated in this case.
  • In case we do fall behind, homework assignments are automatically postponed until the next class (i.e., homework assignment that show on the schedule as due the same day we discuss some topic, will be due the day we will discuss that topic in class).  Projects and exams will not be automatically postponed.  Should your instructor deem it necessary, projects and exams may be rescheduled; this will be announced in class.
  • Communications Policy:  I will respond to your emails within 48 hours or two business days.  HCC policy is that grades can only be discussed in person during office hours, or via email only if you use your assigned HCC HawkNet (Hawkmail365) email account.
  • No appointment is necessary to see me during my scheduled, on-campus office hours.  You can just “walk-in”.  You can make appointments for other times as long as I'm available.
  • Occasionally my office hours will be canceled on short (or no) notice, for example if the dean calls me for a meeting.  Before driving out to campus just for my office hours, you should contact me the day before to make sure I still plan to be there.
  • Late Policies:  Late assignments (homework assignments, projects, or exams) generally will not be accepted.  An assignment is late if not turned in by the start of class on the day it is due.

    Late assignments will be accepted late only if you obtain the instructor's permission prior to the due date of the assignment, or for a documented serious medical reason.  All late assignments are subject to a late penalty of at least one letter grade (10%) regardless of the reason for the delay.

    Projects and homework assignments later than one week will receive a more severe late penalty; very late assignments without adequate excuses will receive a grade of “F” (0).  However if you have a very good reason your instructor may waive any or all of the late penalty.  (Examples of good reasons include extended illness that prevents working, being out of town for work, or military service.  Remember, documentation will be required.)

  • The dangers of the flu or another contagious disease require some changes to normal policies.  HCC is implementing the recommendations for institutions of higher learning of the CDC.  (See and for guidance from the CDC.)  You won't need documentation if you miss class due to the flu.  (But if you think you have the flu, you should see a doctor as soon as you can.)  In the unlikely event of a school closure due to the flu, some plan to make up the missed work will be made.

    If you think you have the flu, stay home.  Do not come to HCC until 48 hours after your fever has broken as you are still infectious.  Also, people are infectious to others for a day or so before they have any symptoms.  Flu is spread by touching doorknobs, computer keyboards, railings on stairs, etc., that were touched by someone with the flu.  Avoid shaking hands; use the “fist shake” (touching of fists) if you must use a physical greeting.  The most effective way to avoid catching the flu is to wash your hands frequently, especially after touching something that was touched by others.  Avoid unnecessary touching of eyes, nose and mouth.  While not as good as properly washing hands, hand sanitizers have been installed throughout the campus; use them often.

Projects: Projects will be assigned from the class web page at various times.  You will have sufficient time to complete the projects, at least a week but usually two weeks.  All Projects will be group programming projects.  You must work on projects outside of regular class hours.

While you may work individually on the first two projects, you must work in a group of two to four students on all other projects, unless approved by your instructor.  From project #3 on, projects will be submitted to a group's designated GitHub repository for that project.  (Each group will have either one repo, or one branch, for each of the group's projects; this will be explained before project #3 is assigned.)  Each group member must do their share of the work, and make individual commits.  Your grade will depend mostly on your code as shown by your commits to the project repository for your group.

Projects are graded on the following scale:

A = 95% (Excellent: Good design with good comments, style, and extras)
B = 85% (Good: Good design, some comments, readable style, and it works)
C = 75% (Acceptable: Project objectives are met or are close to being met)
D = 65% (Unacceptable)
E = 10-64% (Variable credit: At least you tried)
F = 0% (Didn't hand in the project)

Minor extras worth +5 points, minor omissions or poor design worth -5.

Projects are graded according to their design (25%), how well they compile and run (20%), how well your project meets the requirements specifications (20%), the coding style (15%), the amount (and quality) of your comments (10%), and your creativity in extending the project usefully or an innovative design that uses the features taught in class well (10%).

Projects are not graded when turned in.  They are graded all at once, sometime after the project deadline has passed (usually the following weekend).  Every effort will be make to grade projects within a week of the due date, or as soon thereafter as possible.  (See also submitting assignments below.)

Submitting Assignments: All assignments (except when noted) must be submitted by email to .  Please use a subject such as “Java II Project #1 Submission”, so I can tell which emails are submitted work.  (Questions get answered right away, but submissions may wait a while before I grade them.)

Send only one assignment per email message.  Email your Java source and HTML files by copy-and-paste.  (Please do not send as attachments, except when noted in the project's directions.)  If possible use the “text” and not the “HTML” mode of your email program.

Note: If you use Microsoft Outlook Express or a similar email program, please be aware that this program has a “feature” that automatically converts slash-slash (“//”) comments in your email to “FILE://”.  Make sure your Java source is correct before you send the email!  If possible, use the “text” and not the “HTML” mode of your email program.

In the event a student submits more than once for the same assignment, I will ignore all but the last one received up to the deadline.  Assignments submitted after the deadline will not count toward your grade except as allowed by the course late policy.  Also, you cannot resubmit an assignment once it has been graded.

To avoid having your submitted work rejected as “spam”, you can use Hawkmail365 to send email to professors.  This doesn't always work either!  If you are having difficulties with this email address, ask me for an alternate email address you can use.

If you have an email problem, you may turn in a printout instead.  Be sure your name is clearly written on the top of any pages turned in.  Please staple multiple pages together (at the upper left).

Always keep a backup copy of your submitted projects, until you are certain they have been received and graded correctly.

Academic Calendar
HCC Academic Calendar:
Classes Begin: Wednesday  1/8/2014   (First class meeting: Thursday 1/9/2014)
Add-Drop Ends: Tuesday   1/14/2014
Last Day to Withdraw:  Tuesday  3/18/2014
Classes End: Wednesday  5/7/2014  (Last regularly scheduled day of class: Tuesday 5/6/2014)
Grades Available:  Monday  5/12/2014 (from Florida Virtual Campus (formerly called, or from HawkNet)
HCC is closed on: Monday  1/20/2014 (Martin Luther King Jr. Day),
Monday  2/17/2014 (Presidents' Day),
Monday–Sunday  3/10/2014–3/16/2014 (Mid-Term Break),
Thursday  4/10/2014 (Faculty In-Service Day),
Friday–Sunday  4/18/2014–4/20/2014 (Spring Day)

Request For Accommodation

If, to participate in this course, you require an accommodation due to a physical disability or learning impairment, you must contact the Office of Services to Students with Disabilities, Dale Mabry campus: Student Services Building (DSTU) Room 204, voice phone: (813) 259–6035,  TTD: (813) 253–7035,  FAX: (813) 253–7336.  Brandon campus: voice phone: (813) 253–7914.

HCC has a religious observance policy that accommodates the religious observance, practices, and beliefs of students.  Should students need to miss class or postpone examinations and assignments due to religious observances, they must notify their instructor at least one week prior to a religious observance.


Quotes on learning
Quotes:         Tell me and I'll listen.
Show me and I'll understand.
Involve me and I'll learn.
    — Lakota Indian saying
        Learning is not a spectator sport!     — Chickering & Gamson

Course schedule for COP 2805

Day by Day Course Schedule
Tue       Thu
Topics Readings
(Chapter numbers refer to the comprehensive edition, not the custom text)
1/9   Review: Course policies.  Review Java 1 topics on request (such as: applications and applets, bytecode, command line tools, methods, scope, modifiers, object oriented programming, inheritance, overloading and overriding, interfaces, wrapper classes, using BigDecimal and BigInteger classes, graphics, AWT, swing, user interfaces, events, and layout managers.
Understanding .class files, JREs, byte code, tool-chains.  Using Eclipse and NetBeans Java IDE.  Ethics.
Chapters 1–13, 15–18, Liang on-line supplements: III-G (Packages), II-B through II-E (Netbeans and Eclipse Overviews), Software Engineering Code of Ethics, Eclipse Documentation (the “Workbench User Guide” and “Java development user guide” sections), NetBeans Documentation (the “Java Quick Start Tutorial” and “Developing General Java Applications”)
Additional Links
Java 7 SE API reference, tutorials, and sample code from Oracle,, Eclipse, NetBeans, Another Eclipse tutorial
1/14     1/16

1/21     1/23
Versioning (or revision) control systems (Git and CVS), and using them with IDEs.  Exceptions: checked vs. unchecked, using and defining, try-catch-finally blocks, using try-with-resources (Java 7).  System.exit, finalizers, and shutdown hooks.
Jar files (and sealed packages).  WebStart (JNLP).  Signing applets and WebStart applications.
Project #1 (IDE) due 1/21
Chapters 14.1-14.9 (Exceptions), Liang on-line Java supplements: III-R (WebStart), III-Q (jars), Eclipse Git User Guide - GitHub Tutorial, Eclipse Git User Guide - Starting from Existing Git Repositories, Git Tutorial for NetBeans
Additional Links
on-line Exception demos, on-line WebStart and code signing tutorials and demos, additional VCS resources, Jar tool and manifest file lecture notes
  Mon 1/21 Martin Luther King Jr. Day  —  HCC closed  
1/28     1/30

2/4     2/6
Boxing and unboxing.  Interfaces.  Initialization blocks.  static import.  enums.  Annotations.  Covariant return types, clone method, copy constructors.  Varargs.  Reflection. 
Project #2 (Git) due 2/4
Chapters 14.10-14.13, 9.2.7, Liang on-line Java supplements: III-L (initialization blocks), III-F (enums), Oracle Java tutorials for: “Initializing Fields” (including static initialization blocks), “Using Package Members” (including static import),“Enum Types”, “Annotations”, “The Numbers Classes” (for boxing/unboxing), and “Passing Information to a Method or a Constructor” (varargs); covariant return types tutorial, Oracle's Reflection tutorial
Additional Links
on-line Exception demos, on-line boxing, enum, initialization blocks, annotations, covariant, and reflection resources
2/11     2/13 Persistent storage, CRUD operations and applications.  Choosing file formats (or data management system).  Designing file (and message) formats, including magic string, version number, encoding, and other factors.
Files and I/O (, java.nio), JFileChooser.  Object serialization.
Chapters 14.10–14.13, 19
Additional Links
Oracle Java Tutorial for I/O, on-line file and I/O resources
  2/18 Exam #1  

2/25     2/27
Java Collections: arrays (review), types/interfaces (List, Set, Map), common implementations (Linked List, Hash, Tree).  java.util.Collections utility methods.
Project #3 (Search Engine part 1: UI) due 2/25
Chapters 22, 23, (Appendix G, bitwise operators, is optional), IBM Developerworks Java Collections tutorial
Additional Links
Oracle Java Collections Tutorial, on-line Collections resources
  3/4   Generics.  Aggregate operations (streams).
The garbage collector and Java memory model, Weak/soft references, WeakHashMaps.
Chapter 21, generics.pdf (tutorial from Joshua Bloch's Effective Java), Aggregate Operations - The Java Tutorial, Reference types tutorial (skip Reference Queues and Phamtom References)
Additional Links
on-line Generics and Streams resources, on-line memory, garbage collection, and Reference resources
3/6   Internationalization (I18N), Localization (L10N), Encoding (Unicode, UTF-8, ISO 8859-1).  Locales, java.text.*, resource bundles, property files.  System properties.  Using the Preferences (java.util.prefs) API.
Liang chpater 35 (requires book's access code; click “Companion Website” link), Internationalization tutorial from Oracle
Additional Links
on-line I18N resources
3/10 – 3/16 Mid-Term Break  —  HCC closed  
3/18     3/20

Object-oriented analysis and design.  Introduction to design patterns.  Model-View-Controller (MVC) pattern.  UML.
Project #4 (Search Engine part 2: Files) due 3/18
Chapters 10 (Thinking in Objects), Liang on-line supplements III-N (Design Patterns) and III-X (UML), CRC Cards, UML Tutorial
Additional Links
on-line design and UML resources
3/27   Exam #2  
4/1       4/3

Testing, using JUnit.  Using assertions.  Logging for Java.  Management and monitoring of applications and the JVM.
Project #5 (RFP) due 4/1
Liang on-line supplement III-P (assertions), Liang chpater 50 (requires book's access code; click “Companion Website” link), Official (short) JUnit tutorial, Extreme Programming (TDD) example: Bowling scores, Java logging tutorial, Monitoring Java programs using Jconsole
Additional Links
on-line testing resources, logging and monitoring demos Liang on-line supplement III-X (JUnit), logging and monitoring demos
4/10   In-Service Day  —  HCC closed  
4/15     4/17 Multithreading (Concepts, issues, object locks, synchronized, wait, notify, notifyAll).  Timer classes.  Map-Reduce, Fork-Join.
Project #6 (Search Engine part 3: Collections) due 4/15
Chapter 32, Sun/Oracle Tutorial on Concurrency
Additional Links
on-line Multi-Threading resources
4/22     4/24 XML (SAX, DOM, StAX, XSLT), JSON.
Database access (JDBC), SQL, Using ODBC.
Project #7 (Mini-Golf part 1: requirements and design) due 4/24
Class XML, JSON Lecture Notes, Liang on-line supplements V-C and V-D (XML), Chapter 34, Database Concepts (PDF)
Additional Links
on-line XML and JSON resources, Liang on-line supplement IV-A, -B, -E, -F, -G, -H (databases), on-line database resources
  4/29 Automating building, testing, and deploying: Overview of Ant and Maven tools. Ant tutorial, Maven tutorial
Additional Links
on-line Ant and Maven resources
5/1   Time permitting:  Overview of Java EE design: Web-, business-, and EIS- tiers, fat/thin clients, grids and clusters, applications and web services (SOAP, WSDL, and UDDI).  EJBs.  Other Java EE technologies: JNDI, ...
Installing Glassfish and related software.  Servlets (Handling GET and POST requests, using cookies and session tracking).  JSP.  Deployment: WARs and EARs. 
Project #8 (Mini-Golf part 2: unit testing) due 5/1
Liang on-line supplements V-A, V-B (HTML and CSS), On-line Chapters  42–45, (Ch. 44, 45 optional), on-line Java EE resources
Additional topics (interest and time permitting):
Using advanced layout managers (GridBag, Box, and Overlay and JlayerPane).  Borders.  PLAF.  Toolbars and Actions.  Swing and the MVC (Model-View-Controller) architecture.  JTables (and JTrees).  Networking (URLs, Sockets, UDP Datagrams, Client-Server).  RMI.  Java WebStart (JNLP).  Java ME concepts.  Graphics and the Java 2D API: Clipping, transformations, stroking.  Printing in Java.  Java Security: Signed Applets, Policy files, sealed packages.  The jar utility, jar manifest files.
Chapters 33–36, on-line PLAF resources,
Chapters 30, 43, on-line Networking Resources
Chapters 32, Liang on-line supplements III-R (Java 2D), III-S (Adv. Layout managers), III-V, (PLAF), on-line JavaBeans, security, graphics, WebStart, and JavaME resources
  5/6   Final Exam
Project #9 (Web Application) due 5/6



course resources
Bytecode Demo Bytecode Demo using javap Demo of bitwise operators
Java Setup Instructions for re-creating the Java setup of our classroom, including the install of NetBeans, Eclipse, JDK, Ant, Maven, JUnit, Derby database, and other tools     OpenMeetings Apache project, used to facilitate group communications (when working on group projects, for example)
Windows free hex editor Neo A good hex editor, useful for examining class and other non-text files  (Another good one is Cygnus Hex Editor)     Groovy A Java-like scripting language for the JVM
Software Engineering Code of Ethics Joint ACM and IEEE code of ethics and professional conduct     Debug Strategy Excellent advice from Patricia Shanahan on debugging
Dealing with Poisonous People An interesting read about working on open-source projects, but much of the advice applies to any software team     Dinosaur Brains: Dealing with All THOSE Impossible People at Work A good book  (See also Dealing with difficult team members and 20 Ways to Deal with Difficult Co-Workers)
Soft Skills A discussion of certifications, job interviewing tips, and required “soft skills”     Working with Difficult People A good tutorial, from
Git home The Git version control system  (See also the excellent on-line “Pro Git” book) Easy to use public (or private) Git repository  (See also GitHub for Windows)
Git From the Ground Up (PDF) A short, readable introduction to Git concepts     Everyday Git with 20 Commands or so Brief explanations and examples of the most used Git commands
Git Overview YouTube videos (four of them) teaching VCS     GitHub Overview More YouTube videos for GitHub and Git basics
Eclipse Git (“EGit”) User Guide See also this Git tutorial for Eclipse YouTube video A tutorial-style reference  (See also Git manual page with many links)
Git Tutorial for NetBeans All you need to know (if you already know Git)     subversion home Subversion version control system
Mercurial Tutorial An excellent tutorial on Mecurial, and for DVCSs in general     CVS home See also CVS Tutorial for NetBeans Demo of catching and throwing exceptions  (See also Demo of using Java7 automatic resource management (try-with-resources) Demo of using shutdown hooks Demo of Finalizers
WebStart Demo Demo of using WebStart (JNLP) for a file viewer app     JNLP Developer Resources WebStart and JNLP docs, including API examples, FAQ, and other information
Code Signing Demo Demo and tutorial of Applet code signing     Security tutorial Tutorial on security and public-key encryption, from's DevEdge site (from the Internet Archive) Demo of Java 5 auto-boxing Initialization block demo Demo of the builder pattern to replace complex constructors Slightly more complete (“production quality”) example of Demo of the telescoping constructors pattern Demo of enums
Enum in Java 5 Tutorial on Java 5 enums Java 5 Annotations demo Simple varargs Demo     Annotations Java 5 Annotations lecture notes Shows how to implement clone, using covariant return types Simple Relection Demo
Java Tutorial for I/O Official Oracle Java tutorial, including old (streams) and NIO (including Java 7 NIO.2) Show how to calculate the MD5 checksum of a file Shows non-GUI input with Scanner Shows reading, writing files with encodings  (Download UTF-8-demo.txt for Prints a directory listing. Show how to calculate the MD5 checksum of a file A short demo to open, read, parse a file of data, and create a List of objects     People.txt A (very) short text file to use with A short demo to open, read, and write to an ASCII text data file     RandomAccess.dat A (very) short text file to use with A short demo of serialization, used to make deep copies of arrays and other objects     NIO Tutorial (PDF) from IBM DeveloperWorks Uses java.nio classes to copy a file     Tutorial for Java NIO (PDF) A shorter (but slightly more readable) version of the IBM tutorial on using java.nio Uses java.nio memory-mapped I/O (use with the sample file MemMapData.txt)     Tutorial for NIO.2 Short NIO.2 tutorial (with example code) from IBM DeveloperWorks
JfileChooserDemo Shows a GUI file chooser dialog        
Collections Tutorial from IBM Developerworks Short tutorial on using Collections (copy on     generics.pdf Excellent tutorial on using Generics from Joshua Bloch's Effective Java
Oracle Java Collections Tutorial A more through tutorial on Collections     Generics tutorial Generics Tutorial from IBM DeveloperWorks  (See also Generics Without Pain) Demo of using various Java collections     Generics Tutorial from Sun (PDF) Tutorial and complete reference to using Generics (See also this simpler Sun Generics Tutorial from Oracle)
Collections tutorial Another Collections Tutorial from IBM DeveloperWorks Demo of a generic method
Oracle Guide to Java Collections Additional Java Collection resources Demo of using Java 8 Streams (aggregate operations) Simple class to demonstrate proper equals, hashCode, toString, and compareTo methods     HashCodes Steps to create your own hashCode methods Demo List and some java.util.Arrays methods, to remove adjacent duplicates        
RAM layout Shows how primitives and objects are referenced     Understanding Weak [and Soft] References A short but good blog posting explaining Java's Reference types
Java Reference Objects A short but through tutorial on Java's memory model, garbage collection, and References (especially SoftReference and WeakReference)     java.lang.ref Package Description Java API docs for Reference objects Demo of a generic Cache class that uses SoftReferences, and a demo of WeakHashMaps Example of weak and soft reference use
Java Garbage Collection references Discusses the various GC algorithms used with the HotSpot JVM and how to select one, and tune it for performance  (See especially the Memory Management Whitepaper (PDF))     Java (HotSpot JVM) non-standard option reference Describes the non-standard options, useful to improve performance (of the garbage collector for example)
I18N (Internationalization Tutorial from Sun) Tutorial on using I18N, Locales, and Resource Bundles     ISO-216 international paper sizes A clear explaination of A4 and other international standard paper sizes
Java internationalization basics A readable tutorial on I18N and L10N, from IBM DeveloperWorks     Locales and I18N Some notes about using Locales and internationalizing programs
ISO-639 English (and French) language names, and the standard 2 and 3 letter codes     ISO-3166 Country Codes The official list of two and three letter country codes, used in locales
Encodings and Character Sets More information then you want to know about Unicode, encodings, etc.     Font concepts Explains Font terms and concepts as used in Java Shows how to work with I18N Strings Show all local fonts, list font families Uses Locales, ListRecourceBundles for I18N An Internationalized Applet Displays the JVM version in your browser     Unicode symbols Applet showing Unicode font listings, plus a few symbols Demo showing Unicode String processing, one character at a time Another demo showing Unicode String processing; this demo shows Unicode normalization, String sanitation, and using BreakIterator and Collator to compare Unicode characters
Markdown A style of text that can be easily converted to attractive HTML Lists Java system properties and their values Shows the Java Preferences API
Top 25 Errors A list of common security-related coding errors, from and  (See also CERT Secure Coding Standards for Java and other languages)     ISO 27000 (Wikipedia) The ISO/IEC 27000-series (also known as “ISO27k” for short) comprises information security standards  (Some of these standards are freely available here)
SEI Software Development Information from the Software Engineering Institute  (See also their software Architecture and their certification information)     IEEE Computer Society Software Professional Certification Information about the CSDA and CSDP certifications
Software Engineering (Wikipedia) This article discusses certifications and legal requirements     SWEBOK The Software Engineering Body Of Knowledge defines what every software engineer should know (design, testing, and similar topics)
Professional Software Engineering Exam information (PDF) The NCEES (the National Council of Examiners for Engineering and Surveying) will start exams in 4/2013 for software engineers; some states will require practitioners to hold this license (10 so far)  (Software PE exam study materials are available from the IEEE)     ISO 9000 (Wikipedia) This standard refers to the process of creating software (certified compliance is required for software sold in the European Union)  (For project management the most widely recognized certification is Project Management Professional (PMP))
ISO 12207 (Wikipedia) A popular ISO standard for software lifecycle processes     IEEE computer Society CSDA certification Based on the SEBOK, the Certified Software Development Associate (or follow-up CSDP) certification is currently the best way to prove your competency
Bad design and its consequences Story about Toyota's killer firmware  (See also for other case studies)     Therac-25 The story of the deadly design flaws in hospital radiation equipment
Project Proposal for a voice mail system A project proposal     Object Categories A guide to finding objects
Use Case Tutorial An overview of creating use cases     SRS template and sample A templet for requirements docs, designed by the IEEE, with no graphics (downloaded from
Sample Requirements Documentation A sample software requirements specification (SRS document  (download from     Sample Requirements Documentation (2) A sample software requirements specification (SRS document  (download from
CRC Cards The original paper describing the CRC design method.  (Another example.)     OOD Guide OOA and OOD study guide (lecture notes)
Synopses of Design Patterns A brief description of many Java patterns     Design Patterns Tutorials, FAQs, and more A large collection of OO tips, techniques, and design patterns     Java Design Patterns 101 A tutorial on common design patterns from IBM Developerworks The site for UML standards, tutorials, and more        
UML Resource Center - IBM UML tutorials     How to Design a Program An over your shoulder look at thinking about design
Dia Free diagramming tool (for UML and a lot more)     How not to Design a Program A humorous look at over-engineering how to compute factorials  (See also How To Write Unmaintainable Code; Ensure a job for life)
Violet UML Editor Originally written by Cay Horstman, this free Java application (a runnable jar file) is an excellent UML diagram editor     ArgoUML Free UML diagramming tool that can produce code from the diagrams.  (Not well maintained, but there is an Eclipse plug-in for it.)
UML Quick Reference (PDF) A excellent reference card showing one each of everything     UML Reference (PDF) A more complete UML reference
Testing Overview Lecture Notes on Testing     Test Case Self-Assessment Attempt to generate sufficient test cases for a simple program
PICT Windows Installer (MSI) The installer for Microsoft's PICT coverage (pairwise) test generator tool, version 3.3  (Includes HTML User Guide)  See also for other tools     JUnit 4 Testing Demo Demonstrates using JUnit for the sample program from the Test Case Self-Assessment Junit Testing     JUnit API Java docs On-line JavaDocs for JUnit API JUnit Tutorial A pretty good JUnit Tutorial     JUnit FAQ Almost a complete tutorial JUnit Testing Example for class     Java Code Checker PMD can report (likely) logic errors in your code Jmock is a library that allows you to easily create mock objects for testing Demo using assertions for pre-, post-conditions, invariants
Programming With Assertions Java tutorial for using assertions     Assertion Usage Notes Examples of appropriate and inappropriate use of assertions Trivial example of assertion use     Sample trace output The trace output of running the date program on Linux Short demo showing Java SE logging API (See also Oracle's Java logging tutorial, and Another logging tutorial)     Apache logging home Download or read about log4j, logging in general, and the GUI log viewer chainsaw
Java Monitoring tutorial See also Java Management and Monitoring resources     Management and Monitoring Demo Shows how to run a managed application and how to monitor it.  (See also docs for jconsole and jvisualvm tools)
Multi-Threading Lecture Notes (PDF) A discussion of the concepts and issues of using Threads     Java Concurrency / Multithreading Tutorial A terse but good and up-to-date tutorial
Sun/Oracle Tutorial on Concurrency Discusses all multi-threading features of Java 6 Demo of ThreadLocal variables
DiningPhilosophers Sun's DeadLock Thread Demo     Sort algorithm race Sun's Multi-thread Sorting Demo Pseudocode of a Print Server Improved pseudocode of a Print Server Demo of pausing inside of an event handler (and why it's not a good idea) Mutli-threaded Demo showing suspend, resume, and stop Simple Animation using a Thread Swing animation, uses Timer Mutli-threaded Demo of synchronized        
XML and JSON Lecture Notes (PDF) A copy of my lecture notes     XML Tutorial An excellent “hands-on” tutorial, from XML Demo of DOM API XML Demo of SAX2 API Demo of XML DOM parsing     XmlNotepad.msi A very old Microsoft (free) XML editor.  (There are better ones!)
XML-XSL-Demo XSL (XML Style Sheets) Demo     Xerces-J Setup Some help to install Apache's Xerces-J XML parser on Windows JSON documentation and references  (See also RFC 4627) Demo of using JSON  (Requires the org-json.jar file, to be put into your extensions directory)
org.json API Java docs for the org.json library  (a zip file containing the source for this library can be found on org.json on     Sample JSON text Found on Adobe Labs GitHub site
Database Lecture Notes (PDF) A brief overview of database concepts, and how to use databases in Java     Databases for System Administrators Similar to the lecture notes, but with information appropriate for system administrators.  (It does include a worked example of normalization)
Introduction to Apache Derby Tutorial from IBM DeveloperWorks, showing how to use the database from a Java EE server        
Coffee Database Directions to create an ODBC Text database on Windows  (Note that ODBC is not supported as of Java 8.) A (free) GUI Java database client, to work with (nearly) any type of database Displays a table from a database MultiThreaded Swing GUI and JDBC Demo
JPADemo Simple Java SE application, showing JPA (with EclipseLink) to create and use a JavaDB (Apache Derby) embedded database. JDBC demo of the embedded Derby database     Java DB Manuals Tutorials and reference for Java DB (a.k.a. Apache Derby) Home of the Apache Ant build tool     Apache Ant manual Includes both a reference and tutorials
build.xml A sample Ant build.xml file for a “hello, world” application     Apache Ant from  See also this Ant Overview (PDF), an excerpt from “Beginning POJOs” by Brian Sam-Bodden,
Excerpts from Java Programming with Ant Includes tutorial chapter and an Ant task reference     Ant Best Practices 15 good tips, from O'Reilly  (See also Make Ant easy with Eclipse, from IBM DeveloperWorks)
Apache Maven Home Information and downloads about the Maven build tool     Maven books online From
Maven Demo A typescript of using Maven     pom.xml A more complete Maven pom.xml file, for an executable jar
Maven Tutorial IBM DeveloperWorks tutorial     Maven Central Repository The standard maven repository at  (See also
myServlet.war Example WAR (Web application ARchive) with a Servlet     Java EE Home Sun Java EE site
Java EE Overview Draft lecture notes     Hello, World RMI demo Simple, basic RMI demo from Sun
JNDI Tutorial Sun's JNDI on-line tutorial     Mastering Enterprise JavaBeans, 3rd Ed. A great EJB book, for free as a PDF download
Designing Java EE Applications A Sun Blueprint Article     Java EE Tutorial A Sun Java EE Tutorial
Java EE Technology Center Oracle Java EE developer resources A Java EE site with many tutorials     Java EE Architect's Handbook A pretty good Java EE book, available for free from here
JBoss Home JBoss Java EE Application Server     WebSphere IBM's Java EE application server
Tomcat Setup Apache's Tomcat web application Server install help for Windows  (See also the popular Jetty web application server)     Credit Card Processing A brief overview of e-commerce payment processing Shows Graphic contexts are copies Shows difference of Heavy and Light weight components
Logo2D Java2D Graphics Demo Fancy Text Rendering Multimedia (with sound) applet Graphics, in a jar
Printing Demos Several examples of Java printing        
AWT - Swing Simple Swing demo, compares with AWT version Interest Caclulator with Swing “PLAF” demo Simple Swing demo Swing JLabel demo Shows how to draw text with styles Swing animation, uses JLayerPane Simple JTable Demo Demo of copy/paste clipboard access A Simple JavaBean Tutorial     Marquee Marquee Java Bean Simple Java Bean with BeanInfo, runnable jar     Download the BeanBuilder A GUI Bean Developement Kit)  (This project is no longer supported; you can download the project from
JavaBeans home page Read the Specifications and find other related resources     Download the BDK The Bean Developement Kit (platform independent version from Sun) is interesting but obsolete
JavaME step by step (PDF) Tutorial on JavaME (Java Micro Edition)        
ChatServer Chat room Server A JavaScript expression evaluator
Java Security Tutorial on Java Security from Oracle A signed Applet to create a file on the local system
Model Solutions to Assigned Projects
Logo2D Java2D Graphics Demo     Office Hours Project Model Solution to Office Hours project #1

[Valid RSS]

RSS iconXML iconRSS feed for this page

What is RSS?