## Learning Outcomes

At the end of this lecture, you’ll be able to:

- Identify the various components of Graph structures (node/vertex, edge, nodes adjacent to a node, edges incident with a node, etc).
- Identify the operations of Graph ADT.
- Describe adjacency/incidence list vs. matrix-based representation of a graph.
- Analyze and compare the complexity of basic operations for adjacency list vs. matrix-based representations of a graph.

## Lecture Plan

In this lecture, we'll cover the following lessons:

- Graph: An abstraction for problem solving
- Graph: From definition to abstraction
- More Abstractions: Vertex and Edge
- Graph Interface: Insert Vertices
- Graph: Directed vs Undirected
- Graph Interface: Directed Graph
- Graph Interface: Insert Edges
- Graph: Kinds of Edge⚡
- Graph Interface: Insertion Exception
- Graph Interface: Getting the endpoints
- Graph: Adjacent Vertices
- Graph Interface: Incident edges
- Graph Interface: Removals
- Graph: Labeling
- Graph Interface: Labeling
- Graph: Preliminaries for Analysis
- Graph Representation: Adjacency Matrix
- Graph Representation: Adjacency List
- Graph: Sparse vs Dense
- Graph ADT: Efficiency of Operations⚡
- Graph: Leonhard Euler

Lessons marked with ⚡ contain exercise/activity.