SE1021
Outcomes

Optional Goodies

IntelliJ

These outcomes need to be updated with new material, including JavaFX GUI design and Security.

Week 1

Java Fundamentals

  • (✓) Discuss the importance getter/setter methods play in encapsulating member variables
  • (✓) 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
  • (✓) Explain why, if no default constructor is present in the superclass, a class 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

  • (✓) Name, draw, and describe each arrow used (so far) in a UML diagram
  • (✓) Read and understand UML class and sequence diagrams
  • (✓) Implement source that meets the design specified in a UML class and sequence diagram
  • (✓) Create UML class diagrams by hand

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.
  • (✓) Give an example of a situation where casting from one reference type to another is allowed, but not implicit
  • (✓) 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
  • (✓) Describe how to use instanceof to determine the type of class that a reference points to
  • (✓) 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

Inheritance and Polymorphism

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: StackPane, FlowPlane and VBox
  • (✓) Use the layout panes listed above to arrange components on a scene

FX Markup Language

  • (✓) Describe the differences between creating JavaFX applications programmatically and using FXML
  • (✓) 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
  • (✓) Explain the differences & similarities between a RuntimeException and an Error
  • (✓) 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)

  • There will be changes to this week's outcomes
  • (✓) Describe how files are stored on the computer -- what is the basic component making up a file on disk?
  • (✓) Describe how plain-text (ASCII) and Unicode (Java characters) are is stored in a file.
  • Explain why the top bit of an ASCII character is always 0
  • Explain the difference between an byte and a character
  • (✓) Create a Java File Path object and associate it with a file on disk
  • (✓) Determine if a File Path object refers to a file that exists
  • (✓) Determine if a File Path object refers to a file or a directory
  • (✓) Associate a low-level input (i.e., FileInputStream) or output (i.e., FileOutputStream) stream with a File object
  • (✓) Find a File object from the corresponding Path 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
  • (✓) Describe how object I/O (ObjectOutputStream and ObjectInputStream) works (i.e., methods for reading and writing of objects, association with low-level stream, the importance of the sequence of objects and type casting)
  • (✓) 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
  • TODO - additions here

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

Acknowledgement

Dr. Taylor wrote the outcomes. I edited it to add any errors I thought were needed. (I may have removed some too...). I will be updating it throughout the semester. Some of the updates will be highlighted so you can review them more easily.