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:
- 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()
andtoString()
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
andButton
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:
GridPane
,StackPane
FlowPlane
andVBox
- (✓) 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
andTextField
classes
Exception Handling
- (✓) Explain how exception handling increases the robustness of software
- (✓) Define exception; explain the concepts of
catch
andthrow
as they relate to exceptions - (✓) Explain why
Error
exceptions should not be caught in application code - (✓) Explain the differences & similarities between a
RuntimeException
and anError
- (✓) 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 thefinally
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 aFile
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
andDataInputStream
) 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
andObjectInputStream
) 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
- (✓) Use
FileChooser
to select and open files Be familiar with the following UI controls:RadioButton
,Checkbox
,ComboBox
,ScrollPane
,ListView
,TableView
,Slider
,MenuBar
,Menu
, andMenuItem
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()
, andmap()
- (✓) 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.