# Introduction to Algorithms and Data Structures (Java)

Course Number:

NTVJVA155

Audience:

Course Duration:
3 Days

Prerequisites:

Solid Java programming skills are required. At least 6 months of hands on experience with Java or graduating a Java boot camp are required.

Course Objectives:
• Be able to explain the guiding principles behind analyzing an algorithm
• Implement code and discuss the intent of the Merge Sort algorithm
• Gain a deeper appreciation of the Java Collection Framework
• Work hands on with less common collection classes
• Understand and demonstrate Big O notation
• See the benefits and speed of good hashing algorithms
• Implement code and explain the motivation for using a Quicksort
• Practice fundamental graph concepts
• Learn to implement a Breath First Search
• Implement code and analyze Dijkstra’s Algorithm
Course Outline:
• Introduction
• Algorithms – why bother?
• The Power of Algorithms
• Data Structures – Part One (The Java Collection Framework)
• The Collections Framework and its API
• Collections and Java Generics
• Collection, Set, List, Map, Queue
• Autoboxing
• Collections of Object (non-generic)
• Using ArrayList, HashSet, HashMap, NavigableMap, LinkedList
• for-each Loop
• Processing Items with an Iterator
• Sorting- Collections.sort(), TreeMap and TreeSet, Comparable and Comparator
• Data Structures – Part Two (Streams)
• The Stream API
• What are Streams?
• Streams and Collections
• Filtering Collections
• Chaining and Pipelining
• Processing Techniques
• Extracting Data – searching, sorting, performing
• Merge Sort
• Motivation and Intent
• Psuedocode
• Analysis
• Implementation
• Asymptotic Analysis and Big O Notation
• Why Asymptotic?
• Big O Fundamentals
• Big Omega and Theta
• Hash Tables
• Hashing Explained
• Motivation
• More Effective Java
• Implementation
• Quicksort
• High Level Description
• Performing Quicksort
• Examining the Running Time
• Breath-First Search (BFS)
• Getting Started with Graphs
• Motivation for BFS
• Implementing BFS
• Dijkstra’s Algorithm <optional – if time allows>
• Terms to Know
• Intent of Dijkstra
• Implementation

Course No. N/A

Course No. N/A

Course No. N/A