In this section of the Grotto Networking web site you will find short courses and tutorials. Most of the material here has either to do with open source software projects, networking, or a combination of the two. Below is a brief description of the materials. Questions, comments, or suggestions can be sent to Dr. Greg Bernstein.

Git for Personal and Class Projects
Git is a version control system (VCS). A VCS may sound like overkill for a personal project or class assignment, but, Git has properties that make it quite amenable for this use. However, Git, is extremely powerful, it is used on some of the largest open source projects in history hence it has a large and potentially overwhelming slew of commands and options. This guide will provide you with a minimal set of *Git* commands that useful in any project no matter how small. To keep this guide general we will only utilize the *Git* command line.
Basic Discrete Event Network Simulations with Python (Tutorial)
For engineers and particularly for those in network probability, statistics, and queueing theory needs to be taught "hands on"! In addition to aid in understanding the fundamentals I wanted the tools used as "close to the metal" as possible while minimizing the learning curve. While teaching a graduate course on broadband networking I came up with a series of demonstrations programs and a small Python library to show the students how to: generate random variables, plot histograms, simulate network packet queues, simulate token bucket filters, and simulate more advanced networking queueing disciplines such as weighted fair queueing.
SDN Fun link
Hands on with SDNs. Tips and educational examples of SDN programming based on Mininet and open source controllers, libraries and tools. Including Python, NetworkX, Ryu, POX, VirtualBox, Putty, Xming, IPython, etc... Includes examples of shortest and widest path L2 forwarding. Additional examples illustrate debugging with Ryu, and how to enable POX with ZeroMQ. Last updated: 2016.
Network and Compute Optimization(CSO)
Networked applications and data centers can achieve lower costs and higher quality of service by not just optimizing computing and networking separately but by jointly optimizing the use of compute and networking resources together. Modern network control plane technologies such as software defined networks (SDN/OpenFlow) and generalized multi-protocol label switching (GMPLS) allow timely, flexible methods for network optimization. Here we show how these can be combined with data center optimization techniques. Last updated: 2013
Java Universal Network/Graph Framework (JUNG)
"JUNG —the Java Universal Network/Graph Framework—is a software library that provides a common and extendible language for the modeling, analysis, and visualization of data that can be represented as a graph or network." When Grotto Networking was developing network design and analysis code in the Java programming language this was our primary library for graphs/networks. This is a very well designed library with tons of features. To give back to the open source community and particularly the authors of JUNG we wrote up a tutorial that features minimalistic examples to promote understanding and build up to a moderate level of complexity. Truly impressive examples of JUNG features can be found in the examples in the JUNG distribution. The JUNG tutorial in PDF for can be found at JUNG2-Tutorial and all the mentioned code examples can be found in the directory JUNG.