1. Introduction
Programming Project 2022/23

1.4. Topics

Git

Includes lab? Yes

  • Version control systems
  • Creating and cloning repositories
  • Pushing and pulling
  • Working with multiple branches
  • Conflict resolution

How Java works

Includes lab? No

  • Java Virtual Machine
  • Java shell commands (javac, java)
  • Java Memory Model
  • Stack vs Heap
  • Pass-by-value vs Pass-by-reference

Exceptions

Includes lab? Yes

  • Throwable, Exception, RuntimeException, and Error
  • Declaring exceptions
  • Handling exceptions
  • if vs. try-catch

Inheritance

Includes lab? Yes

  • Interfaces
  • Abstract classes
  • Final classes
  • Polymorphism
  • Overriding
  • Overloading
  • Casting

Arrays

Includes lab? Yes

  • Working with arrays
  • Unidimensional and multidimensional arrays
  • The Arrays class
  • Variable-length arguments

Collections

Includes lab? Yes

  • Java Collection: a native framework for common data structures
    • List
    • Set
    • Map
    • Queue

Generics

Includes lab? Yes

  • Generic programming
  • Generic methods
  • Generic types
  • Wildcards

Lambda expressions

Includes lab? Yes

  • Functional programming
  • Functional interfaces
  • Writing lambda expressions
  • Writing methods that accept lambda expressions

Streams

Includes lab? Yes

  • Streams
  • General Stream methods : filter, map, collect, forEach, findFirst, reduce, etc.

I/O

Includes lab? Yes

  • Formatted output (printf)
  • Encodings
  • Reading and writing files
  • File streams

Data serialization

Includes lab? Yes

  • CSV
  • XML
  • JSON
  • YAML
  • Java Libraries for JSON

HTTP in Java

Includes lab? No

  • HTTP
  • RESTful Web Services
  • Making HTTP requests in Java

Regular expressions

Includes lab? Yes

  • Parsing strings
  • Writing regular expressions to
    • Find substrings
    • Replace substrings
  • Java Regex API

Multi-threading

Includes lab? Yes

  • Concurrent programming
  • Working with threads
  • Sharing resources
  • Race conditions

Testing

Includes lab? Yes

  • Brief overview of testing
  • JUnit 5
  • Unit testing best practices

Java build tools

Includes lab? Yes

  • Maven
  • Creating Maven projects
  • Writing pom.xml files
  • Maven lifecycle phases
  • Basic Maven plugins

Object-oriented design

Includes lab? No

  • Design patterns
  • Use of design patterns
  • Gang of Four design patterns
    • Creational patterns
    • Structural patterns
    • Behavioral patterns