# Introduction to Networks Graphs and Network Visualisation

## Duration: 5 Days

## Course Background

The study and understanding of networks, including computer networks, social networks, and biological networks, is becoming more and more relevant and important. The rise of the Internet and the wide availability of inexpensive computers and the emergence of cloud computing technologies have made it possible to gather and analyze network data on a large scale. The development of a variety of new theoretical and computational tools has made it possible to extract new knowledge from a wide variety of networks. The purpose of this course is to introduce the relevant concepts and theory and to explore the various tools, frameworks and algorithms that can be used for network analysis and visualisation.

## Course Prerequisites and Target Audience

Attendees are expected to have a reasonable knowledge of maths and programming. Maths up to high school level and several years of programming experience. The course will not implementation of code, but will explore various techniques and algorithms via actual code snippets and pseudo code. The exercises will, in the main, involve exploration of various tools and frameworks.

## Course Outline

- An introduction to graphs and networks
- Graphs and Networks - Foundations
- Graphs as collections of nodes and arcs
- Nodes and arcs can be associated with properties
- Directed vs. undirected graphs
- Trees and Directed Acyclic graphs as special graphs
- Random graphs
- Data structures and classes for representing graphs
- Graph traversal - breadth first vs. depth first
- Examples and uses of graphs
- Frameworks and tools for representing, analysing and visualising graphs - a survey
- Boost Graph Libraries - C++
- Snap - C++ graph library
- NetworkX - Python package for visualising and analysing graphs
- JUNG - Network analysis package in Java
- Gephi - Graph analysis and visualisation toolkit - implemented in Java
- Graphviz
- Metis - Graph Partitioning library - implemented in C
- Applied Graphs
- Network flows
- Transportation Networks
- Project planning and management
- Design of communications system codes
- Physical networks
- Computer networks and cloud computing networks
- Social networks
- Diffusion of ideas and fashions
- Bioinformatics networks - Genomics, Proteomics and Metabolomics
- Locating clusters and patterns in graphs
- Graph Visualisation and Interaction
- Node - shape, size, colour
- Pie nodes
- Edges - direction, tapering, colour, size
- Layouts
- Force directed
- Hierarchical
- Radial
- Balloon
- Hairballs and how to handle them
- Edge bundling
- Layered Graphs and Quilts