This two-day Beginning Java Data Structures and Algorithms training class explores core algorithms and implementations and provides a base understanding of runtime complexity theory and various methods and concepts.

- Learn about space and time complexities express them using big O notation.
- Explore various classic sorting algorithms, such as merge and quick sort.
- Understand the workings of basic (Lists, queues and stacks) and complex data structures (hash tables and binary trees).
- Gain an insight into various algorithm design paradigms (Greedy, Divide and Conquer and Dynamic programming).
- Discover string matching techniques.
- Master graph representations and learn about different graph algorithms, such as cycle detection, traversal and shortest path.

- Algorithms and Complexities
- Developing our first algorithm
- Measuring algorithmic complexity with Big O notation
- Identifying algorithms with different complexities

- Sorting Algorithms and Fundamental Data Structures
- Introducing bubble sort
- Understanding quick sort
- Using merge sort
- Getting started with fundamental data structures

- Hash Tables and Binary Search Trees
- Introducing hash tables
- Getting started with binary search trees

- Algorithm Design Paradigms
- Introducing greedy algorithms
- Getting started with divide and conquer algorithms
- Understanding dynamic programming

- String Matching Algorithms
- Beginning naive search algorithm
- Getting started with the Boyer-Moore string searching algorithm
- Introducing other string matching algorithms

- Graphs, Prime Numbers, and Complexity Classes
- Representing graphs
- Traversing a graph
- Calculating shortest paths
- Prime numbers in algorithms
- Other concepts in graphs

Each student in our Live Online and our Onsite classes receives a comprehensive set of materials, including course notes and all the class examples.

Experience in the following *is required* for this Java Fundamentals class:

- Basic understanding of object-oriented programming techniques.