Unit 0 Introduction: About This Course¶
- 0.1. Understanding this Course
- 0.1.1. Who Is This Class For?
- 0.1.2. Students of Many Experience Levels
- 0.1.3. Online, Asynchronous, Self-paced
- 0.1.4. Course Support
- 0.1.5. Weekly Schedule
- 0.1.6. Reading Activities
- 0.1.7. Labs
- 0.1.8. Programming Assignments <<TODO: REVISIT>>
- 0.1.9. Programming Language and Environment <<TODO: REVISIT>>
Unit 1 Inheritance and Polymorphism¶
- 1.1. Getting Started
- 1.1.1. Installing BlueJ
- 1.1.2. Introducing LightBot
- 1.1.3. From LightBot to Micro Worlds
- 1.1.4. Self Check: Micro-Worlds
- 1.1.5. A Bit More LightBot
- 1.1.6. Textually Representing Programs
- 1.1.7. Self-Check: Turning Micro-Worlds into Code
- 1.1.8. What Does LightBot Say About Programming?
- 1.1.9. A Programmable LightBot in Java
- 1.1.10. Syntax Practice 1a
- 1.1.11. Creating New Objects
- 1.1.12. Calling Methods on an Object
- 1.1.13. Putting it All Together
- 1.1.14. A Word on Making Code Easy to Read
- 1.1.15. Syntax Practice 1b
- 1.1.16. Programming Practice 1
- 1.1.17. Check Your Understanding
- 1.2. Inheritance and Polymorphism: Subclasses and Methods
- 1.2.1. The Jeroos of Santong Island
- 1.2.2. Class Hierarchy and Inheritance
- 1.2.3. Summarizing: What is Inheritance?
- 1.2.4. Syntax Practice 2a: Jeroo Methods
- 1.2.5. Problem Solving and Algorithms
- 1.2.6. Creating and Using Jeroo Methods
- 1.2.7. What is Polymorphism?
- 1.2.8. Syntax Practice 2b: Subclass Constructors
- 1.2.9. Syntax Practice 2c: More Subclass Constructors
- 1.2.10. Programming Practice 2
- 1.2.11. Check Your Understanding
Unit 2 Conditionals and Software Testing¶
- 2.1. Conditional and Repeating Actions
- 2.1.1. Selection
- 2.1.2. Conditions Using Sensor Methods
- 2.1.3. An Overview of Conditional Statements
- 2.1.4. Java’s Syntax for the If-Then-Else Structure
- 2.1.5. Syntax Practice 3a: If-Then-Else
- 2.1.6. Creating Optional Statements With If-then
- 2.1.7. Java’s Syntax for the If-then Structure
- 2.1.8. Syntax Practice 3b: If-Then
- 2.1.9. Java’s Syntax for the Multi-way Selection Structure (a cascaded if)
- 2.1.10. Syntax Practice 3c: Multi-way If
- 2.1.11. Compound Conditions
- 2.1.12. Syntax Practice 3d: Compound Conditions
- 2.1.13. Repeating Actions
- 2.1.14. Generic Repetition Structures
- 2.1.15. Java’s Syntax for the While Loop
- 2.1.16. Syntax Practice 3e: While Loops
- 2.1.17. Programming Practice 3
- 2.1.18. Check Your Understanding
- 2.2. Software Testing
- 2.2.1. What Is Software Testing?
- 2.2.2. Writing Your First Software Test
- 2.2.3. Check Your Understanding: Software Testing Concepts
- 2.2.4. More About Methods
- 2.2.5. Check Your Understanding: Method Signatures
- 2.2.6. Check Your Understanding: Methods with Parameters
- 2.2.7. Good Habits for Conditionals
- 2.2.8. A Different Type of Complex If-Statement
- 2.2.9. Short Circuit Evaluation
- 2.2.10. Check Your Understanding: Logical Equivalence
- 2.2.11. Syntax Practice 4a: Compound Conditionals
- 2.2.12. Syntax Practice 4b: Conditionals and Relational Operators
- 2.2.13. Programming Practice 4
- 2.2.14. Module Review
Unit 3 Variables and For-each Loops¶
- 3.1. Variables, Fields, and Parameters
- 3.1.1. Variables
- 3.1.2. Check Your Understanding: Variables
- 3.1.3. Fields Versus Local Variables
- 3.1.4. Changing Private Variables: Mutator Methods
- 3.1.5. Check your Understanding: Scope
- 3.1.6. Accessor Methods
- 3.1.7. Check Your Understanding: Fields, Getters and Setters
- 3.1.8. Syntax Practice 5a: Fields and Accessors
- 3.1.9. The Return Keyword
- 3.1.10. Check your Understanding: Typed Methods and Return Statements
- 3.1.11. Syntax Practice 5b: Mutators and Return Statements
- 3.1.12. Using Fields in Testing
- 3.1.13. Programming Practice 5a
- 3.1.14. Programming Practice 5b
- 3.2. Pictures and For-each Loops
Unit 4 More Lists, Loops, Arrays and Grouping¶
- 4.1. Aggregation, Strings and More Loops
- 4.1.1. Object-Oriented Design: Aggregation, Composition, and Delegation
- 4.1.2. Strings and Characters
- 4.1.3. Check Your Understanding: Strings
- 4.1.4. Counter-controlled Loops
- 4.1.5. Check Your Understanding: Counter Controlled Loops
- 4.1.6. Tips on Random Numbers
- 4.1.7. Check Your Understanding: Random Numbers
- 4.1.8. Method Overriding
- 4.1.9. Check Your Understanding: Method Overriding
- 4.1.10. Syntax Practice 7a: For Loops and OO Design
- 4.1.11. Syntax Practice 7b: toString and Returning Values
- 4.1.12. Programming Practice 7a
- 4.1.13. Programming Practice 7b
- 4.2. Grouping Objects Using Lists and Nested For Loops
- 4.2.1. Collections of Objects
- 4.2.2. Interfaces
- 4.2.3. Check Your Understanding: Interfaces
- 4.2.4. Syntax Practice 8a: Strings
- 4.2.5. The List Interface
- 4.2.6. Generics
- 4.2.7. ArrayList
- 4.2.8. Check Your Understanding: ArrayLists
- 4.2.9. Syntax Practice 8b: Lists
- 4.2.10. Nested For Loops
- 4.2.11. Check Your Understanding: Nested For Loops
- 4.2.12. Syntax Practice 8c: Nested Loops
- 4.2.13. Check Your Understanding
- 4.2.14. Programming Practice 8a
- 4.2.15. Programming Practice 8b
Unit 5 More Loops and Arrays¶
- 5.1. Lists, Loop Idioms, Generics, and the Null Keyword
- 5.1.1. Modelling the Contents of a Library
- 5.1.2. Looping Idioms
- 5.1.3. Check Your Understanding: Loop Idioms
- 5.1.4. Syntax Practice 9a: Loop Idioms
- 5.1.5. Generics Revisited
- 5.1.6. Check Your Understanding: Generics
- 5.1.7. Syntax Practice 9b: Generics
- 5.1.8. The Null Keyword
- 5.1.9. Diagnosing a Null Pointer Exception
- 5.1.10. Check Your Understanding: Null
- 5.1.11. Using BlueJ’s Debugger
- 5.1.12. Using BlueJ’s Code Pad
- 5.1.13. Programming Practice 9a: Loop Idioms
- 5.1.14. Programming Practice 9b: Loops and Generics
- 5.2. Arrays
- 5.2.1. Creating An Array
- 5.2.2. Accessing Items in Arrays
- 5.2.3. Setting Items in an Array
- 5.2.4. Arrays Compared to Lists (or ArrayList)
- 5.2.5. Putting It All Together
- 5.2.6. Check Your Understanding: Arrays
- 5.2.7. Syntax Practice 10a
- 5.2.8. Iterating Over Arrays
- 5.2.9. Check Your Understanding: Iterating with Arrays
- 5.2.10. Syntax Practice 10b
- 5.2.11. Initializing Array Contents
- 5.2.12. Printing Arrays
- 5.2.13. Copying Array Variables
- 5.2.14. Naming Array Variables
- 5.2.15. Writing Test Assertions Involving Arrays
- 5.2.16. Applying Arrays in a Problem
- 5.2.17. Syntax Practice 10c
- 5.2.18. Check Your Understanding
- 5.2.19. Programming Practice 10a
- 5.2.20. Programming Practice 10b
Unit 6 Multi-Dimensional Arrays, File I/O and Sets¶
- 6.1. Multi-dimensional Arrays
- 6.2. Input, Output and Variable Scoping
- 6.2.1. Variable Scoping
- 6.2.2. Check Your Understanding: Scope
- 6.2.3. Syntax Practice: Scoping
- 6.2.4. Java Input and Output
- 6.2.5. Output Using PrintWriters
- 6.2.6. Check Your Understanding: Output
- 6.2.7. Input Using Scanners
- 6.2.8. A Complete Input Example
- 6.2.9. Check Your Understanding: Input
- 6.2.10. A Complete Input/Output Example
- 6.2.11. Testing I/O-based Operations
- 6.2.12. Check Your Understanding: Testing
- 6.3. Maps and Sets
- 6.3.1. The Map and Set Interfaces
- 6.3.2. The Map Interface
- 6.3.3. Syntax Practice: Making Maps
- 6.3.4. Adding and Accessing Pairs in a Map
- 6.3.5. Syntax Practice: Adding to Maps
- 6.3.6. Checking for and Removing Pairs in a Map
- 6.3.7. A Visual Summary of Using Map and HashMap
- 6.3.8. Syntax Practice: Map Contains and Remove
- 6.3.9. Looping Over Map Contents
- 6.3.10. Check Your Understanding: Maps
- 6.3.11. The Set Interface
- 6.3.12. Syntax Practice: Making A Set
- 6.3.13. Adding Values to a Set
- 6.3.14. Syntax Practice: Adding to a Set
- 6.3.15. Checking Values in a Set
- 6.3.16. Syntax Practice: Set Contains
- 6.3.17. Removing Values from a Set
- 6.3.18. Syntax Practice: Set Remove
- 6.3.19. Looping Over Sets
- 6.3.20. Check Your Understanding: Sets
- 6.3.21. Programming Practice: Maps
- 6.4. Static, Main, and Exceptions
- 6.4.1. The Main Method
- 6.4.2. Check Your Understanding: Main Methods
- 6.4.3. The Static Keyword
- 6.4.4. Check Your Understanding: The Static Keyword
- 6.4.5. Errors
- 6.4.6. Throwing Exceptions
- 6.4.7. Check Your Understanding: Throwing Exceptions
- 6.4.8. Syntax Practice: Throwing Exceptions
- 6.4.9. Try/Catch Blocks
- 6.4.10. Check Your Understanding: Try/Catch Blocks
- 6.4.11. Syntax Practice: Try-Catch Blocks
Unit 7 Unit 7¶
- 7.1. Java Unit Testing
- 7.2. More on Exceptions
- 7.3. Objects, Enums, and UML Diagrams
- 7.4. Polymorphism 2
- 7.5. Style and Documentation
- 7.6. Bags
- 7.6.1. Objectives
- 7.6.2. Introduction to Bags
- 7.6.3. Documentation of Bag Interface methods
- 7.6.4. Using Bags
- 7.6.5. Array Implementation of Bags
- 7.6.6. [5:28] More Bag Method Implementation Video Demonstration
- 7.6.7. Methods that Remove and Design Improvement Lesson and Demo
- 7.6.7.1. [5:28] Methods that Remove and Design Improvement Video Demonstration, Part 1
- 7.6.7.2. [6:45] Methods that Remove and Design Improvement Video Demonstration, Part 2
- 7.6.7.3. [9:03] Methods that Remove and Design Improvement Video Demonstration, Part 3
- 7.6.7.4. Checkpoint 3
- 7.6.7.5. [14:47] Array Resizing Video Demonstration
- 7.6.7.6. Tradeoffs of using an array implementation for a bag
- 7.6.8. Unavailable
Unit 8 Unit 8¶
- 8.1. Linked Chains (Pointers)
- 8.2. Introduction to Bags
- 8.2.1. Objectives
- 8.2.2. Linked Bags
- 8.2.2.1. Suggested Reading:
- 8.2.2.2. [4:10] Introduction to Linked Bags
- 8.2.2.3. [12:45] LinkedBag add and toArray Video Demonstration
- 8.2.2.4. Checkpoint 1
- 8.2.2.5. [7:14] ExLinkedBagJunit Video Demonstration
- 8.2.2.6. [14:00] LinkedBag getFrequencyOf and contains Video Demonstration
- 8.2.2.7. Checkpoint 2
- 8.2.2.8. [13:44] LinkedBag Removing an Item Video Demonstration
- 8.2.2.9. Checkpoint 3
- 8.2.3. Wrapping up Bags
- 8.2.4. Unavailable
- 8.3. Efficiency
- 8.4. Introduction to Stacks
Unit 9 Unit 9¶
- 9.1. Recursion
- 9.1.1. Objectives
- 9.1.2. [5:53] Intro to Recursion Video, Part 1 of 2
- 9.1.3. [12:41] Intro to Recursion Video, Part 2 of 2
- 9.1.4. [12:36] Factorial Examples Video
- 9.1.5. [13:30] Display Arrays Video
- 9.1.6. [9:53] Middle Processing Trace Video
- 9.1.7. [7:41] Linked Chain Recursive Video
- 9.1.8. [11:44] Tower of Hanoi Video
- 9.1.9. [8:28] Recursion Wrap Up Video
- 9.2. Software Design and MVC
- 9.2.1. Objectives
- 9.2.2. [9:30] Intro to Software Design Video
- 9.2.3. Functional and non-functional requirements
- 9.2.4. Identifying classes, fields, and methods
- 9.2.5. Design Activity: Case Study e-Commerce solution (online storefront) for ABC Ltd
- 9.2.6. Identifying relationships, hierarchies, and opportunities for reuse
- 9.2.7. Activity
- 9.2.8. Intro to Design Patterns and MVC
- 9.2.9. [11:00] MVC and Observer Video
- 9.2.10. MVC Example AddressBook
- 9.2.11. Design Review: Case Study - e-Commerce solution (online storefront) for ABC Ltd.
- 9.2.12. Case Study - Vending Machine
Unit 10 Unit 10¶
- 10.1. Generics 2
- 10.2. Queues
Unit 11 Unit 11¶
- 11.1. Lists
- 11.2. Iterators