COP 2800
Java Programming I

Java Programming I Syllabus
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.

Syllabus

Fall 2020

Course policies
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

HCC bookstore on-line

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), 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:
  1. Explain what software development is, the unique features, history, and appropriate uses of Java, and identify Java learning and reference resources.
  2. Understand the use of programming tools such as editors, compilers, API(Java Doc) documentation, and IDEs, to enter, compile, package, and execute small Java programs.
  3. Understand the fundamentals of Java programming, design, testing, packaging, and documentation, and perform related tasks.
  4. Describe and demonstrate basic Java programming concepts, including numeric data types (and their uses, operations, and pitfalls), expressions and operators, variables and constants, scope, packages, control structures, input and output (console and GUI), and other procedural programming elements.
  5. Discuss and use object-oriented programming concepts including classes, objects, abstraction, encapsulation, generics, inheritance, overriding (polymorphism), abstract classes and methods, interfaces, nested and inner classes, exceptions for error handling, and lambda expressions.
  6. Select and appropriately apply some elements of the standard Java library, including strings, regular expressions, GUI components, collections, arrays, dates and times, math utility classes, and other utility classes.
  7. Identify and discuss the basic Java memory model elements, including the stack, the heap, object references, and garbage collection.
  8. Understand the basic concepts of sorting and searching (linear and binary searching), Big-O notation, and recursion.
  1. Understand what programming is, and the unique features of Java
  2. Understand the use of programming tools such as editors, compilers, API (JavaDoc) documentation, and IDEs
  3. Understand the importance of proper program style, and be able to write programs using an acceptable style (including naming conventions and indenting)
  4. Understand the importance and use of comments
  5. Understand the differences between an applet and a stand-alone program
  6. Understand the proper use of “import” statements
  7. Understand basic GUI programming concepts: a Graphics object, drawing methods, and the coordinate system
  8. Understand basic (primitive) data types, their uses, literals, and how object types differ from primitive types
  9. Understand the differences and considerations of using integers and floating point numbers
  10. Understand variables, including declaring, initializing, and using them
  11. Understanding the difference between local, class, and instance variables
  12. Understanding expressions and mathematical operators (+, –, *, /, %, ++, ––, etc.), including the concepts of precedence and associatively
  13. Understand assignment statements and assignment operators
  14. Use math functions from the java.lang.Math class
  15. Understand type promotion and type conversion
  16. Understand the use of Strings and String literals in Java, including concatenation
  17. Understand Boolean expressions and operators
  18. Understand and select appropriate control structures (if-statements, nested if statements, if-ladders, switch statements, the :? operator, the while, do-while, and for loops, and the break and continue statements)
  19. Understand testing for equality for floating point and for objects (especially Strings)
  20. Understand the basic use of Exceptions and try-catch-finally blocks
  21. Understand different methods of console input and output (PrintWriter, printf, and Scanner class), and simple GUI input and output with JOptionPane)
  22. Understand the purpose of methods, when to create them, invoking them, passing arguments and returning values from them
  23. Understand method overloading and the concepts of a method signature
  24. Understanding basic memory use in a program: the stack and the heap
  25. Understand the concept and use of a program exit status (program return code)
  26. Understand the concept of recursion
  27. Understand the concepts of scope and persistence (or lifetime)
  28. Understand the issues of scope and initialization for local variables, class variables, and instance variables
  29. Understand, create, initialize (using constructors and the role of a class loader), and use objects and classes
  30. Understand basic Java modifiers (public, private, final, static, ...)
  31. Understand how to create and use packages
  32. Understand how to create JavaDoc web page documentation
  33. Understand and use StringBuilder (and StringBuffer), tokenizers, and regular expressions
  34. Identify deprecated classes and methods, and how to migrate from them
  35. Understand and use arrays and 2-dimensional arrays
  36. Understand the basic concepts of sorting and searching (linear and binary searching)
  37. Understand how to use command line arguments
  38. Understand and use object-oriented programming concepts including inheritance, overriding (polymorphism), abstract classes and methods, interfaces, and nested and inner classes, lambda notation, functional interfaces, and method references
  39. Work with dates and times in Java
  40. Understand and use basic collections such as ArrayLists, Sets, and HashMaps
  41. Understand and explain graphic user interface concepts including: event-driven programs, event handlers (listeners), graphic components, fonts, and differences between graphic toolkits such as AWT and swing
  42. Understanding how to use (and when to not use) layout managers
  43. Understand applets and related concepts including applet security, lifecycle (or milestone methods), and HTML needed
  44. Understanding basic multi-media (adding audio and graphics)
  45. Understand how to create and use Java Archive files (JARs)”
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 guidesBe 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 “HCC_Wireless” from the list of available networks.  Follow the on-screen steps by entering your HCC email address and network password.  For HCC guests: Select “HCC_Guest” from available networks.  Follow the on-screen steps to complete registration.  This network will be available between 7:00 AM and 10:00 PM.  These are the only official HCC networks; don't use others that may appear.

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 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:

Dale Mabry campus open lab hours
Monday – Thursday8:00 AM to 8:00 PM
Friday 8:00 AM to 4:30 PM
Saturday 8:00 AM to 2:30 PM

(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

  1. No food or drinks in classrooms or labs, especially near computer equipment.
  2. Students bringing their own laptops need to use the wireless network only.  Students cannot disconnect network cables from classroom's computers to connect their personal devices.
  3. Students are not allowed to disconnect monitors or computers to power their personal equipment.
Grading:
Grading Policy
3 equally weighted closed-book multiple choice exams     50%
Programming projects (about 6): 36%
Homework assignments (about 6): 14%
Class participation: +5%

Grading scale:  A=90-100,   B=80-89,   C=70-79,   D=65-69,   F=0-64
(You can elect to “audit” the class during the add/drop period.)

Policies:
  • Course format is interactive lecture, with most projects done outside of class.
  • No make-up exams will be offered without the prior approval of the instructor.  If a make-up exam is offered, you can take the exam in my office during my regular office hours, or from the Dale Mabry Testing Center.  (Check for their hours of operation, and make sure to give yourself sufficient time to complete an exam.  You will need to make an appointment to schedule a make-up exam.)
  • Exams will be open book and open note multiple choice(mostly exams.  While the exams are non-cumulative, each does build upon knowledge acquired earlier.  Exams are based mostly upon material presented in class.  However some questions may be from assigned readings (the textbook and on-line resources).
  • Exams will only cover material discussed in class or assigned as reading, before the exam.  Should the class fall behind the course schedule, some topics shown on the syllabus due for an earlier exam will be tested on the following exam instead.
  • The schedule for the final week of the term may cause a conflict between our class schedule and another class's final exam.  It is up to you to determine if you will have a conflict, and to bring it to the attention of your instructor, so that appropriate arrangements can be made.
  • Regular attendance is imperative for the successful completion of this class.  The textbook and on-line resources should be considered as required course supplements; in other words, the course is not based on the text.
  • If you must miss a class, let your instructor know in advance and the class will be recorded, so you can watch it later.
  • All phones, pagers, and beepers must be turned off during class time, except with prior permission of the instructor.  No food or drink is permitted in HCC classrooms.
  • Attendance will be taken within 5 minutes of the start of class; after 4 unexcused absences and/or lateness, the student will lose 2 points off the final grade for each additional occurrence.
  • If you miss a class, you are still responsible for the material covered in that class.  All students should exchange contact information (name, email address, phone number) with at least one other student in the class.  If you must miss a class, you should then contact another student and request they take class notes for you.  (Note, Hawknet has Hawkmail365 email for HCC students.)
  • Credit for class participation includes attendance, preparedness, and adding to class discussions by asking questions and participating in discussions.  Playing computer games, surfing the Internet, or working on assignments for this or other classes during class time will lose you credit.
  • Additional time outside of class will be required.  For typical students an average of between 8 and 12 hours each week outside of class are required for preparation, practice, projects, and homework assignments.
  • Students are expected to prepare for each class by completing all reading assignments (including “common errors”, “advanced topics”, and all other sidebar material in the assigned chapter), reviewing examples and model solutions provided, and practicing outside of class.  This is important — you can't learn a skill such as Java programming only by attending class and reading books.  You must practice for several hours, a few days each week!  If you won't have enough time available, consider auditing the course.
  • Students are expected to check the class website regularly.  Any syllabus changes, class cancellations, project or homework assignment changes are announced in class .
  • A student shall not, without my express authorization, make or receive any recording, including but not limited to audio and video recordings, of any class, co-curricular meeting, organizational meeting, or meeting with me.  Further, you do not have my permission to post on the web or otherwise distribute my class lectures and other course materials.  (You can distribute freely any materials I make publicly available from the HCC (or the wpollock.com) website, without asking permission, provided you give me credit for the work and don't alter it.  Any other use will require expressly given permission.)
  • Working together on individual assignments is considered as cheating!  Turning in someone else's work without giving them credit is also considered cheating (plagiarism).  Cheating will result in an automatic F (zero) for the project for all parties.  Also, you can only earn credit for your own work and not someone else's, even if you do cite your sources.  It is okay to ask a fellow student for class notes (in the event you miss a class) or for help in understanding the text or material given to the class (e.g., examples on the class website).  You are encouraged to study together as well.
  • Because you can learn a lot from your peers, both in the class and in the broader community, I encourage collaboration with both.  However, do not mistake this as a license to cheat.  It is one thing to learn from and with your peers; it is another to pass their work off as your own.  With respect to writing code for this class:
    • You are expected to document any collaboration that takes place.
    • Absolutely no electronic transfer (or other copying) of code between students is permitted.
    • Any code that you “find” on the Internet must be cited, with an active link to that code.
    • While you are encouraged to engage in conversations in online forums, under no circumstances are you permitted to solicit other individuals to complete your work for you.  (So, no posting programming assignments or homework questions and asking for answers.)
    • Ultimately, YOU are responsible for all aspects of your submissions.  Failure to be able to explain and defend your submission will be treated as a violation of academic integrity.
  • You must abide by the HCC Acceptable Use Policy (AUP) for computers and services.  In particular, you must not run network scanners, or attempt to obtain administrator (“root”) privileges or otherwise disrupt HCC computers and services.
  • You must follow the academic honesty policy and the student code of conduct for HCC.  A second cheating offense will result in an “F” for the course, and your name will be turned over to the dean for further handling.  I take these matters very seriously.  You have been warned!
  • Every effort will be made to stick to the weekly schedule for our course.  However it may happen that we will fall behind the schedule at some point.  If so, no topics will be skipped.  Instead we will attempt to catch up over the following weeks.
  • Please be aware that if we fall behind on the weekly schedule, the topics discussed may not match what shows on the syllabus.  The weekly schedule may (but probably won't be) updated in this case.
  • In case we do fall behind, homework assignments are automatically postponed until the next class (i.e., homework assignments that show on the schedule as due the same day we discuss some topic, will be due the day we will discuss that topic in class).  Projects and exams will not be automatically postponed.  Should your instructor deem it necessary, projects and exams may be rescheduled; this will be announced in class and on the RSS feed.
  • Communications Policy:  I will respond to your emails within 48 hours or two business days.  HCC policy is that grades can only be discussed in person during office hours, or via email only if you use your assigned HCC HawkNet (Hawkmail365) email account.
  • No appointment is necessary to see me during my scheduled, on-campus office hours.  You can just “walk-in”.  You can make appointments for other times as long as I'm available.
  • Occasionally my office hours will be canceled on short (or no) notice, for example if the dean calls me for a meeting.  Before driving out to campus just for my office hours, you should contact me the day before to make sure I still plan to be there.
  • Late Policies:  Late assignments (homework assignments, projects, or exams) generally will not be accepted.  An assignment is late if not turned in by the start of class on the day it is due.

    Late assignments will be accepted late only if you obtain the instructor's permission prior to the due date of the assignment, or for a documented serious medical reason.  All late assignments are subject to a late penalty of at least one letter grade (10%) regardless of the reason for the delay.

    Projects and homework assignments later than one week will receive a more severe late penalty; very late assignments without adequate excuses will receive a grade of “F” (0).  However if you have a very good reason your instructor may waive any or all of the late penalty.  (Examples of good reasons include extended illness that prevents working, being out of town for work, or military service.  Remember, documentation will be required.)

  • The dangers of the flu or another contagious disease require some changes to normal policies.  HCC has implemented the recommendations for institutions of higher learning of the CDC.  (See www.cdc.gov/h1n1flu/guidance/ and www.flu.gov/ for guidance from the CDC.)  You won't need documentation if you miss class due to the flu.  (But if you think you have the flu, you should see a doctor as soon as you can.)  In the unlikely event of a school closure due to the flu, some plan to make up the missed work will be made.

    If you think you have the flu, stay home.  Do not come to HCC until 48 hours after your fever has broken as you are still infectious.  Also, people are infectious to others for a day or so before they have any symptoms.  Flu is spread by touching doorknobs, computer keyboards, railings on stairs, etc., that were touched by someone with the flu.  Avoid shaking hands; use the “fist shake” (touching of fists) if you must use a physical greeting.  The most effective way to avoid catching the flu is to wash your hands frequently, especially after touching something that was touched by others.  Avoid unnecessary touching of eyes, nose and mouth.  While not as good as properly washing hands, hand sanitizers have been installed throughout the campus; use them often.

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 “.zip” attachment, you must first rename the file extension to “.zap” (or anything else strange) and then send the renamed file as an attachment.  For now, mail servers only look at file extensions and will permit strangely named files through.

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.

Academic Calendar
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)

Consequences of Dropping or Withdrawing

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.

Requests For Accommodations

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 on learning
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

Course schedule for COP 2800

Day by day course schedule
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
Sat 9/1 – Mon 9/3 Labor Day  —  HCC Closed
  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 Strings 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 Exceptions (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

course resources
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)
How to Study Good advice for college course learning        
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 (PDF) 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 21 Guide (from Java SE 21) Reference information on Java SE 21 javadoc  (See also the javadoc 21 command tool reference and the Java doc comment specifications (tags))
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 ArrayLists, Maps, and other features added since Java 5
JavaTimeDemo.java Shows the new (since Java 8) java.time packages     DeduplicateList.java Shows using Sets 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

[Valid RSS]

RSS iconXML iconRSS feed for this page

What is RSS?