Week 1
- Be aware of the memory requirements and value ranges for primitive types
- Use increment and decrement operators
- Explain how pre- and post- increment/decrement operators differ in functionality
- Use mathematic operations to manipulate characters
- Interpret code in which automatic type conversions are present
- Use type casting to explicitly convert data types
- Explain the risks associated with explicit type casting
- Use short-circuit evaluation to avoid divide-by-zero and null-pointer exceptions
- Explain the concept of the Java interface
- Make use of an interface reference to refer to objects that implement the interface
- Define aggregation
- Define composition
- Read and understand UML class diagrams
- Use inheritance in creating classes
- If no default constructor is present in the superclass, explain why a constructor of a subclass should make an explicit call to a constructor of the superclass
- Use aggregation and composition within user defined classes
- Explain what is meant by "overriding a method"
- Make use of
super
reference to call a parent method from within a method that overrides it
- Implement source code that meets the design specified in a UML class diagram
- Create an abstract method; describe the purpose of abstract methods
- Describe the differences between an abstract class and an interface
- Explain the role of the
Object
class
- Explain how automatic type promotion works with object references
- Override the
equals()
and toString()
methods for user defined classes
- Explain the relationship between a reference type and the type of the object to which the reference points
- Explain the concept of polymorphism/dynamic binding
- Read code that uses inheritance and polymorphism and determine its output on execution
- Identify legal and illegal assignments of references to objects based on the reference type and object type
- Explain what it means for a class to implement an interface
- Use the
protected
modifier in defining an inheritance hierarchy
- Describe when to use an abstract class
- Explain why Java prohibits multiple inheritance
- List at least three types of objects that can be contained in a
Parent
object
- Design and implement a graphical user interface (GUI) programs using the
Label
and Button
classes from the JavaFX package
- Differentiate between layout panes such as:
GridPane
, FlowPane
, HBox
, and VBox
- Use the layout panes listed above to arrange components on a scene
- Derive from the
Application
class and create a simple GUI application
- Create a
FlowPane
and add multiple components to the pane
- Explain what it means to "register an event handler"
- Write a method reference representing an instance method of a particular object
- Use a method reference to register an event handler to a
Button
or TextField
- Explain the role of the
ActionEvent
passed to the method reference
- Determine the source of the event that called an event handler
- Describe the event-delegation model and explain the role of the event source object and the event listener
- List two classes whose instances are the source of events (e.g.,
Button
)
- List two classes whose instances are event objects (e.g.,
ActionEvent
)
- Implement the
EventHandler
interface as an inner class
- Implement an
EventHandler
as a lambda expression
- Be able to use SceneBuilder with IntelliJ
- Use SceneBuilder to create an FXML file describing a GUI layout
- Describe the differences between creating JavaFX applications using imperative programming and using FXML with declarative style programming
- Implement controller classes and make appropriate modifications to FXML files to provide functionality to UI controls such as
Button
and TextField
classes
- Use
Alert
and TextInputDialog
classes to interact with the user
- Explain how exception handling increases the robustness of software
- Define exception; explain the concepts of
catch
and throw
as they relate to exceptions
- Explain why
Error
exceptions should not be caught in application code
- For a given program and input condition, determine the control flow of a
try
-catch
block
- Implement a method that catches an exception thrown by a class in the Java Standard Library
- Implement a method that uses a
try
-catch
block and a repetition statement (i.e., loop) to validate user input
- Distinguish between checked and unchecked exceptions
- Explain the concept of exception propagation; explain the outcome if an exception is thrown and not caught by the program
- Explain the consequences of not handling a checked exception within a method where the checked exception occurs
- Inspect a call stack trace displayed by an unhandled exception to determine what caused the exception to be thrown
- Use multiple
catch
blocks to customize the way different types of exceptions are handled
- Use the
throws
clause to postpone when a checked exception is handled
- For a given program and input condition, determine the control flow of a
try
-catch
block with and without the finally
clause
- Create a Java
Path
object and associate it with a file on disk
- Determine if a file exists on disk
- Determine if a Java
Path
object is associated with a file or a directory
- Convert between
Path
and File
objects
- Use the
Files
class to obtain input and output streams
- Associate a low-level input (i.e.,
FileInputStream
) or output (i.e., FileOutputStream
) stream with a File
object
- Describe how low-level file I/O works (i.e., reading or writing of byte data, importance of the sequence of data)
- Describe how high-level (
DataOutputStream
and DataInputStream
) file I/O works (i.e., methods for reading and writing of primitive data types, association with low-level stream, the importance of the sequence of data)
- Explain why it is important to close a stream when file operations are complete
- Use the try-with-resources construct to ensure resources are closed appropriately
- Explain what the
PrintWriter
class is used for
- Read text data from a file using
Scanner
objects
- Use the
Files
class to read/write text files
- Explain the difference between binary and text files
- Describe some of the important exceptions that the java file IO classes generate
- Describe how buffered streams (
BufferedOutputStream
and BufferedInputStream
) can improve IO performance
- Generate HTML documentation using the Javadoc tool
- Generate executable JAR files
- Explain how functional programming differs from object oriented programming
- Describe when it is appropriate to replace code with a lambda expression
- Explain the characteristics of and purpose for a functional interface
- Use lambda expressions to implement the
Predicate
, Function
, Consumer
, and Comparator
interfaces
- Use a method reference in place of a lambda expression
- Describe the purpose of the
Stream
interface
- Use
Collectors.toList()
with the collect()
method
- Obtain a
Stream<String>
from a file
- Make use of the
Iterable.forEach()
method
- Be familiar with the following methods from the
Stream
interface: collect()
, count()
, distinct()
, filter()
, map()
, max()
, min()
, limit()
, skip()
, sorted()
, toArray()
, and toList()
- Describe how encapsulation can improve software security
- Describe how avoiding duplicate code can improve software security
- Demonstrate how validating input can improve software security
- Demonstrate how creating copies of mutable output values can improve software security
- Explain how
public static final
fields that are not constants can create security vulnerabilities
- Make use of
final
to guard against data corruption