SE1021
Outcomes

Week 1

Java Fundamentals

  • Be aware of the memory requirements and value ranges for primitive types
  • 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 increment and decrement operators
  • Explain how pre- and post- increment/decrement operators differ in functionality
  • Use short-circuit evaluation to avoid divide-by-zero and null-pointer exceptions

Inheritance

  • 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
  • Define aggregation
  • Define composition
  • 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

Week 2

UML

  • Read and understand UML class and sequence diagrams
  • Implement source that meets the design specified in a UML class and sequence diagram

Week 3

Inheritance and Polymorphism

  • 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 the concept of the Java interface
  • Create an abstract method; describe the purpose of abstract methods
  • Describe the differences between an abstract class and an interface
  • Explain why Java prohibits multiple inheritance

Week 4

GUI Components

  • 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

Event-Driven Programming

  • Explain the roles of event sources and event listeners in event-driven programming
  • List the two types of objects required for event driven programming in Java
  • Explain the role of "event source" objects and give examples of two classes whose instances are "event source" objects
  • Explain the role of "event listener" objects and give examples of two classes whose instances are "event listener" objects
  • Derive from the Application class and create a simple GUI application
  • Implement the EventHandler interface as an inner class
  • Implement an EventHandler as a lambda expression
  • Explain the purpose of the argument passed to the handle() method
  • Determine the event source that caused the handle() method to be called

Week 5

GUI Components

  • Differentiate between layout panes such as: GridPane, FlowPane, HBox, and VBox
  • Use the layout panes listed above to arrange components on a scene

FX Markup Language

  • Describe the differences between creating JavaFX applications using imperative programming and using FXML with declarative style programming
  • Use scene builder to create an FXML file describing a GUI layout
  • Implement controller classes and make appropriate modifications to FXML files to provide functionality to UI controls such as Button and TextField classes

Exception Handling

  • 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

Week 6

Exception Handling

  • Use multiple catch blocks to customize the way different types of exceptions are handled
  • Inspect a call stack trace displayed by an unhandled exception to determine what caused the exception to be thrown
  • 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

Week 7

File Input and Output (I/O)

  • Create a Java File object and associate it with a file on disk
  • Determine if a File object exists
  • Determine if a File object is a file or a directory
  • 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
  • Explain what the PrintWriter class is used for
  • Read text data from a file using Scanner objects
  • Explain the difference between binary and text files
  • Be familiar with how object I/O (ObjectOutputStream and ObjectInputStream) works
  • Describe some of the important exceptions that the java file IO classes generate.

Week 8

GUI Components

Week 9

Secure Software Development

  • Explain how encapsulation supports software security
  • Implement deep copying in accessors to avoid breaking encapsulation
  • Make use of final to guard against data corruption

Functional Programming

  • Explain how functional programming differs from object oriented programming
  • Describe when it is appropriate to replace code with a lambda expression
  • Demonstrate correct use of lambda expressions
  • Describe the purpose of the Stream interface
  • Make use of the Iterable.forEach() method
  • Be familiar with the following methods from the Stream interface: count(), distinct(), filter
  • , limit(), and sorted()

Week 10

Documentation and Distribution

  • Generate HTML documentation using the Javadoc tool
  • Generate executable JAR files

Last modified: Thursday, 16-Feb-2017 17:34:44 EST