Courses

In this section of the Grotto Networking web site you will find technical course materials, short courses, tutorials, and academic advising information. 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 current materials. Questions, comments, or suggestions can be sent to Dr. Greg Bernstein.

An Overview course on Cybersecurity
This is an overview course on modern cybersecurity aimed at general computer science graduate students. Due to most text books being out of date or too specific we will be using a variety of freely available online resources these include: The Cyber Security Body Of Knowledge, National Cybersecurity Training & Education (NCyTE) Center, NIST: Computer Security Resource Center, and the CIS Controls.
A course on Website Development for CS Majors
A semester length (16 week) course on web development for computer science students at the junior or senior level who have taken a class on data structures/algorithms. It includes: HTML5 and the Document Object Model (DOM), Cascading Style Sheets (CSS), JavaScript 6 and use it in procedural, object oriented, and functional programming styles on client and server, networking and HTTP, Cookies, Web servers (Node.js and Express.js), modern web apps and GUIs via React. It does not assume any familiarity with web technologies.
A course on Web Systems for CS Majors
This was a semester length course for computer science students (undergraduate or graduate) on client and server side web development, server architectures, and networking. It assumed a previous courses on web development and software engineering.
A Course on Broadband Networking
A fairly complete set of notes for a second course in wired networking. Covering networking concepts, tunnels and VPNs, MPLS, data center networking, software defined networks, network simulation, queueing theory, switch architectures, and quality of service. Applies concepts to current trends in networking, uses Python based simulations (code included), relates material to various standards and current implementations. As I taught this course for the second time the students told me that they preferred written notes over power point slides. Hence as the course progressed more effort was allocated to writing up these notes. I will update these notes as questions and comments come up. You can send your questions and comments to Dr. B. Updated in 2016.
Modern Network Design with Python (Graduate Course)
One of the challenges to teaching a network design course is to keep the focus on networks and not have the course become an "algorithms" course. In this course we survey many different network design problems with an emphasis on network data and control plane induced constraints (Ethernet, MPLS, GMPLS, Optical, IP). The solution techniques are primarily based on linear and integer programming (a large class of optimization problems). Such an approach reflects my own experience with the routing and wavelength assignment problem for optical networks, and network optimization in MPLS networks. This is also the approach taken by the very good text and reference book — M. Pioro and D. Medhi, Routing, Flow, and Capacity Design in Communication and Computer Networks. Elsevier, 2004— used in this course. This course uses the Python programming language in conjunction with open source optimization solvers —COIN-OR—to formulate and solve realistic network design problems.