View Weekly Course Schedule | Other interesting links: |
Resources (examples, ...) |
www.oracle.com/java/technologies/ - The source for Oracle Java
SE
JDK, and more.
See also this list of
open source alternatives.
On-line version of the Java 11 LTS JDK docs. (Java 11 API docs.) On-line version of the Java 15 JDK docs. (Java 15 API docs.) on-line Java Language Reference - Explanations of language features. on-line Java 8 tutorials - Excellent tutorials on all topics, including sample code. Download Oracle's JDK. After downloading and then running the installer, you need to set the PATH environment variable.)
Supplements for the Liang text, 11th edition What would the world be like without Java? View the Javapocalypse (YouTube video) to find out. |
Time & Place: | Ref No. 42709: Tuesday, Thursday,
4:00–5:15 PM via Zoom
Ref No. 42710: Tuesday, Thursday, 7:00–8:15 PM via Zoom | ||||||||
---|---|---|---|---|---|---|---|---|---|
Instructor: |
Name: Wayne Pollock E-mail: Internet: Office & Phone: DTEC–404, 253–7213 View my Office Hours.
Skype
ID: wpollock@hccfl.edu
Homepage URL:
https://wpollock.com/
|
||||||||
Text: |
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. | ||||||||
Description: |
(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), 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. | ||||||||
Canvas and Software: | The course materials are available online; you will need to have a computer
which meets the minimum requirements as stated in the Canvas Student Guide and
Internet access in order to complete the course.
You will need to use Zoom. While Zoom can be used from a web browser, I recommend installing Zoom on your computer. Download Zoom from Zoom.us. You can then read Zoom user guides. Be sure to keep your Zoom software up to date! Students are responsible for accessing Canvas and Zoom and familiarizing themselves with navigation of the web site. The instructor is not responsible for the breakdown of technology including, but not limited to any of the following: inability to submit assignments, downtime of the Canvas server, operating system breakdowns, incompatible software, Internet connections; nor any personal challenges you may face while dealing with the 'online' delivery system. All assignments can be performed on any computer that supports version 11 or newer of the Java development kit (JDK). You can obtain a “JDK”, including all tools and documentation, for free from various sources such as www.oracle.com/technetwork/java/ or other places discussed in class. You may use any other Java development tools too if you prefer, such as Eclipse IDE. Only the standard JDK tools (which are all command line) and a text editor are required. |
||||||||
HCC Facilities and Resources: |
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. For more information, visit https://www.hccfl.edu/support-services/hawk-alert. HCC DM Open LabComputers 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
| ||||||||
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 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: |
Homework assignments are assigned from the class web page at various
times.
These questions came from the text; some may be based on required
on-line readings.
(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. | ||||||||
Submitting Assignments: |
All assignments (except when noted) should be submitted by email
via Canvas, or directly to
or
wpollock@hccfl.edu.
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.
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 (and other) 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 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. Email Issues Most modern email servers, including Microsoft (used by HCC) and Gmail will automatically and silently discard email with certain types of attachments. These include any files whose extension indicates the file is executable. Mail servers will look inside of zip attachments for such files as well. Note that scripts are deemed executable as well, so you cannot send a website with any “.js” (JavaScript) files! Using Canvas (Canvas) to send messages with such attachments avoids this issue.
If you must send email to my HCC email or other email
addresses, please avoid using any attachments, especially
“zip” files.
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/17/2020 (First class meeting: Tuesday 8/18/2020) |
Add-Drop Ends: | Friday 8/21/2020 |
Orientation Period Ends: | Wednesday 8/26/2020 |
Last Day to Withdraw: | Saturday 10/24/2020 |
Classes End: | Tuesday 12/8/2020 |
Grades Available: | Thursday 12/10/2020 (from HawkNet) |
HCC is closed on: |
Saturday–Monday 9/5/2020–9/7/2020 (Labor Day), Tuesday 10/20/2020 (Faculty In-Service Day), Wednesday 11/11/2020 (Veterans' Day), Thursday–Sunday 11/26/2020–12/29/2020 (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.
Any student whose disability falls within the American Disabilities Act (ADA) and requires accommodations should contact the Office of Services for Students with Disabilities (OSSD). The OSSD works with students and faculty members to identify reasonable accommodations and academic adjustments. If you anticipate or experience any barriers to learning in your courses, please discuss your concerns with your instructor and with the OSSD office on your campus to develop an implementation plan together.
We highly encourage you to submit your accommodation requests within the first two-weeks of the semester because the accommodations are not applied retroactively. With that in mind, you are encouraged to seek assistance from the OSSD as soon as possible, and to present any accommodations/academic adjustment letter you receive to your instructor immediately upon receiving it.
Contact information:
Website: Office of
Services to Students with Disabilities
Location: Dale Mabry campus: Student Services Building (DSTU)
Room 102
Voice phone: (813) 259–6035,
FAX: (813) 253–7336.
You can directly contact Dale Mabry OSSD staff via email:
Veronica Lugo at vlugo2@hccfl.edu or Ana Barrera at abarrera2@hccfl.edu.
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 |
Dates Tue Thu |
Topics, Assigned Readings, and Assignment Due Dates |
---|---|
8/18 8/20 |
Course introduction.
Java overview.
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,
main method, common errors and messages).
Readings: Chapter 1, 2.16, Soft Skills |
8/25 8/27 |
Using import and packages.
Using Java API docs (and deprecation).
Simple GUI programs, basic graphics (coordinates,
Graphics class methods:
drawXXX , fillXXX ,
and setXXX ).
Using Font and Color classes.
Newer Graphics2D methods.
Syntax, Logic, and Runtime errors.
Readings: Page 38 ( import );
Chapters:
1.11,
On-line Java docs
(just learn how to navigate the site),
and Java program style,
Oracle
tutorial: Getting Started with Graphics
|
9/1 |
Declaring variables, identifier naming rules.
Data types.
Differences between
Java primitive numeric types and object references.
Big numbers.
Using static final for constants.
final for primitives versus for object references.
Readings: Chapters 2.1–2.10, 10.9 Project #1 due 9/1 |
9/3
9/8 9/10
|
Common logic errors: over- and under- flow, floating point comparison,
rounding errors, and object comparison.
Expressions.
Converting types (cast).
Auto-boxing, wrapper classes, object assignment, and defining immutable
classes.
Using static methods of java.lang.Math
and java.util.Random .
Unicode.
Working with String s and StringBuilder .
Readings: Chapters 2.11–2.18, 3.7, 4, 10.8, 10.10, 10.11 Homework Assignment #1 due 9/10 |
9/15 9/17 |
Control structures:
block statements, if statement, selection
operator, switch statement.
Boolean expressions, operators, and review comparing integer, floating
point, and object values (especially String ).
The null value.
Loops: while , do ,
and for .
The break and continue statements.
Readings: Chapters 3, 5 |
9/22 | Exam #1 — From Java overview through control structures |
9/22 9/24
9/29
|
Regular Expressions.
Formatted output (PrintWriter , printf ).
Console input with Scanner (tokenizing).
Console I/O redirection.
Simple GUI input and output with JOptionPane .
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/24 Project #2 due 9/29 |
10/1
10/6 10/8
|
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.
Readings: Chapter 6, Software Engineering lecture notes Homework Assignment #3 due 10/6 |
10/13 10/15 |
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.
Scope and lifetime: local, instance, and class variables.
Access modifiers.
Memory concepts: stack, heap, review garbage collection.
Recursion overview.
Object concepts: construction of objects (constructors, classLoader,
initialization of local, instance and class (static )
variables, and of objects.
The this reference.
Garbage collection and finalizers.
Immutable objects.
Readings: Chapters 9, 10 Project #3 due 10/13 |
10/20 | Faculty In-Service Day — HCC Closed |
10/22 |
Overview of Exception s
(and try – catch – finally );
checked and unchecked exceptions.
Readings: Chapters 12.1–12.6 |
10/27 10/29 |
Arrays: declaring, using, initializing.
for-each loops with arrays.
ArrayLists.
Readings: Chapters 7, 8.1–8.3, 11.11, 11.12, Homework Assignment #4 due 10/27 |
10/29 | Exam #2 — From regular expressions through exceptions |
11/3 11/5 |
Using partially filled arrays.
linear search, sorting, binary search, complexity and “big O”
notation.
2-d arrays.
Copying arrays with clone and
System.arraycopy .
Shallow versus deep copy.
Using command line arguments. Readings: Chapters 7, 8.1–8.3 |
Wed 11/11 | Veterans' Day — HCC Closed |
11/10 11/12 |
Creating and using packages, CLASSPATH .
Introduction to Java 9 modules.
Commenting classes with “doc” comments and using the
javadoc tool.
Creating and using Jar files.
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/12 |
11/17 11/19 |
OOP concepts: Inheritance, super ,
polymorphism (overriding, early and late binding),
instanceof , super .
Interfaces, abstract classes and methods.
Homework Assignment #5 due 11/19 Readings: Chapter 11 |
11/24 |
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/24 |
11/26 | Thanksgiving Holiday (Thu 11/26 – Sun 11/29) — HCC Closed |
12/1 12/3
12/8
|
Dates, Calendar, timestamps.
Readings: Chapters 13.4, Java Date & Time Lecture Notes, Oracle Date-Time Tutorial Homework Assignment #6 due 12/3 |
12/4 |
Event-driven, graphics programming with AWT and
Swing.
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 |
12/11 |
Finish material, review.
(Time permitting: GUI overview.) |
12/8 |
Exam #3
— From Arrays (10/27) through Dates and Times (12/8)
Project #6 due 12/8 |
Resources | |||||
---|---|---|---|---|---|
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
java.text.* formatter classes |
||
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) | ||
PrintfDemo.java | Using printf (or String.format ) to format output |
ConsoleDemo.java | Shows console input and output, including how to read passwords | ||
Greet2.java | Shows non-GUI simple input with Scanner |
Greet3.java | Shows simple GUI input and output using
JOptionPane |
||
ScannerDemo.java | Shows skipping bad input with Scanner |
ScannerDemo2.java | Shows a better way to use Scanner for interactive console
programs |
||
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 | ScopeDemo.java | Demo showing some scope issues | ||
Software Engineering (PDF) | Some very brief notes on non-coding aspects of programming | ScopeTest.java | How well do you know scope and lifetime issues? | ||
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) | ||
ArrayDemo.java | Reverses an array of Strings in-place (without using a second array) | PartialArray.java | Demo of using partially-filled arrays (in this case, a course of students) | ||
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) | ||
Javadoc Demo (Greeter.java) | javadoc tool demo, on class Greeter with Java “doc”
comments added.
(See also lecture notes on using
javadoc PDF) |
Javadoc Guide (from Java SE 15) | Reference information on Java SE
javadoc
(See also the javadoc command reference) |
||
www.w3schools.com | High-quality, free, interactive tutorials on HTML (and other web technologies) | Module Demo | Demo showing creating and using a Java module | ||
Smile.jar | Demo showing creating and using Jar (Java ARchive) files | jar command |
Reference for the jar command (Java 15),
showing options and use (See also the JAR file specification for details on the manifest file) |
||
JAR files revealed | IBM DeveloperWorks tutorial on creating and using JAR (Java ARchive) files | ShowPathToClass.java | Short program to display the pathname on disk of any class | ||
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 ArrayList s, Map s,
and other features added since Java 5 |
||
JavaTimeDemo.java | Shows the new (since Java 8) java.time packages | DeduplicateList.java | Shows using Set s to de-duplicate a List |
||
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 Container.pack() |
||
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 | 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 | ||
PlaySnd | Play sounds without showing controls or pre-loading. (Shows how Java and JavaScript can interact.) | MediaDemo.java | Media demo app, in a clickable Jar file | ||
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 JApplet |
||
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 |