| Time & Place: | Ref No. 31481: Tuesday, Thursday, 7:00–8:15 PM, Dale Mabry Room DTEC–427 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Instructor: |
Name: Wayne Pollock E-mail: Internet: Office & Phone: DTEC–404, 253–7213 DM Office Hours: Monday–Thursday, 3:55–5:25 & 8:30–9:00; On-line Office Hours: Tuesday–Friday, 12:00 PM (noon)–1:00 PM; or by appointment.
| ||||||||
| Text: |
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 bookstore. | ||||||||
| Description: |
(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
Java 7.
You can obtain Oracle's JDK, including all tools and documentation, for free from www.oracle.com/technetwork/java/. You may use any other Java development tools too if you prefer, such as eclipse. However 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 Virutal Campus (Formerly FACTS.org) to obtain your final grade for the course. You can use CampusCruiser for email, college calendars, and course (and college related) resources.
Most college systems now use (or will in the future) a single sign-on
user ID, known as 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/. HCC DM Open Lab Computers with JDK (and other tools, such as Eclipse) are located in the computer science department open lab, in DTEC–462. Lab hours are:
Lab Techs) are not teaching assistants or tutors, and shouldn't be expected to help you with your coursework.) | ||||||||
| 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 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.) | ||||||||
| Homework Assignments: |
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.
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 an
| ||||||||
| Submitting Assignments: |
All assignments (except when noted) should be submitted by email to
.
Please use a subject such as Java Homework Assignment #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, except when noted in the assigment directions.) 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 FILE://. Make sure your java source is correct before you send the email! If possible, use the textand not the HTMLmode 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.
The HCC email server automatically accepts and
silently discards email with certain types of attachments.
For our class, the problem is with 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 subhmitted projects, until you are certain they have been received and graded correctly. |
| HCC Academic Calendar: | |
|---|---|
| Classes Begin: | Monday 8/20/2012 (First class meeting: Tuesday 8/21/2012) |
| Add-Drop Ends: | Friday 8/24/2012 |
| Last Day to Withdraw: | Friday 10/26/2012 |
| Classes End: | Monday 12/10/2012 (Last regularly scheduled day of class: Thursday 12/6/2012) |
| Grades Available: | Friday 12/14/2012 (from Florida Virutal Campus (Formerly FACTS.org) or HawkNet) |
| HCC is closed on: |
Monday 9/3/2012 (Labor Day), Friday 10/19/2012 (College Day), Monday 11/12/2012 (Veterans' Day observed), Thursday–Saturday 11/22/2012–11/24/2012 (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. | — Lakota Indian saying | |
|---|---|---|---|
Learning is not a spectator sport! | — Chickering & Gamson |
| Dates Tue Thu |
Topics, Assigned Readings, and Assignment Due Dates |
|---|---|
| 8/21 |
Course introduction, LAN use.
Open Lab procedures and hours.
Role of lab techs.
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, errors ...).
Readings: Chapters 1, Soft Skills |
|
8/23
8/28
|
Using import and packages.
Using Java API docs (and deprecation).
Simple applets, HTML, basic graphics
(coordinates, Graphics class methods:
drawXXX, fillXXX,
and setXXX).
Newer Graphics2D methods.
Syntax, Logic, and Runtime errors.
Readings: Chapters: 13.1–13.3, 18.1–18.3, 1.10 On-line Java docs (just learn how to navigate the site), and Java program style |
| 8/30 |
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, 5.9, 8.5, 10.14 |
| 9/4 9/6 |
Expressions.
Converting types (cast).
Using static methods of java.lang.Math
and java.util.Random.
Console input with Scanner (tokenizing).
Simple GUI input and output with JOptionPane.
Working with Strings and StringBuilder.
Formatted output (PrintWriter, printf).
Wrapper classes, auto-boxing.
Readings: Chapters 2, 3.17, 5.10, 8.6.2, 9.1, 9.2, 9.6, 3.16, 10.13 Homework Assignment #1 due 9/6 |
| 9/11 9/13 |
[USF Bulls game at home on Thur. 9/13
@7:30 PM; expect traffic delays] Control structures: block statements, if statement, selection
operator, switch statement.
Boolean expressions, operators, and comparing integer, floating
point, and object values (especially String).
The null value.
Loops: while, do,
and for.
break and continue.
Readings: Chapters 3, 4 Homework 2 due 9/13: 3.3, 3.7, 3.16, 3.23, 3.26, 3.32, 3.41, 4.8, 4.12, 4.23, 4.25 Project #1 due 9/11 |
|
9/18 9/20
9/25
|
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. Memory concepts: stack, heap, review garbage collection. Recursion overview. Readings: Chapters 5, 20.1–20.2 Project #2 due 9/25 |
| 9/27 | Exam #1 |
|
10/2 10/4
10/9
|
Overview of Exceptions
(and try – catch – finally).
Arrays: declaring, using, initializing, linear search, sorting, binary search. for-each loops. 2-d arrays. Copying arrays with clone and
System.arraycopy.
Using partially filled arrays.
Using command line arguments. Readings: Chapters 14.1–14.6, 6, 7, 9.7 Homework 3 due 10/4: 5.3, 5.8, 5.9, 5.13, 5.18, 5.23, 20.2, 6.5, 6.8, 6.19, 6.25, 7.4, 14.2, 14.3, 14.10 |
|
10/11
10/16 10/18
|
Object concepts: object references and assignment,
construction of objects (constructors, classLoader,
initialization of local, instance, class (static)
variables and methods, and of objects.
Garbage collection and finalizers.
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/16 Homework 4 due 10/18: 8.5, 8.9, 8.11, 8.17, 8.18, 8.23, 8.27, 10.1, 10.2, 10.6, 10.7, 10.15, 10.16 |
| 10/23 10/25 |
Scope (part 2), this, modifiers, packages,
CLASSPATH, Java class libraries.
Commenting classes with doc comments and using the
javadoc tool.
Readings: Chapters 8.6, 8.8, Appendix D, Packages (PDF of Liang supplement III-G), Javadoc lecture notes |
| 10/30 | Exam #2 |
| 11/1 |
OOP concepts: Inheritance, super,
polymorphism (overriding, Early and late binding),
instanceof, super.
Readings: Chapter 11 |
| 11/6 11/8 |
Interfaces, Abstract classes and methods.
Nested, inner, and anonymous classes.
Readings: Chapters 15, 16.4 Project #4 due 11/6 Homework 5 due 11/6: 11.4, 11.7, 11.16, 11.22, 11.23, 11.26, 11.28, 11.38, 15.1, 15.13, 15.15 |
| 11/13 |
Dates, Calendar, timestamps.
ArrayLists, Sets, and
HashMaps (collections overview).
Readings: Chapters 8.6.1, 15.4, 11.11 Homework 6 due 11/13: 8.14, 11.29, 11.30, 11.31, 11.32, 15.11, 15.12 |
|
11/15
11/20
|
Event-driven, graphics programming with AWT and
Swing.
Events, listeners (handlers), components, and containers.
Working with Fonts.
Exit status with System.exit().
Timer events.
Readings: Chapters 12, 16 Project #5 due 11/15 |
| 11/22 | Thanksgiving Holiday (Thu 11/22 – Sat 11/24) — HCC Closed |
| 11/27 11/29 |
Graphics programming with the AWT and Swing (continued:
using layout managers, additional components and event types).
Readings: Chapter 17 Homework 7 due 11/27: 12.5, 12.7, 12.11, 12.13, 12.16, 12.19, 12.24, 12.26, 12.34, 16.2, 16.6, 16.16, 16.20, 17.6, 17.8 |
| 12/4 |
Applets: life-cycle (or milestone) methods, security,
HTML, appletviewer).
Multi-media (adding audio and graphics, using ImageIO). Creating and using jar files. Readings: Chapter 18, Using jar (PDF of Liang supplement III-Q) Project #6 due 12/4 Homework 8 due 12/6: 18.2, 18.3, 18.5, 18.7, 18.11, 18.12, 18.23, 18.25 |
| 12/6 | Exam #3 |
| Resources | |||||
|---|---|---|---|---|---|
| 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 | ||
| Greet1.java | Traditional first program, non-GUI | HelloWeb.java | A first applet | ||
| Greeter.java | Shows creation and use of objects | ||||
| How to start a programming assignment | Excellent advice from Patricia Shanahan (See also her advice on Debugging Strategy) | How To Program | A walk-through of a sample Java programming assignment | ||
| 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 | MathOddities.java | A swing applet showing some tricky points of Java math | ||
| Binary Number Chart | Tutorial for octal, decimal, hex, and binary equivalents | Round.java | Shows formatting with java.text.* formatter classes |
||
| BigNum.java | Demo using java.lang.math.BigDecimal andBigInteger | ||||
| 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 Scanner |
ConsoleDemo.java | Shows console input and output, including how to read passwords | ||
| PrintfDemo.java | Using printf (or String.format) to format output |
Greet3.java | Shows simple GUI input and output using
JOptionPane |
||
| 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 | ||
| Fibonacci.java | A simple demo of using recursion (compare with FibonacciMemo.java) | Palindrome.java | A demo of using recursion to see if the command line args form a palindrome | ||
| 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 | ||||
| RegExLab.java | Regular Expressions Lab | TwentyOne.java | A stand-alone 21card 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 | How to create & use packages | Greeter.java - Javadoc | Greeter with Java doccomments added. (See also some notes on using javadoc) |
||
| finding classes in Java 7 | How classes are found by various Java tools (See also the documentation for CLASSPATH, including the part class path wildcards) | ||||
| 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 shadowingof 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 ArrayLists, Maps,
and other features added with Java 5 |
||
| 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 Container.pack() |
||
| 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
PLAFdemo |
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 | ||
| 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 | Sun's 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-freeversion 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 | ||