|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.)
On-line version of the Java 10 JDK docs. (Java 10 API docs.)
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. After downloading and then running the installer, you need to set the
Supplements for the Liang text
What would the world be like without Java? View the Javapocalypse (YouTube video) to find out.
|Time & Place:|| Ref No. 13819: Tuesday, Thursday,
4:00–5:15 PM, Dale Mabry Room
Ref No. 19063: Tuesday, Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427
Name: Wayne Pollock
Office & Phone: DTEC–404, 253–7213
View my Office Hours.
Skype ID: firstname.lastname@example.orgHomepage URL: https://wpollock.com/
Liang, Y. Daniel, Introduction to Java Programming, Brief Version
11th Edition ©2018 Pearson/Prentice-Hall:|
ISBN-10: 0-13-461103-9, ISBN-13: 978-0-13-461103-7
Note there may be a possibly cheaper international edition. Despite vendors claims, the content is not always exactly the same.
(This course is 3 credit hours long.)
“Introduces programming in Java.
This course will cover the basic features of Java, including procedural
programming (data types, variables, operators, control structures, etc.),
an introduction to object-oriented programming concepts (objects and classes,
abstraction, encapsulation, and inheritance), GUI programming,
error handling with exceptions, and other Java technologies.”
The class format will be lecture and discussion; class participation is strongly encouraged. In addition, there will be numerous examples and some 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
version 8 or newer of the Java development kit (JDK).
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.
Note that Canvas is not used for this course.
You will need your own flash disk (preferably USB-3 compliant), writing materials, and Scantron 882–E or 882–ES forms.
You can use HawkNet (WebAdvisor) to obtain your final grade for the course. You can use your assigned Hawkmail (Hawkmail365) email address or use Canvas, 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 your official HCC account 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).
The college provides wireless network connections for students and guests
on Dale Mabry campus.
For students, select the network
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/hawkalert/.
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 immediately when turned in. They are graded later, usually after the project deadline has passed. Further details will be provided with your first project. (See also submitting assignments below.)
Homework assignments are assigned from the class web page at various
These questions came from the text; some may be based on required
(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 are encouraged to 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 (so everyone gets feedback).
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
via Canvas, or directly to
Please use an appropriate subject such as
“Java I Homework Assignment #1 Submission”,
so I can tell which emails are submitted work.
Send only one assignment per email message.
Email your Java source files and HTML files (if any)
Please send projects (Java source code) as attachments, since most
mail programs will ruin your indentation.
Send all other assignments (homeworks) by copy-and-paste,
except when noted in the assignment 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 or until I have provided grading feedback. Assignments submitted after that will not count toward your grade except as allowed by the course late policy. You cannot resubmit an assignment for credit once it has been graded.
If you must send email to my HCC email or other email
addresses, please avoid using any attachments, especially
To send regular 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!) The most reliable option currently is to send messages via Canvas.
If you have an email problem, you may turn in a printout instead or bring your project to me on a flash drive. 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/20/2018 (First class meeting: Tuesday 8/21/2018)|
|Add-Drop Ends:||Friday 8/24/2018|
|Orientation Period Ends:||Tuesday 8/28/2018|
|Last Day to Withdraw:||Saturday 10/27/2018|
|Classes End:||Tuesday 12/11/2018 (Last class meeting: Tuesday 12/11/2018)|
|Grades Available:||Thursday 12/13/2018 (from HawkNet)|
|HCC is closed on:||
Saturday–Monday 9/1/2018–9/3/2018 (Labor Day), |
Tuesday 10/23/2018 (All-College Day – Faculty In-Service Day)
Saturday–Monday 11/10/2018–11/12/2018 (Veterans' Day),
Thursday–Sunday 11/22/2017–11/25/2017 (Thanksgiving Holiday)
Dropping or withdrawing may have an impact on financial aid, veteran’s benefits, or international student visa status. Students are encouraged to consult with a financial aid, the VA certifying official, or the international student advisor, as appropriate, prior to dropping or withdrawing from class.
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 102, voice phone: (813) 259–6035, FAX: (813) 253–7336.
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, 2.16, Soft Skills
[Bucs game at home Thursday 8/30 @7:30 PM.
Expect traffic delays, public bus schedule changes, and parking problems.
Parking passes will be distributed in class prior to game day.]
Readings: Page 38 (
|Sat 9/1 – Mon 9/3||Labor Day — HCC Closed|
Declaring variables, identifier naming rules.
Java primitive numeric types and object references.
Readings: Chapters 2.1–2.10, 10.9
Project #1 due 9/4
Common logic errors: over- and under- flow, floating point comparison,
rounding errors, and object comparison.
Converting types (cast).
Auto-boxing, wrapper classes, object assignment, and defining immutable
Readings: Chapters 2.11–2.18, 3.7, 4, 10.8, 10.10, 10.11
Homework Assignment #1 due 9/13
block statements, |
Readings: Chapters 3, 5
Formatted output (|
Readings: Chapter 2.3, Regular Expression Summary and resources, Appendix H (regular expressions), JOptionPane (PDF of Liang supplement III-AB)
Homework Assignment #2 due 9/27
Project #2 due 10/2
[Soccer game at home Thursday 10/11 @7:30 PM.
Expect traffic delays, public bus schedule changes, and parking problems.
Parking passes will be distributed in class prior to game day.]
Methods (a.k.a. functions): calling, returning values, passing parameters. 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. Access modifiers.
Readings: Chapters 6, 9.8, 9.10, 9.13
Homework Assignment #3 due 10/9
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.
(Test #2 up to here)
Memory concepts: stack, heap, review garbage collection. Recursion overview. Object concepts: construction of objects (constructors, classLoader, initialization of local, instance and class (
Project #3 due 10/16
|10/23||Faculty In-Service (All-College) Day — HCC Closed|
Overview of |
Readings: Chapters 12.1–12.6
Arrays: declaring, using, initializing.
for-each loops with arrays.
Readings: Chapters 7, 8.1–8.3
Homework Assignment #4 due 10/30
Using partially filled arrays.
linear search, sorting, binary search, complexity and “big O”
Copying arrays with |
Using command line arguments.
Readings: Chapters 7, 8.1–8.3
|Sat 11/10 – Mon 11/12||Veterans' Day — HCC Closed|
Creating and using packages, |
Readings: Chapters 8.6, 8.8, Appendix D (“Java modifiers”), Packages (PDF of Liang supplement III-E), Using jar, Javadoc (PDF of Liang supplement III-Y) Javadoc lecture notes
Project #4 due 11/15
OOP concepts: Inheritance, |
Readings: Chapter 11
|11/22||Thanksgiving Holiday (Thu 11/22 – Sun 11/25) — HCC Closed|
Interfaces, Abstract classes and methods.
Nested, inner, and anonymous classes.
Lambda expressions and method references.
Readings: Chapters 13, 15.4, 15.5, 15.6, Lambda Expressions lecture notes
Project #5 due 11/27
Homework Assignment #5 due 11/29
Dates, Calendar, timestamps.
Readings: Chapters 13.4, 11.11, 11.12, Java Date & Time Lecture Notes, Oracle Date-Time Tutorial
Homework Assignment #6 due 12/6
Event-driven, graphics programming with AWT and
Brief JavaFx overview.
Events, listeners (handlers), components, and containers.
Readings: Chapters 15, 14.2, AWT Tutorial (archived copy), Oracle swing Tutorial, Event handling in AWT and swing
Finish material, review.
(Time permitting: GUI overview.)
Project #6 due 12/11
|How to ask smart questions online||Good advice for asking for help from online forums||StackExchange||A good place to ask questions or search for your question since someone has probably already answered it here (See also StackOverflow)|
|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 assembly 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|
|Java Glossary||A Java FAQ with lots of answers||TIOBE Index||Programming language popularity index, updated monthly|
|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|
|LearnJavaOnline.org||Online and interactive Java tutorials||CodingBat.com||Online and interactive Java (and Python) tutorials|
|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|
|Java Program Style||Guidelines on the correct style of Java program source code||Comments in Code (PDF)||A description of different types of comments and when to use them|
|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 (See also TestSum.java for demos of using floating point and loops)|
|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 (jar)||A few symbols, shown in a fancy swing application with a menu||Unicode.org||Lots of information about Unicode, including Current emoji chart and the Unicode character index|
|Java Regular Expression Summary||See also java.util.regex.Pattern, the reference for Java regular expressions||regular-expressions.info/java||Tutorial for Java Regular Expressions (There are many of these)|
|RegexDemo.java||A short demo showing several Java regular expression features||regexlib.com||A library of useful regular expressions|
|Regular Expression Class Notes||Lecture Notes for Java Regular Expressions||RegExLab.jar||Download Java Regular Expression Lab (View source)|
||ConsoleDemo.java||Shows console input and output, including how to read passwords|
|Greet2.java|| Shows non-GUI simple input with
||Greet3.java|| Shows simple GUI input and output using
|ScannerDemo.java|| Shows skipping bad input with
||ScannerDemo2.java|| Shows a better way to use
|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|
|Java Modifiers||A complete list of all Java modifiers||ScopeTest.java||How well do you know scope and lifetime issues?|
|Software Engineering (PDF)||Some very brief notes on non-coding aspects of programming|
|Fibonacci.java||A simple demo of using recursion; compare with FibonacciMemo.java (See also this Recursion tutorial)||StackGoBoom.java||A Demo showing a stack overflow|
|Palindrome.java||A demo of using recursion to see if the command line args form a palindrome|
|Stock.java||Shows constructors||Widget.java||Demo showing Java's default (no-arg) constructor|
|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)|
|DeansList.java||Display students on the Dean's list (GPA greater than 3.0), without using an array (Sample data in StudentRecords.txt)||AverageGPA.java||Shows using arrays to display students with greater than average GPAs (Sample data in StudentRecords.txt)|
|DeepCopy.java||Demo showing how to make deep copies of arrays and other ojects (uses advanced techniques not covered in this course)||MyGreet.java||Uses command line arguments|
|SearchDemo.java||Shows linear and binary searching algorithms||Big O notation in plain English||A good explanation from StackOverflow.com (Another explanation can be found at www.perlmonks.org)|
|2D Array graphic (PNG)||Shows how 2-dimensional arrays look in RAM||ArrayTest.java||How well do you understand arrays?|
|PkgDemo||Demo showing how to create & use packages||Lecture notes for Java packages, modules, and Jar files (PDF)||Modules are new since Java 9 See also Modules Quick-Start Guide, and State of the Module System for a through description)|
|Java packages tutorial||Oracle's standard tutorial on packages||finding classes in Java 8||How various Java tools find classes (See also the documentation for CLASSPATH, including class path wildcards)|
|Smile.jar||Demo showing creating and using Jar (Java ARchive) files||Module Demo||Demo showing creating and using a Java 9 module|
|JAR files revealed||IBM DeveloperWorks tutorial on creating and using JAR (Java ARchive) files||
|| Reference for the
|Javadoc Demo (Greeter.java)|| javadoc tool demo, on class Greeter with Java “doc”
(See also lecture notes on using
||Javadoc Tool Manual|| Reference information on the Java 8
|www.w3schools.com||High-quality, free, interactive tutorials on HTML (and other web technologies)|
|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||Shadow.java||Shows shadowing with nested and inner classes|
|GiftBasket.java||Shows interfaces and more||InheritTest.java||How well do you know how inheritance affects scope?|
|Nested.java||Shows simple anonymous inner class use||InnerClassDemo.java||Shows how to use inner classes|
|AnonDemo.java||Demo showing anonymous local class use|
|FunctionDemo.java||Shows trivial example of (lambda) function use||Lambda Notation||(PDF) Lecture notes for lambda notation and method references|
|Rad2Deg.java||Demo showing a lambda function to convert Radians to Degrees||Lambda Expressions||Oracle's official Tutorial|
|DateTime.java||Shows Dates, Times, and Calendars||Java Date and Time Lecture Notes||Covers both the old API and the new (since Java 8) API|
|CalendarDemo.java||Shows fields in Calendars||CollectionsDemo.java|| Shows
|JavaTimeDemo.java||Shows the new (since Java 8) java.time packages||DeduplicateList.java|| Shows using
|Java AWT Tutorial||Official Java tutorial (Taken down in 2013, but resurrected using the Internet Archive)||Swing Tutorial||Official Java tutorial on swing; you can skip the NetBeans section (See also IBM DeveloperWorks swing tutorial, and the JavaPoint.com swing tutorial)|
|Event Chart||GUI event handling tutorial; shows Events, Listeners, and useful methods||EventDemo.java||Simple AWT runnable JAR showing event handling (Download EventDemoAWT.jar)|
|EventDemoSwing.java||Simple Swing runnable JAR showing event handling (Download EventDemoSwing.jar)|
|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 (See also MouseEventDemo.java)||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 guidelines (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|
|Java tutorial: Using Layout Managers||Shows how to position and size components in various ways||JavaPoint Layout Manager Tutorial||Another decent tutorial (more pictures)|
|Personality.java||Shows Buttons, events, and layouts (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||Smile.java||Using runnable Jar files (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.jar||GUI application showing fancy 2D drawing||GuessingGame.class||Simple number guessing game|
|TempConv.jar||GUI Temperature conversion chart|
|Histogram.java||Displays a histogram (non-GUI)||TxtCrypt.jar||A GUI program to encrypt text|