CS1021
Outcomes

Optional Goodies

IntelliJ

  • Print & use shorcuts from this handy IntelliJ Reference card
  • Set up SceneBuilder with IntelliJ
    • Download the Gluon version of SceneBuilder. Use the Windows Installer.
    • Druing the windows install, copy-paste the install path (e.g., into Notepad or a stickynote) for future reference
    • Once the install completes, open IntelliJ. In IntelliJ, right-click on your (possibly empty) .fxml file and select "Open in SceneBuilder"
    • You will be asked to select your SceneBuilder executable. Brose to the path copy-pasted above, and within that folder, select the SceneBuilder .exe file.
    • SceneBuilder should now open so that you can browse to where you want to be.
  • Set up IntelliJ to draw a line at 100 characters:
    • In IntelliJ, Go to File->Settings, then to Editor->Code style. Set the Hard wrap at and Visual guides to 100:
  • Creating a Jar File

Week 1

Java Fundamentals

  • (✓) Review writing loops with ArrayLists
  • (✓) Review comparison and assignment of references
  • (✓) 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
  • Discuss the importance getter/setter methods play in encapsulating member variables

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

Event-Driven Programming

  • (✓) Describe the event-delegation model and explain the role of the event source object and the event listener
  • (✓) 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
  • (✓) Use a method reference to register an event handler to a Button or TextField
  • 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: GridPaneStackPane, 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)

  • (✓) Describe how files are stored on the computer -- what is the basic component making up a file on disk?
  • (✓) Describe how plain-text (ASCII) is stored in a file.
  • (✓) Create Java File and Path objects and associate them with a file on disk
  • (✓) Find a File object from the corresponding Path object
  • Determine if File and Path objects refer to a file that exists
  • Determine if File and Path objects refer to 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
  • 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

GUI Design

  • Give examples of visual cue techniques (proximity, highlights, grayed out, similarity, closure, visibility, constraints, mapping, flow)
  • Define affordance and give an example of how it can be used in UI design
  • Apply Fitts' Law to chose between alternative UI options

Week 9

Secure Software Development

  • 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

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(), sorted(), and map()
  • (✓) Demonstrate how to collect a stream back to a List

Week 10

Documentation and Distribution

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

Acknowledgement

Dr. Taylor wrote the outcomes, and I have modified them for my section(s). I will be updating it throughout the quarter. Some of the updates will be highlighted so you can review them more easily.