Chapter 0 modules¶
- 0.1. Parsing Command Line Parameters In Your Program
- 0.2. Debugging In Eclipse
- 0.3. Writing JUnit Tests
- 0.4. Abstract Data Types
- 0.5. Basic References Part 1
- 0.6. Pointers Syntax
- 0.7. Link Nodes Practice Exercises
- 0.8. Additional Practice Exercises
- 0.9. Summations
- 0.10. Mathematical Proof Techniques
- 0.11. Binary Trees
- 0.12. Hash Function Principles
- 0.13. Collision Resolution
- 0.14. Skip Lists
- 0.15. Derivations and Parse Trees
- 0.16. Parser Generators
- 0.17. Using Parser Generators to Interpret a Language
- 0.18. Semantics of the Lambda Calculus
- 0.19. Reduction Strategies
- 0.20. Regular Expressions
- 0.21. Closure Properties of Regular Grammars
- 0.22. Identifying Non-regular Languages
- 0.23. Properties
- 0.24. Models of Computation
- 0.25. Turing Machines
- 0.26. Understanding this Course
- 0.26.1. Read the Course Syllabus
- 0.26.2. Who Is This Class For?
- 0.26.3. Students of Many Experience Levels
- 0.26.4. Online and Face-to-face Sections
- 0.26.5. Weekly Schedule
- 0.26.6. Reading Activities
- 0.26.7. Labs
- 0.26.8. Programming Assignments
- 0.26.9. Programming Language and Environment
- 0.26.10. Cheating and The Honor Code
- 0.26.11. Self-Check: Confirm Your Understanding
- 0.27. Getting Started
- 0.27.1. Installing BlueJ
- 0.27.2. Introducing LightBot
- 0.27.3. From LightBot to Micro Worlds
- 0.27.4. Self Check: Micro-Worlds
- 0.27.5. A Bit More LightBot
- 0.27.6. Textually Representing Programs
- 0.27.7. Self-Check: Turning Micro-Worlds into Code
- 0.27.8. What Does LightBot Say About Programming?
- 0.27.9. A Programmable LightBot in Java
- 0.27.10. Syntax Practice 1a
- 0.27.11. Creating New Objects
- 0.27.12. Calling Methods on an Object
- 0.27.13. Putting it All Together
- 0.27.14. A Word on Making Code Easy to Read
- 0.27.15. Syntax Practice 1b
- 0.27.16. Programming Practice 1
- 0.27.17. Check Your Understanding
- 0.28. Inheritance and Polymorphism: Subclasses and Methods
- 0.28.1. The Jeroos of Santong Island
- 0.28.2. Class Hierarchy and Inheritance
- 0.28.3. Summarizing: What is Inheritance?
- 0.28.4. Syntax Practice 2a: Jeroo Methods
- 0.28.5. Problem Solving and Algorithms
- 0.28.6. Creating and Using Jeroo Methods
- 0.28.7. What is Polymorphism?
- 0.28.8. Syntax Practice 2b: Subclass Constructors
- 0.28.9. Syntax Practice 2c: More Subclass Constructors
- 0.28.10. Programming Practice 2
- 0.28.11. Check Your Understanding
- 0.29. Conditional and Repeating Actions
- 0.29.1. Selection
- 0.29.2. Conditions Using Sensor Methods
- 0.29.3. An Overview of Conditional Statements
- 0.29.4. Java’s Syntax for the If-Then-Else Structure
- 0.29.5. Syntax Practice 3a: If-Then-Else
- 0.29.6. Creating Optional Statements With If-then
- 0.29.7. Java’s Syntax for the If-then Structure
- 0.29.8. Syntax Practice 3b: If-Then
- 0.29.9. Java’s Syntax for the Multi-way Selection Structure (a cascaded if)
- 0.29.10. Syntax Practice 3c: Multi-way If
- 0.29.11. Compound Conditions
- 0.29.12. Syntax Practice 3d: Compound Conditions
- 0.29.13. Repeating Actions
- 0.29.14. Generic Repetition Structures
- 0.29.15. Java’s Syntax for the While Loop
- 0.29.16. Syntax Practice 3e: While Loops
- 0.29.17. Programming Practice 3
- 0.29.18. Check Your Understanding
- 0.30. Software Testing
- 0.30.1. What Is Software Testing?
- 0.30.2. Writing Your First Software Test
- 0.30.3. Check Your Understanding: Software Testing Concepts
- 0.30.4. More About Methods
- 0.30.5. Check Your Understanding: Method Signatures
- 0.30.6. Check Your Understanding: Methods with Parameters
- 0.30.7. Good Habits for Conditionals
- 0.30.8. Your Opinions on Motivation and Engagement
- 0.30.9. A Different Type of Complex If-Statement
- 0.30.10. Short Circuit Evaluation
- 0.30.11. Check Your Understanding: Logical Equivalence
- 0.30.12. Syntax Practice 4a: Compound Conditionals
- 0.30.13. Syntax Practice 4b: Conditionals and Relational Operators
- 0.30.14. Programming Practice 4
- 0.30.15. Module Review
- 0.31. Variables, Fields, and Parameters
- 0.31.1. Variables
- 0.31.2. Check Your Understanding: Variables
- 0.31.3. Fields Versus Local Variables
- 0.31.4. Changing Private Variables: Mutator Methods
- 0.31.5. Check your Understanding: Scope
- 0.31.6. Accessor Methods
- 0.31.7. Check Your Understanding: Fields, Getters and Setters
- 0.31.8. Syntax Practice 5a: Fields and Accessors
- 0.31.9. The Return Keyword
- 0.31.10. Check your Understanding: Typed Methods and Return Statements
- 0.31.11. Syntax Practice 5b: Mutators and Return Statements
- 0.31.12. Using Fields in Testing
- 0.31.13. Programming Practice 5a
- 0.31.14. Programming Practice 5b
- 0.32. Pictures and For-each Loops
- 0.33. Aggregation, Strings and More Loops
- 0.33.1. Object-Oriented Design: Aggregation, Composition, and Delegation
- 0.33.2. Strings and Characters
- 0.33.3. Check Your Understanding: Strings
- 0.33.4. Counter-controlled Loops
- 0.33.5. Check Your Understanding: Counter Controlled Loops
- 0.33.6. Tips on Random Numbers
- 0.33.7. Check Your Understanding: Random Numbers
- 0.33.8. Method Overriding
- 0.33.9. Check Your Understanding: Method Overriding
- 0.33.10. Syntax Practice 7a: For Loops and OO Design
- 0.33.11. Syntax Practice 7b: toString and Returning Values
- 0.33.12. Programming Practice 7a
- 0.33.13. Programming Practice 7b
- 0.34. Grouping Objects Using Lists and Nested For Loops
- 0.34.1. Collections of Objects
- 0.34.2. Interfaces
- 0.34.3. Check Your Understanding: Interfaces
- 0.34.4. Syntax Practice 8a: Strings
- 0.34.5. The List Interface
- 0.34.6. Generics
- 0.34.7. ArrayList
- 0.34.8. Check Your Understanding: ArrayLists
- 0.34.9. Syntax Practice 8b: Lists
- 0.34.10. Nested For Loops
- 0.34.11. Check Your Understanding: Nested For Loops
- 0.34.12. Syntax Practice 8c: Nested Loops
- 0.34.13. Check Your Understanding
- 0.34.14. Programming Practice 8a
- 0.34.15. Programming Practice 8b
- 0.35. Lists, Loop Idioms, Generics, and the Null Keyword
- 0.35.1. Modelling the Contents of a Library
- 0.35.2. Looping Idioms
- 0.35.3. Check Your Understanding: Loop Idioms
- 0.35.4. Syntax Practice 9a: Loop Idioms
- 0.35.5. Generics Revisited
- 0.35.6. Check Your Understanding: Generics
- 0.35.7. Syntax Practice 9b: Generics
- 0.35.8. The Null Keyword
- 0.35.9. Diagnosing a Null Pointer Exception
- 0.35.10. Check Your Understanding: Null
- 0.35.11. Using BlueJ’s Debugger
- 0.35.12. Using BlueJ’s Code Pad
- 0.35.13. Programming Practice 9a: Loop Idioms
- 0.35.14. Programming Practice 9b: Loops and Generics
- 0.36. Arrays
- 0.36.1. Creating An Array
- 0.36.2. Accessing Items in Arrays
- 0.36.3. Setting Items in an Array
- 0.36.4. Arrays Compared to Lists (or ArrayList)
- 0.36.5. Putting It All Together
- 0.36.6. Check Your Understanding: Arrays
- 0.36.7. Syntax Practice 10a
- 0.36.8. Iterating Over Arrays
- 0.36.9. Check Your Understanding: Iterating with Arrays
- 0.36.10. Syntax Practice 10b
- 0.36.11. Initializing Array Contents
- 0.36.12. Printing Arrays
- 0.36.13. Copying Array Variables
- 0.36.14. Naming Array Variables
- 0.36.15. Writing Test Assertions Involving Arrays
- 0.36.16. Applying Arrays in a Problem
- 0.36.17. Syntax Practice 10c
- 0.36.18. Check Your Understanding
- 0.36.19. Programming Practice 10a
- 0.36.20. Programming Practice 10b
- 0.37. Multi-dimensional Arrays
- 0.37.1. Dimensions in an Array
- 0.37.2. Check Your Understanding: 2D Arrays
- 0.37.3. Syntax Practice: 2D Array Basics
- 0.37.4. Iterating through a 2D Array
- 0.37.5. Check Your Understanding: Iterating with 2D Arrays
- 0.37.6. Syntax Practice: Looping Over 2D Arrays
- 0.37.7. Multi-Dimensional Arrays
- 0.37.8. Syntax Practice: 3D Arrays
- 0.37.9. But Can You Have Multi-dimensional Lists?
- 0.37.10. Integer Division and Modulus
- 0.37.11. Check Your Understanding: Modulus
- 0.37.12. Syntax Practice: Modulus
- 0.37.13. Programming Practice: Multi-dimensional Arrays
- 0.37.14. Programming Practice: Mod
- 0.38. Variable Scoping, Input, and Output
- 0.38.1. Variable Scoping
- 0.38.2. Summarizing Scope Concepts
- 0.38.3. Check Your Understanding: Scope
- 0.38.4. Syntax Practice: Scoping
- 0.38.5. Java Input and Output
- 0.38.6. Output Using PrintWriters
- 0.38.7. Check Your Understanding: Output
- 0.38.8. Input Using Scanners
- 0.38.9. A Complete Input Example
- 0.38.10. Check Your Understanding: Input
- 0.38.11. A Complete Input/Output Example
- 0.38.12. Testing I/O-based Operations
- 0.38.13. Check Your Understanding: Testing
- 0.39. Maps and Sets
- 0.39.1. The Map and Set Interfaces
- 0.39.2. The Map Interface
- 0.39.3. Syntax Practice: Making Maps
- 0.39.4. Adding and Accessing Pairs in a Map
- 0.39.5. Syntax Practice: Adding to Maps
- 0.39.6. Checking for and Removing Pairs in a Map
- 0.39.7. A Visual Summary of Using Map and HashMap
- 0.39.8. Syntax Practice: Map Contains and Remove
- 0.39.9. Looping Over Map Contents
- 0.39.10. Check Your Understanding: Maps
- 0.39.11. The Set Interface
- 0.39.12. Syntax Practice: Making A Set
- 0.39.13. Adding Values to a Set
- 0.39.14. Syntax Practice: Adding to a Set
- 0.39.15. Checking Values in a Set
- 0.39.16. Syntax Practice: Set Contains
- 0.39.17. Removing Values from a Set
- 0.39.18. Syntax Practice: Set Remove
- 0.39.19. Looping Over Sets
- 0.39.20. Check Your Understanding: Sets
- 0.39.21. Programming Practice: Maps
- 0.40. Static, Main, and Exceptions
- 0.40.1. The Main Method
- 0.40.2. Check Your Understanding: Main Methods
- 0.40.3. The Static Keyword
- 0.40.4. Check Your Understanding: The Static Keyword
- 0.40.5. Your Opinions on Motivation and Engagement
- 0.40.6. Errors
- 0.40.7. Throwing Exceptions
- 0.40.8. Check Your Understanding: Throwing Exceptions
- 0.40.9. Syntax Practice: Throwing Exceptions
- 0.40.10. Try/Catch Blocks
- 0.40.11. Check Your Understanding: Try/Catch Blocks
- 0.40.12. Syntax Practice: Try-Catch Blocks

