---
title: Progress Check #1 Review
tags:
- 4 🥳 done
- exam
- java
- review
- progress-check
- csci205
- code-quality
- checkstyle
- style
- documentation
---
# Progress Check #1 – Review
Exam will be 40 minutes long. The questions will be CodeRunner questions on Moodle.
## Overview
The first Progress Check in CSCI 205 will cover all material from the first third of the course. Any material presented in lectures, labs, and in zyBooks may appear on the exam.
### Exam Rules
- No windows open other than the exam itself
- Any necessary API reference will be provided within the question
- You may bring **ONE** sheet of notes:
- 8.5x11 paper
- Handwritten only
- Can use front and back
- Must be turned in at end of exam
## Topics
### 1. Java Fundamentals
#### Types
- **Strong Typing**
- What is meant by a strongly-typed language?
- How does it differ from Python?
- **Primitive Types**
- Eight primitive types
- Default values for each type
- Literal types
- **Type Conversion**
- Explicit vs implicit casting
- Understanding when implicit casting works/doesn't work
- **Wrapper Classes**
- Purpose and functionality
- Autoboxing and unboxing mechanics
- When autoboxing/unboxing is used
#### Basic Java
- **Variable Management**
- Variable declarations with optional initializers
- Assignment statements
- Declaring constants
- **Operators**
- Arithmetic operators
- Shortcut operators
- Increment/decrement operators
- **Arithmetic Considerations**
- How overflow affects results
- How roundoff errors affect arithmetic results
- **Code Structure**
- Using braces to specify block statements
#### Arrays
- **Array Basics**
- Instantiating an array
- Using initialization lists
- The `.length` member
- **Advanced Arrays**
- Multi-dimensional arrays
- Common operations and patterns
#### Enumerated Types
- Understanding how enums work
- Using the `enum` keyword
- Best practices for enum implementation
### 2. Java API Knowledge
> Note: You are never expected to memorize an API! You will be able to refer to the API documentation during the exam.
#### java.lang Package
- **Wrapper Classes**
- All eight wrapper classes
- Importance in Java
- Interaction with autoboxing/unboxing
- **`Math` Class**
- **`String` Class**
- String literals
- Common methods:
- `length()`
- `charAt()`
- `substring()`
- `compareTo()`
- `compareToIgnoreCase()`
- `indexOf()`
- **System I/O**
- `System.out`
- `System.in`
#### `java.math` Package
- `Math` class functionality
- `BigDecimal` usage
- `BigInteger` usage
#### `java.util` Package
- **Collections**
- `Arrays` utility class
- `ArrayList<T>` and common methods
- `Collections` utility class
- **Input/Output**
- `Scanner` class
- `Formatter` (printf format strings)
### 3. Regular Expressions
> Note: Common regex tokens and their meanings will be provided during the exam, similar to API documentation.
- **Pattern Matching**
- Creating basic patterns
- Using character classes
- Using quantifiers
- Understanding pattern syntax
- **String Operations**
- Pattern matching with regex
- String splitting using regex
- String replacement using regex
- Validating string formats
### 4. Control Flow
#### Loop Constructs
- **Types of Loops**
- `while` loops
- `do-while` loops
- `for` loops
- Enhanced `for` loops
- Understanding the differences between each type
- Knowing which loop is best suited for different scenarios
#### Branching Structures
- **`if/else` Statements**
- Basic structure
- Correctly addressing the "dangling else" problem
- **`switch` Statements**
- Restrictions on `switch` statements
- Using `case`, `break`, and `default` keywords
- Best practices
### 5. Object-Oriented Programming
#### Core Concepts
- **Abstraction**
- What it means
- How to implement it
- **Information Hiding**
- Purpose and benefits
- Using the `private` modifier
- **Objects**
- Definition of an object
- What encompasses an object?
#### Class Structure
- **Class Components**
- Defining fields (attributes)
- Constructors
- Methods
- Public interface
- **Encapsulation**
- Principles
- Implementation
- **Member Types**
- Instance members vs. class members
- Why and when to use `static`
- Best practices for static members
### 6. Git Version Control
- **Basic Operations**
- Understanding commit workflow
- Working with branches
- Best practices for version control