|View Weekly Course Schedule||Other interesting links:|
Resources (examples, ...)
www.oracle.com/technetwork/java/ - The source for the Java
JDK, and more.
On-line version of the Java 8 JDK docs. ( Java 8 API docs.)
docs.oracle.com/javase/ - links to all official Java documentation, including references, guides, and tutorials.
on-line Java Language Reference - Great explanations of language features.
on-line Java Tutorials - Excellent tutorials on all topics, including sample code.
Download the JDK. (For Windows, always use the 32-bit version! After downloading and then running the installer, you need to set the
|Time & Place:||Ref No. 45462: Tuesday, Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427|
Name: Wayne Pollock|
Office & Phone: DTEC–404, 253–7213
DM Office Hours: Monday–Thursday, 3:55–5:25 & 8:30–9:00 PM;
On-line Office Hours: Tuesday–Friday, 12:00 PM (noon)–1:00 PM; or by appointment.
Liang, Y. Daniel, Introduction to Java Programming, Custom Edition
Volume I, ©2013 Pearson/Prentice-Hall:|
ISBN-10: 1-269-24111-7, ISBN-13: 978-1-269-24111-3
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. However, it is probably only available from the HCC-DM bookstore.
(This course is 3 credit hours long.)
“Introduces programming in Java.
This course will cover the basic features of Java,
including procedural programming (datatypes, variables, operators,
control structures, etc.),
an introduction to object-oriented programming concepts
(objects and classes, abstraction, encapsulation, and inheritance),
GUI programming, applets, and error
handling view exceptions.”
The class format will be lecture and discussion; class participation is strongly encouraged. In addition, there will be numerous examples and in-class group programming exercises (model solutions to these and all projects will be provided.)
Students are expected to prepare for each class by completing all reading assignments, reviewing examples and model solutions provided, and practicing programming outside of class. (This is important — you can't learn a skill such as Java programming only by attending class and reading a book. You must practice, practice, practice, several hours each week! If you won't have enough time available, consider auditing the course.)
|Objectives:|| “After completing this course, the student will be able to:
|Prerequisite:||COP 1000, 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
You can obtain Oracle's “JDK”,
including all tools and documentation, for free from
You may use any other Java development tools too if you prefer,
such as eclipse.
You will need your own flash disk, writing materials for note-taking, and three Scantron 882–E or 882–ES forms for the exams.
You can use HawkNet (WebAdvisor) or Florida Virtual Campus (formerly called FACTS.org) 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 may be 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 netid.hccfl.edu 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 (hcclive.hccfl.edu).
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 www.hccfl.edu/alerts/.
Computers with JDK (and other tools, such as Eclipse) are located in the computer science department open lab, in DTEC–462. Lab hours are:
(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
A=90-100, B=80-89, C=70-79, D=65-69,
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 or more weeks.
Although there will be in-class group exercises,
you must work individually on the projects,
typically outside of regular class hours.
Programming 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, etc. (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). Further details will be provided with your first project. (See also submitting assignments below.)
Homework assignments (also known as take-home quizzes)
are assigned from the class web page at various times.
These questions come from the text; the
current version no longer include “review questions” at
the end of each chapter.
The homeworks are from the “Check Point” questions
spread throughout each chapter.
(However, the author does have end of chapter multi-choice quizzes on-line,
for self-study purposes.
There is a link in the class resources, below.)
You may work together in small groups (two or three people) for the homework assignments, provided the names of all who worked together are listed. Each student must still submit their own copy (for feedback, and in case you don't list the others you worked with).
Homework assignment questions are intended to focus your studying of the readings and to stimulate class questions and discussion. For this reason, they are generally due before the class where that material is covered. It is not intended that students can answer all the questions assigned, but you must show you have thought about the questions and read the required material in order to earn a “B” grade or higher.
All assignments (except when noted) should be submitted by email to
Please use a subject such as
“Java Homework Assignment #1 Submission”,
so I can tell which emails are submitted work.
Send only one assignment per email message.
Email your Java source and HTML files by
(Please do not send as attachments, except
when noted in the assigment directions.)
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 (and other) source is correct before you send the
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.
The HCC email server automatically accepts and
silently discards email with certain types of attachments.
If you must send email to my Internet (non-YborStudent) email
account please avoid using any attachments, but especially
To send email with a “
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 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.
|HCC Academic Calendar:|
|Classes Begin:||Monday 8/19/2013 (First class meeting: Tuesday 8/20/2013)|
|Add-Drop Ends:||Friday 8/23/2013|
|Last Day to Withdraw:||Saturday 10/26/2013|
|Classes End:||Monday 12/9/2013 (Last regularly scheduled day of class: Thursday 12/5/2013)|
|Grades Available:||Wednesday 12/11/2013 (from Florida Virtual Campus (formerly called FACTS.org), or from HawkNet)|
|HCC is closed on:||
Monday 9/2/2013 (Labor Day), |
Friday 10/18/2013 (College Day),
Monday 11/11/2013 (Veterans' Day),
Thursday–Saturday 11/28/2013–12/1/2013 (Thanksgiving Holiday)
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.|
Show me and I'll understand.
Involve me and I'll learn.”
|— Lakota Indian saying|
|“Learning is not a spectator sport!”||— Chickering & Gamson|
|Topics, Assigned Readings, and Assignment Due Dates|
Course introduction, LAN use.
Open Lab procedures and hours.
Role of lab techs.
Computer, Compiler basics, JDK tools
(and installation), edit-compile-run cycle.
First Java program, console output.
OOPS, programming basics
(comments, use of white-space, program style,
Readings: Chapter 1, Soft Skills
Readings: Chapters: 13.1–13.3, 20.1–20.3, 1.11, On-line Java docs (just learn how to navigate the site), and Java program style
[Bucs game at home today @7:30 PM;
expect traffic delays and parking problems.
Parking passes will be distributed in class beginning 8/22]
Declaring variables, identifier naming rules. Data types. Differences between Java primitive numeric types and object references. Big numbers. Using
Readings: Chapters 2, 8.5.4, 10.14
|9/2 (Mon)||Labor Day — HCC Closed|
Converting types (cast).
Console input with
Readings: Chapters 2, 3.16–3.18, 5.10, 5.11, 8.6.2, 9, 10.12, 10.13, Liang on-line Java supplements: III-H (regular expressions)
Homework Assignment #1 due 9/5
block statements, |
Readings: Chapters 3, 4
Homework Assignment #2 due 9/12
Project #1 due 9/10
Methods (a.k.a. functions): calling, returning values,
Pass by reference versus pass by value.
Method signatures and overloading.
Getters and setters (accessors and
mutators) methods, for JavaBean standard.
Design guidelines for methods: structured programming, testing,
and good comments.
Scope and lifetime: local, instance, and class variables. Memory concepts: stack, heap, review garbage collection. Recursion overview.
Readings: Chapter 5
Project #2 due 9/24
Overview of |
Arrays: declaring, using, initializing, linear search, sorting, binary search. for-each loops. 2-d arrays. Copying arrays with
Using command line arguments.
Readings: Chapters 14.1–14.6, 6, 7, 9.7
Homework Assignment #3 due 10/3
Object concepts: object references and assignment,
construction of objects (constructors, classLoader,
initialization of local, instance, class (|
Object-orientation, design and implementation of classes. Abstraction and encapsulation. Object properties (a.k.a. fields, attributes, columns, instance variables) and class properties. Adding a test driver to classes. Immutable objects.
Readings: Chapters 8,10
Project #3 due 10/15
Homework Assignment #4 due 10/17
|10/18 (Fri)||Faculty In-Service (All-College) Day — HCC Closed|
[USF Bulls game at home Thursday, 10/24
@8:25 PM; expect traffic delays and parking problems]
Scope (part 2),
Readings: Chapters 8.6, 8.8, Appendix D (“Java modifiers”), Packages (PDF of Liang supplement III-G), Javadoc lecture notes
OOP concepts: Inheritance, |
Readings: Chapter 11
Interfaces, Abstract classes and methods.
Nested, inner, and anonymous classes.
Readings: Chapters 15, 16.4, 16.5
Project #4 due 11/5
Homework Assignment #5 due 11/5
|11/11 (Mon)||Vetrans' Day — HCC Closed|
Dates, Calendar, timestamps.
Readings: Chapters 8.6.1, 15.4, 11.11
Homework Assignment #6 due 11/12
Event-driven, graphics programming with AWT and
Events, listeners (handlers), components, and containers.
Readings: Chapters 12, 16
Project #5 due 11/14
Graphics programming with the AWT and Swing (continued:
using layout managers, additional components and event types).
Readings: Chapter 17
Homework Assignment #7 due 11/26
|11/28||Thanksgiving Holiday (Thu 11/22 – Sat 11/24) — HCC Closed|
Applets: life-cycle (or milestone) methods, security,
Multi-media (adding audio and graphics, using ImageIO).
Creating and using jar files.
Readings: Chapter 20, Using jar (PDF of Liang supplement III-Q)
Project #6 due 12/3
Homework Assignment #8 due 12/5
|Self-test questions from text||Multiple-choice qizzes you can take to test your understanding||On-line textbook supplements||Extra information by the textbook author (see also videonotes at www.PearsonHigherEd.com/liang)|
|Computer and Programming Overview||Programming background information||Photo of PDP-11 console||The old way to enter programs was via switches on a console|
|Windows Shell||A tutorial for using the Windows command line||PC hardware (svg)||A graphic showing the components of a modern personal computer|
|Assembly Demo||Shows a C program with its assemby and machine code (in hex)||Soft Skills||Discusses certifications, job interviewing tips, and required non-technical skills needed to find and keep a job|
|TampaJUG.org||Tampa Bay area Java Users Group||Thinking in Java||A free (PDF) book by Bruce Eckel|
|Java Glossary||A Java FAQ with lots of answers|
|JavaWorld.com||Online Java Magazine, many good articles in their archives||www.JavaRanch.com||Book reviews, sample code, practice certification exams, tutorials, and more; geared for beginners|
|Java Developer Tutorials||On-line tutorials and links for training, from Oracle||JavaCoffeeBreak.com||Another good Java beginner site featuring reviews, samples, tutorials, and more|
|ootips.org||A large collection of OO tips, techniques, and design patterns||Java Certification Programs||Information about Oracle's Java certifications|
|Oracle Certified Associate (OCA) exam topics||Shows what topics you need to know for this certificate||Oracle Certified Professional (OCP) exam topics||Topics for Oracle's higher-level Java certificate|
|Greet1.java||Traditional first program, non-GUI||HelloWeb.java||A first applet|
|Greeter.java||Shows creation and use of objects||How To Program||A walk-through of a sample Java programming assignment|
|How to start a programming assignment||Excellent advice from Patricia Shanahan (See also her advice on Debugging Strategy)||How To Write Unmaintainable Code||A humorous look at what not to do|
|GUIGreet.java||Shows simple GUI program||HoopsApp.java||An applet showing simple animation (bouncing hoops)|
|RAM Layout Graphic||Compares primitive versus object reference variables||Static Fields||An explanation of static versus non-static fields|
|Type Chart||Java primitive types reference chart||Math Oddities||A demo showing some tricky points of math in Java|
|Binary Number Chart||Tutorial for octal, decimal, hex, and binary equivalents||Round.java|| Shows formatting with the legacy
|BigNum.java||Demo using java.lang.math.BigDecimal andBigInteger||Java operators||A complete list of the operators in the Java language (not listed in precedence order however)|
|www.PurpleMath.com||Good site for basic math and algebra tutorials (something all technology workers need to know)||ASCII Collating Sequence||A chart showing the ordering of ASCII characters|
|Unicode Symbols||A few symbols, shown in a fancy Java Applet|
|Greet2.java|| Shows non-GUI simple input with
||ConsoleDemo.java||Shows console input and output, including how to read passwords|
||Greet3.java|| Shows simple GUI input and output using
|Java Regular Expression Summary||See also java.util.regex.Pattern||regular-expressions.info/java||Tutorial for Java Regular Expressions|
|RegExLab.jar||Download Java Regular Expression Lab (View source)|
|MsgBox.java||Prints an input string in a box||MsgBox2.java||MsgBox, but uses a method|
|MsgBox3.java||MsgBox, but uses several methods||Overload.java||Shows overloaded method resolution|
|InvokeDemo.java||Illustrates different ways to invoke methods||ParamPassingDemo.java||Demonstrates passing primitives and objects to methods|
|Stock.java||Shows constructors||StackGoBoom.java||A Demo showing a stack overflow|
|Widget.java||Demo showing Java's default (no-arg) constructor|
|Fibonacci.java||A simple demo of using recursion; compare with FibonacciMemo.java (See also this Recursion tutorial)||Palindrome.java||A demo of using recursion to see if the command line args form a palindrome|
|Judges.java||Uses Scanner, averages||StringTest.java||How well do you know Strings?|
|ExceptionDemo.java||Shows catching and throwing of exceptions||TryTest.java||How well do you know try-catch-finally?|
|ThrowExceptionDemo.java||Shows detecting a problem and throwing an Exception||TwentyOne.java||A stand-alone “21” card game (To play, download TwentyOne.jar and double-click)|
|Average.java||Uses arrays, shows nums > ave||AverageGPA.java||A more realistic version of Average.java|
|2D Array graphic (PNG)||Shows how 2-dimensional arrays look in RAM||DeepCopy.java||Demo showing how to make deep copies of arrays and other ojects (uses advanced techniques not covered in this course)|
|SearchDemo.java||Shows linear and binary searching algorithms||MyGreet.java||Uses command line arguments|
|ArrayTest.java||How well do you understand arrays?|
|Java Modifiers||A complete list of all Java modifiers||ScopeTest.java||How well do you know scope and lifetime issues?|
|PkgDemo||Demo showing how to create & use packages (See also Oracle's Java packages tutorial)||Greeter.java - Javadoc|| Greeter with Java “doc” comments added.
(See also lecture notes on using
|finding classes in Java 7||How various Java tools find classes (See also the documentation for CLASSPATH, including class path wildcards)||Javadoc Tool Manual|| Reference information on the Java 7
|Fruit1.java||Demonstrates inheritance||Fruit2.java||Shows overriding, polymorphism|
|ConstuctorDemo.java||Shows order of constructor calls under inheritance||Carnivore.java||An illustration of polymorphism|
|Fruit3.java||Shows abstract classes & methods||PolymorphismDemo.java||The gory details of polymorphism: how it works under the hood|
|OverrideTest.java||Shows when a method is overloaded not overridden||C3.java||Shows “shadowing” of instance variables|
|GrandparentDemo.java||Shows overriding (polymorphism) and hiding with Java inheritance|
|GiftBasket.java||Shows interfaces and more||InnerClassDemo.java||Shows how to use inner classes|
|Nested.java||Shows simple anonymous inner class use||Shadow.java||Shows shadowing with nested and inner classes|
|DateTime.java||Shows Dates, Times, and Calendars||InheritTest.java||How well do you know how inheritance affects scope?|
|CalendarDemo.java||Shows fields in Calendars||CollectionsDemo.java|| Shows
|JavaTimeDemo.java||Shows the new (since Java 8) java.time packages|
|Event Chart||Shows Events, Listeners, and useful methods||EventDemo.java||Simple Applet showing AWT event handling|
|SimpleGUI.java||Shows windows and events||Popup.java||A pop-up window, mouse events|
|FrameTst.java||Shows Window controls and events||PackDemo.java|| Shows the effect of using
|Sketcher.java||Shows mouse events||DrawIt.java||Applet, shows almost everything GUI|
|SwingBtns.java||Shows some features of Swing buttons||Font concepts||Explains font terms and concepts used in Java|
|MenuDemo.java||Shows how to use Menus||Standard Windows Keyboard Shortcuts||Part of Microsoft's user interface design guidlines (scroll down to “General Shortcut Keys for Applications”)|
|HeavyLight.java||Shows the difference between heavyweight and lightweight Components||OverlapHeavy.java||Shows what happens when AWT heavyweight components overlap|
|IntCalc.java||Interest Caclulator with Swing “PLAF” demo||PaintDemo.java||Shows painting differences with heavy and lightweight Components, with wallpaper|
|Personality.java||Shows Buttons, events (Applet)||PersonDev.java||Development version of Personality.java|
|GUIGreet2.java||Shows multi-window fancy GUI||TTT.java||Tic-Tac-Toe (applet)|
|Smile2.java||Full multimedia applet||SmileJar.java||Use of Jar files (Applet displays a GIF)|
|Smile.java||Multimedia Swing applet (See also this Smile Swing Applet - ImageIO version)||UIDemo||AWT user interface demo|
|DiningPhilosophers||Sun's DeadLock Thread Demo||Sort algorithm race||Multi-thread Sorting Demo|
|Greeter — Threads||Multi-threaded demo using Greeter.java||Swing image demo|| Demo showing how to load an image from a
|Hoops.java||Simple animation (GUI)||Hoops2.java||A “flicker-free” version of Hoops.java|
|Asteroids.java||Java 1.0 Applet game with source||Guitar.java||Guitar tuner Applet (sound demo), with source|
|Clock Applet||Nice clock applet with many settable parameters||WebWar.zip||Action game with Java 1.0 source|
|FileKit.java||Calculates MD5 Digests of files||LoaderDemo.java||How to construct URLs to resources (in jars)|
|Model Solutions to Assigned Projects|
|LogoDemo.java||Swing GUI application showing fancy 2D drawing||GuessingGame.class||Simple number guessing game|
|TempConv.java||Temperature conversion Applet||TempCon2.java||Temperature conversion Applet w/extras|
|Histogram.java||Displays a histogram (non-GUI)||TxtCrypt.java||A fancy Applet to encrypt text|