Connected Vehicles and Smart Transportation A University-Industry-Government Partnership

2014 Course – Cloud Computing and Computer Security

Course Modules

Module 0 – Welcome and Introduction

This module introduces students to the course structure, goals and expectations.

Lecture Slides

Module 1 – What is cloud computing?

“Cloud computing” is a ubiquitous term – but what does it actually mean, when you get down to implementing it? This module looks at the types of cloud computing services, and the high-level technologies powering each. This will lay the groundwork for future modules in which we’ll create these technologies!

Lecture Slides
Classroom recording

Module 2 – How computers work

In order to understand cloud computing, we must first understand computing. This module takes us from the ground up, starting with gates based on transistors based on the properties to semiconductors, up to CPU design and binary arithmetic and finally machine code, assembly language and how computers communicate with their peripheral devices. It’s a whirlwind of a unit, but critical to understanding how higher levels of cloud computing work, and how computer security professionals protect against even the lowest-level attacks.

Lecture Slides
Gates, Transistors and Binary numbers
Binary Arithmetic, Calculation circuits, Machine code and CPU design
Hexadecimal numbers, Assembly language and Stacks
Assembly Exercise
Machine code exercise, Buses

Module 3 – How the internet works

Now that we have covered computing, what about the “cloud”? Module 3 examines how computers communicate, starting with buses driving wired connexions, the ethernet protocol, and looking at the layers on top of that (IP, TCP, UDP). It then gets into the application layer with HTTP.

Lecture Slides
Physical connexions, Ethernet, IP Addresses

Module 4 – Another look at cloud computing

With all this new information under our belts we can revisit cloud computing to see what it takes on a low-level to build a successful cloud system.

Lecture Slides

Module 5 – HTML

One of the most common delivery and presentation mechanisms for Software as a Service cloud applications is web browsers. These in turn use HTML to format content; HTML is the backbone of the front-end of websites.

Lecture Slides

Module 6 – The Amazon EC2

Our class used the Amazon EC2 to create our applications. This module introduces them to it, and to using virtual private servers in general.

Lecture Slides

Module 7 – Python, for the PC and the web

In order to make truly robust applications, we must understand basic, high-level programming. Python allows us to work both with high-performance computing and programming for the web. This module introduces us to it.

Lecture Slides
Introduction to Python
Python for the Web

Module 8 – High-performance computing, SciNet

One important type of cloud computing application is the High-Performance Computing cluster (called a supercomputer in common language). In this module we learn how they work, how people need to program for them, and students tried it themselves using SciNet, the University of Toronto’s HPC cluster.

Lecture Slides
Introduction to HPC, general concepts
Running jobs on SciNet

Module 9 – Parallel Python for HPC

Now that we know how to run jobs on HPC clusters, how do we write programmes for them? In this module we’ll look at this in more depth, and in particular at implementing embarassingly parallel algorithms, and basic message passing and broadcasting.

Lecture Slides
Basic pypar setup

Module 10 – Introduction to Security

Any reasonably-sized deployment becomes a target for attackers, especially anything using the WWW. This module gives us an overview of how that happens.

Lecture Slides
Introduction to Security
Phishing
Bots and CAPTCHAs
Students’ created CAPTCHAs
Viruses

Module 11 – Encryption: Caesar to Public-Key to Quantum

Communication is central to cloud computing. This module looks at the groundwork of secure communication: encryption.

Lecture Slides
Mathematical foundations, simple ciphers
Compound ciphers and public-key encryption
Authentication: SSL certificates and how to obtain them

Module 12 – Code injection: XSS, SQL injection, buffer overflows

Lecture Slides
Classroom recording (entire module)

Module 13 – Reverse-engineering and trojan horses

Lecture Slides
Machine-code reverse-engineering
Disassembly