Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
CSCI 1302
CSCI 1302

Front Matter

  • Copyright
  • Dedications
  • Acknowledgments

Tools:

  • 1. Unix Environment
    • 1.1. Operating Systems
    • 1.2. Unix
    • 1.3. Required Setup
    • 1.4. The Prompt
    • 1.5. Terminals
    • 1.6. Logging In
    • 1.7. Summary of Commands
  • 2. Unix Commands
    • 2.1. Navigating the File System
    • 2.2. Time-saving Tips
    • 2.3. Getting Help
    • 2.4. Inspecting Files
    • 2.5. New Directories
    • 2.6. Moving and Removing
    • 2.7. Additional Practice
  • 3. The Emacs Text Editor
    • 3.1. Introduction
    • 3.2. Control and Meta
    • 3.3. Open / Create File
    • 3.4. Basic Commands
    • 3.5. Customize Emacs
    • 3.6. Built-in Emacs Tutorial
  • 4. Javadoc and API Documentation
    • 4.1. Introduction
    • 4.2. Getting Started
    • 4.3. Generating the API Documentation Website
    • 4.4. Hosting the API Documentation Website
    • 4.5. Troubleshooting Tips
    • 4.6. Writing Javadoc Comments
    • 4.7. FAQ
  • 5. UML
    • 5.1. Introduction to UML
    • 5.2. UML Class Diagrams
    • 5.3. UML Software and Tools
  • 6. Interpreter Scripts
    • 6.1. What is an Interpreter Script?
    • 6.2. Bash Scripts
  • 7. Maven
    • 7.1. Maven Introduction
    • 7.2. Creating a Project
    • 7.3. Updating the POM
    • 7.4. Using Maven

Java:

  • 1. Reference Variables
    • 1.1. Introduction
    • 1.2. Variables
    • 1.3. Reference Type Examples
    • 1.4. Reference Types and Assignment Values
    • 1.5. Additional Practice Exercises
  • 2. Packages
    • 2.1. Introduction
    • 2.2. Default Package
    • 2.3. Named Package
    • 2.4. Code Dependencies
    • 2.5. Further Important Notes
    • 2.6. Additional Practice Exercises
  • 3. Exceptions
    • 3.1. Warm Up
    • 3.2. Introduction
    • 3.3. Exception Messages
    • 3.4. Avoiding Exceptions
    • 3.5. Handling Exceptions (Try-Catch)
    • 3.6. Regarding Scope
    • 3.7. Checked vs. Unchecked Exceptions
    • 3.8. Multiple Catch Blocks
    • 3.9. Explicitly Throwing Exceptions & Exception Propagation
  • 4. Command-Line Arguments
    • 4.1. Introduction
    • 4.2. String[] args
    • 4.3. Command-Line Arguments Tutorial
  • 5. Interfaces
    • 5.1. Introduction
    • 5.2. Interface Example
    • 5.3. Setting up the Environment
    • 5.4. Declaring an Interface
    • 5.5. Implementing an Interface
    • 5.6. Using an Interface
    • 5.7. Common Functionality among Disparate Classes
  • 6. Varargs
    • 6.1. Getting Started with Varargs
    • 6.2. The printf Method
  • 7. Inheritance
    • 7.1. Introduction
    • 7.2. Setting up the Environment
    • 7.3. Person Example (Refactoring Existing Code)
    • 7.4. What is Inherited?
    • 7.5. Animal Example
    • 7.6. Method Overrides
    • 7.7. Abstract Classes
    • 7.8. Inheritance and Polymorphism
  • 8. ADTs and Lists
    • 8.1. Introduction to Linked Lists
    • 8.2. Introduction to ADTs
    • 8.3. The List Interface (ADT)
    • 8.4. List ADT - Examples with Both Implementations
    • 8.5. Linked List Get Operation
    • 8.6. Linked List Add Operation
    • 8.7. Conclusion
  • 9. Visibility
    • 9.1. Introduction
    • 9.2. Public and Private Visibility
    • 9.3. Package Private Visibility
    • 9.4. Protected Visibility
    • 9.5. Summary of Visibilities
  • 10. Generics
    • 10.1. Introduction to Generics
    • 10.2. Wrapper Classes
    • 10.3. Setting up the Environment
    • 10.4. Creating the Shipping Container Class
    • 10.5. Introduction - Generic Methods
    • 10.6. Generic Methods
    • 10.7. Generic Methods - Video Example
  • 11. Lambda Expressions
    • 11.1. Introduction
    • 11.2. Functional Interfaces
    • 11.3. Motivating Example
    • 11.4. Another Example
    • 11.5. How to Create Lambda Expressions
    • 11.6. More Examples
    • 11.7. Functional Interfaces as Parameters
  • 12. JavaFX
    • 12.1. Getting Started
    • 12.2. Compiling JavaFX Applications
    • 12.3. High-Level Walkthrough
    • 12.4. Mid-Level Walkthrough
    • 12.5. Events and Event Handlers
    • 12.6. JavaFX 17 Bookmarks and Notes
  • 13. JavaFX Custom Components
    • 13.1. Getting Started
    • 13.2. Creating a Custom Component
  • 14. Threads
    • 14.1. Quick Introduction
    • 14.2. Thread Terminology
    • 14.3. The Thread Class
    • 14.4. Daemon Threads
    • 14.5. JavaFX Application Thread
  • 15. JSON
    • 15.1. Introduction to JSON
    • 15.2. JSON Objects
    • 15.3. Serializing to JSON in Java
    • 15.4. Parsing JSON in Java
    • 15.5. Adding Gson to a Project
  • 16. HTTP
    • 16.1. Introduction to HTTP
    • 16.2. Java’s java.net.http Library
    • 16.3. Complete Examples
  • 17. Recursion
    • 17.1. Introduction
    • 17.2. Infinite Recursion
    • 17.3. Problems and Sub-problems
    • 17.4. Recursive Countdown
    • 17.5. Recursive Count Up
    • 17.6. Recursive Factorial
  • 18. Algorithm Analysis
    • 18.1. Introduction
    • 18.2. Algorithm Analysis Steps
    • 18.3. Example Problems
    • 18.4. Space Complexity Analysis

Appendices:

  • Activities
    • TicTacToe
  • Glossary
  • References
Back to top

Copyright¶

© 2024-present Michael E. Cotterell, Bradley J. Barnes, and the University of Georgia.

License¶

This work is licensed under CC BY-NC-SA 4.0. To view copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

Notices¶

University of Georgia and University System of Georgia

The content and opinions expressed in this work do not necessarily reflect the views of nor are they endorsed by the University of Georgia or the University System of Georgia.

Regarding Code Visualizations

The authors use PlantUML to generate UML diagrams. PlantUML is released under a GPL license, but diagrams generated by the execution of PlantUML are not considered to be covered by that same license. As such, diagrams included herein that are generated by the execution of PlantUML are subject to the same license as this book (CC BY-NC-SA 4.0).

The authors of this book use a forked version of Python Tutor (i.e., “OnlinePythonTutor”) that was released by Philip J. Guo under a MIT license in order to generate memory map diagrams from execution traces of Java programs. The authors use a custom execution trace generator that was developed as part of the grant work for the book’s development in order to streamline the generation and integraion of these memory map diagrams and support newer versions of the Java programming language. Diagrams included herein that are generated by the execution of the author’s custom execution trace generator and their fork of “OnlinePythonTutor” are subject to the same license as this book (CC BY-NC-SA 4.0).

OnlinePythonTutor License
Original work Copyright (C) Philip J. Guo (philip@pgbovine.net)
Modified work Copyright (C) 2019 Pathrise (dev@pathrise.com)

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Regarding Trademarks

All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of this book by such owners.

Regarding Errors

The authors have made every effort to ensure that the information in this revision of the book was correct at the time it was released. They do not assume and hereby disclaim any liability to any party for any loss, damage, or disruption caused by errors or omissions, whether such errors or omissions result from negligence, accident, or any other cause, or from any usage of the information herein.

Next
Dedications
Previous
Home
Copyright © 2024-present Michael E. Cotterell, Bradley J. Barnes, and the University of Georgia.
Made with Sphinx and @pradyunsg's Furo
The content and opinions expressed in this work do not necessarily reflect the views of nor are they endorsed by the University of Georgia or the University System of Georgia.
Submit Feedback
On this page
  • Copyright
    • License
    • Notices