| Time & Place: | Ref No. 84247: 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; Monday, Wednesday 8:15–8:45 PM; On-line Office Hours: Monday–Friday, 11:00AM–12:00 (noon); or by appointment.
| ||||||
| Text: | Y. Daniel Liang, An Introduction to Java Programming, Comprehensive Seventh Edition (includes free Java Reference), ©2009 Pearson Education, Inc. ISBN: 978-0-13-208494-9. | ||||||
| Description: | 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:
| ||||||
| Prerequisite: | COP 2800, or Permission of the Instructor. Students enrolled in a degree or college credit certificate program must complete all prerequisites. | ||||||
| Facilities: | All assignments can be performed on any computer that supports
Java 6 and the Java 6 EE development tools.
You can obtain JDKand Java EEfrom www.javasoft.com, Eclipse from eclipse.org, JUnit from junit.org, and Tomcat from apache.org. (These are all free tools.) You will need your own floppy/flash disk, writing materials, and three Scantron 882–E or 882–ES forms. You can use HawkNet (WebAdvisor) to obtain your final grade for the course. You can use CampusCrusier for email, college calendars, and course (and college related) resources. HCC DM Open Lab Computers are located in the computer science department open lab in DTEC–462. Lab hours are:
| ||||||
| Grading: |
Grading scale:
A=90-100, B=80-89, C=70-79, D=65-69, F=0-64 | ||||||
| Policies: |
| ||||||
| Projects: |
Projects will be assigned from the class web page
at various times.
You will have plenty of time to complete the projects, at
least 2 weeks and usually longer.
Although there will be some group programming projects and
in-class group exercises,
you must work individually on non-group projects,
typically outside of regular class hours.
Projects are graded on the following scale:
A = 95% (Excellent:
Good design with good comments, style, and extras) 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 next weekend). Further details will be provided with your first project. (See also submitting assignments below.) | ||||||
| Submitting Assignments: |
Most all assignments (except when noted) can be submitted by email to
.
Please use a subject such as Java II Project #1 Submissionso I can tell which emails are submitted work. Send only one assignment per email message. Email your Java source and HTML files by copy-and-paste. (Please do not send as attachments!) Note: If you use Microsoft Outlook Express or a similar email program, please be aware that this program has a featurethat automatically converts slash-slash ( )
comments in your email to .
Make sure your Java source is correct before you send the email!
If possible, use the textand not the HTMLmode of your email program.
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).
The HCC email server automatically accepts and
silently discards email with certain types of attachments.
For our class, the problem is with
To send email with a 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. |
| Classes Begin: | Wednesday 1/7/09 (First class meeting: Thursday 1/8/09) |
|---|---|
| Add-Drop Ends: | Tuesday 1/13/09 |
| Last Day to Withdraw: | Sunday 3/15/09 |
| Classes End: | Tuesday 5/5/09 (Last regularly scheduled class: Tuesday 5/5/09) |
| Grades Available: | Friday 5/8/09 (from FACTS.org or HawkNet) |
| HCC is closed on: |
Monday 1/19/09 (Martin Luther King Day), Monday 2/16/09 (Presidents' Day), Monday – Friday, 3/16/09 – 3/20/09 (Mid-Term Break) Friday 4/10/09 (Spring Day), |
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: | Tell me and I'll listen. | — Lakota Indian saying | |
|---|---|---|---|
Learning is not a spectator sport! | — Chickering & Gamson |
| Dates Tue Thu |
Topics | Readings |
|---|---|---|
|
1/8
1/13 1/15
| Assign User IDs for LAN, Discuss passwords. Open Lab procedures and hours. Review: Applications and Applets, bytecode, Methods, Scope, modifiers, Object Oriented programming. Graphics, AWT, swing, and SWT. User interfaces, events, layout managers. MVC (Model-View-Controller) architecture. Wrapper classes. Using BigNum class. Using bitwise operators. Using Eclipse Java IDE. |
Chapters 1–11, 13–17, 35.1–35.4,
Liang on-line supplements I-F (Packages), II-D through II-F (Netbeans and Eclipse Overviews). |
| 1/20 1/22 |
Exceptions review: checked vs. unchecked, using
and defining, try-catch-finally blocks.
System.exit, finalizers, and shutdown hooks. Boxing and unboxing. Initialization blocks. static import.
enums.
Annotations.
Covarient return types.
Varargs.
Reflection.
| Chapters 18, 11.11, Liang on-line supplements III-K (initialization blocks), III-E (enums), on-line Exception demos, on-line enum, boxing, init. blocks, annotations, covarient, and reflection resources |
| 1/27 1/29 | Object-oriented analysis and design. Using CVS (team programming using a code repository and versioning system). Introduction to design patterns. UML. | Chapters 12, Liang on-line supplements III-M (Design patterns) and III-W (UML), on-line design, CVS, and UML resources |
| 2/3 2/5 | Testing using JUnit. Using assertions. | Liang on-line supplements III-X (JUnit) and III-O (assertions), on-line testing resources |
| 2/10 | Exam #1 | |
| 2/12 | Generics. Collections. Weak/soft references, the garbage collector and Java memory model. | Chapters 21, 22, 24 (Ch. 25 optional), reference types, on-line Collections resources |
| 2/17 2/19 |
Internationalization (I18n),
Encoding (Unicode,
UTF-8,
ISO 8859-1).
Locales, java.text.*,
resource bundles, property files.
System properties.
Using the Preferences API. | Chapter 31, on-line I18N resources |
| 2/24 2/26 |
Multithreading (Concepts, issues, object locks,
synchronized, wait,
notify, notifyAll).
Timer classes.
| Chapter 29, on-line Multi-Threading resources |
| 3/3 3/5 | Files and I/O (java.io, java.nio), JFileChooser. XML (SAX, DOM, XSLT). | Chapters 8.6, 19, 34.9, Liang on-line supplements V-C and V-D (XML), on-line file resources, on-line XML resources |
| 3/10 3/12 | Networking (URLs, Sockets, UDP Datagrams, Client-Server). RMI. | Chapter 30, 43, on-line Networking Resources |
| 3/16 – 3/20 | Mid-Term Break — HCC closed | |
| 3/24 | Exam #2 | |
|
3/26
3/31
| Database access (JDBC), SQL, Using ODBC. | Chapter 37, Liang on-line supplement IV-A, -B, -E, -F, -G, -H (databases). on-line database resources |
|
4/2
4/7 4/9
| 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, ... | Liang on-line supplement V-A (HTML), on-line Java EE resources |
| 4/14 4/16 | Installing Tomcat. Servlets (Handling GET and POST requests, using cookies and session tracking). JSP. Deployment: WARs and EARs. | On-line Chapters 39–40, 42.6 (Ch. 41, 42 optional), on-line Java EE resources |
| 4/21 4/23 |
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). | Chapters 33–36, on-line PLAF resources |
| 4/28 4/30 |
Additional topics (interest and time permitting): Java WebStart (JNLP). J2ME concepts. Graphics and the Java 2D API: Clipping, transformations, stroking. Printing in Java. Java Security: Signed Applets, Policy files, sealed packages. JDK Security utilities. The jar utility, jar manifest files.
JavaBeans (Component based software development).
| Chapters 32, Liang on-line supplements III-R (Java 2D), III-S (Adv. Layout managers), III-V, (PLAF), on-line JavaBeans, security, graphics, printing, WebStart, and JavaME resources |
| 5/5 | Final Exam |
Class name: COP 2805 (Java II) Day: Tuesday, Thursday Time: 7:00 PM Student Information Sheet Student Name: ___________________________ Student ID: _____________________________ Phone (optional): ______________________ Email (optional): ______________________ Student Certification Statement I have read and understand all of the information contained in the syllabus, and agree to abide by the conditions of this course, especially the following areas (initial each area): _____ Test Policy _____ Honesty Policy _____ Attendance Policy _____ Grading Policy _____ Class Conduct _________________________________ Student Signature
| Resources | |||||
|---|---|---|---|---|---|
| Smile Swing Applet | Another version of Smile, using ImageIO package. | BigNum.java | Demo using java.lang.math.BigDecimal andBigInteger. | ||
| Bytecode Demo | Bytecode Demo using javap | Pack.java | Demo of bitwise operators | ||
| Enum in Java 5 | Tutorial on Java 5 enums | InitBlockDemo.java | Initialization block demo | ||
| Student.java | Demo of the telescoping constructors pattern | StudentPQ.java | Slightly more complete (production quality) example of Student.java |
||
| StudentBuilder.java | Demo of the builder pattern to replace complex constructors | CoinPurse.java | Demo of enums | ||
| BoxUnbox.java | Demo of Java 5 auto-boxing | MetadataDemo.java | Java 5 Annotations demo | ||
| Covariant.java | Clone demo using covariant return type | ReflectionDemo.java | Simple Relection Demo | ||
| ExceptionDemo.java | Demo of catching and throwing exceptions | ||||
| ShutdownHookDemo.java | Demo of using shutdown hooks | Finalizer.java | Demo of Finalizers | ||
| Project Proposal for a voice mail system | A project proposal | Object Categories | A guide to finding objects | ||
| CRC Cards | The original paper describing the CRC design method. (Another example.) | OOD Guide | OOA and OOD Study guide | ||
| Synopses of Design Patterns | A brief description of many Java patterns. | Design Patterns | Tutorials, FAQs, and more | ||
| ootips.org | A large collection of OO tips, techniques, and design patterns. | Top 25 Errors | A list of common security-related coding errors, from SANS.org and CWE.Mitre.org | ||
| www.UML.org | The site for UML standards, tutorials, and more | CVS Tutorial for Eclipse | Also see the CVS Tutorial for NetBeans. Find more at the CVS home page. | ||
| UML Resource Center - IBM | UML tutorials | How to Design a Program | An over your shoulder look at thinking about design | ||
| ArgoUML | Homepage of free UML diagramming tool | Dia | Free diagramming tool (for UML and a lot more) | ||
| 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 | ||
| TextKitTestSuite.java | Junit Testing Example for TextKit.java class | BankAccount.java | Demo using assertions for pre-, post-conditions, invariants | ||
| JUnit.org | Junit Testing | JUnit API JavaDocs | On-line JavaDocs for junit.* package | ||
| LoggingDemo.java | Short demo showing Java SE logging API | ||||
| Collections Tutorial from IBM Developerworks | Tutorial on using Collections | Generics Tutorial from IBM Developerworks | Tutorial on using Generics | ||
| CollectionsDemo.java | Demo of using various Java 5 collections | Generics Tutorial from Sun (PDF) | Tutorial and complete reference to using Generics | ||
| HashCodes | Steps to create your own hashCode methods | GenericDemo.java | Demo of a generic method | ||
| RAM layout | Shows how primitives and objects are referenced. | ReferenceDemo.java | Example of weak and soft reference use | ||
| I18N (Internationalization Tutorial from Sun) | Tutorial on using I18N, Locales, Resource Bundles, ... | ISO-216 international paper sizes | A clear explaination of A4 and other international standard paper sizes. | ||
| 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. | Locales and I18N | Some notes about using Locales and internationalizing programs | ||
| Font concepts | Explains Font terms and concepts used in Java. | ShowFonts.java | Show all local fonts, list font families | ||
| IGreet.java | Uses Locales, ListRecourceBundles for I18N | Stocks.java | An Internationalized Applet | ||
| Version.java | Displays the JVM version in your borwser | Unicode symbols | Applet showing Unicode font listings, plus a few symbols. | ||
| ShowProps.java | Lists Java system properties and their values | PrefsDemo.java | Shows the Java Preferences API | ||
| Multi-Threading Review Notes | A review of the concepts and issues of using Threads | ThreadLocal.java | Demo of ThreadLocal variables | ||
| DiningPhilosophers | Sun's DeadLock Thread Demo | Sort algorithm race | Sun's Multi-thread Sorting Demo | ||
| PServer1.java | Pseudocode of a Print Server | PServer2.java | Improved pseudocode of a Print Server | ||
| Bank.java | Mutli-threaded Demo of synchronized |
Threads.java | Mutli-threaded Demo showing suspend, resume, and stop | ||
| HoopsApp.java | Simple Animation using a Thread | Ssjava1.java | Swing animation, uses Timer | ||
| Greet2.java | Shows non-GUI input with Scanner | FileDemo.java | Shows reading, writing files with encodings. (download UTF-8-demo.txt) | ||
| DirList.java | Prints a directory listing. | FileKit.java | Show how to calculate the MD5 checksum of a file. | ||
| Person.java | 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 Person.java. | ||
| UseDOM.java | XML Demo of DOM API | HelloXML.java | XML Demo of SAX2 API | ||
| DOMDemo.java | Demo of XML DOM parsing | XMLNotepadSetup.exe | A 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 | ||
| NioDemo.java | Uses java.nio classes to copy a file. |
Tutorial for java.nio (PDF) | A clear tutorial on using the many features of
java.nio. |
||
| MemMapDemo.java | Uses java.nio memory-mapped
file. |
||||
| Database Concepts | A brief overview of database concepts, and how to use databases in Java | ||||
| DBDump.java | Displays a table from a Database | Grades.java | MultiThreaded Swing GUI and JDBC Demo | ||
| DerbyDemo.java | JDBC demo of the embedded Derby database | Java DB Manuals | Tutorials and reference for Java DB (a.k.a. Apache Derby) | ||
| Coffee Database | Directions to create an ODBC Text database | SquirrelSQL.org | A (free) GUI Java database client, to work with (nearly) any type of database | ||
| 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 | J5EE Tutorial | A Sun Java EE Tutorial | ||
| Java EE Technology Center | A Sun Java EE developer resources | ||||
| TheServerSide.com | 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 Java EE application server | ||
| Tomcat Setup | Apache's Tomcat web application Server install help for Windows | Credit Card Processing | A brief overview of e-commerce payment processing | ||
| CopyTest.java | Shows Graphic contexts are copies | HeavyLight.java | Shows difference of Heavy and Light weight components | ||
| Logo2D | Java2D Graphics Demo | Jade.java | Fancy Text Rendering | ||
| Smile2.java | Multimedia (with sound) applet | SmileJar.java | Graphics, in a jar | ||
| Printing Demos | Several examples of Java printing | JfileChooserDemo | Shows a GUI file chooser dialog. | ||
| AWT - Swing Demo.java | Simple Swing Demo, Compares with AWT Version | IntCalc.java | Interest Caclulator with Swing
PLAFDemo |
||
| SwingDemo1.java | Simple Swing demo | LblDemo.java | Swing JLabel demo | ||
| MultiLineDemo.java | Shows how to draw text with styles | ||||
| Ssjava2.java | Swing animation, uses JLayerPane |
||||
| JTableDemo.java | Simple JTable Demo | ClipEx.java | Demo of copy/paste clipboard access | ||
| SimpleBean.java | A Simple JavaBean Tutorial | Marquee | Marquee Java Bean | ||
| SBean.java | Simple Java Bean with BeanInfo, runnable jar | Download the BeanBuilder | A GUI Bean Developement Kit | ||
| 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 | ||
| J2ME Step by step (PDF) | Tutorial on J2ME | JNLP API Examples | |||
| ChatServer | Chat room Server | ||||
| Java2 Security | Tutorial on Java Security from Sun | WriteFile.java | A signed Applet to create a file on the local system | ||
| Model Solutions to Assigned Projects | |||||
| Logo2D | Java2D Graphics Demo | Office Hours | Model Solution to Office Hours project #1 | ||