MPCS 56600 Introduction to Blockchain (Summer 2018)

Section 1
Instructor(s) Shacklette, Mark (jmshackl)
Location Ryerson 276
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Elective


This course is a comprehensive technical introduction to relevant topics in the wider ecosystem surrounding blockchain. Our technological focus will include substantive topics in fundamental problems that blockchain is attempting to solve (and is generating), including algorithms, cryptography, security and trust, autopoietic peer-to-peer networking, distributed ledgers, double spending, proof of work and ownership issues, decentralized applications, smart contracts, and supporting technologies.  With that said, this is not a course in economics or monetary theory, trading cryptocurrencies, nor is it a course on regulatory or legal issues surrounding blockchain, although we will touch on many of these topics throughout the course.  We will also cover broader applications of blockchain technology beyond cryptocurrencies and ICOs including use cases from finance, insurance, science, healthcare, pharmaceuticals.
We will cover cryptocurrencies and bitcoin and mining as well as ethereum initially as our introduction to the problem space, but will quickly move on to building our own blockchain application.  Students may leverage a number of technologies including containerization (Docker), as well as the MEAN stack or Ruby on Rails for the more ambitious.  Students may work in whatever languages they know best and make the most sense in context.  These may include Java/javascript, C++, python, ruby, C#, and others.
Laboratories will be offered each week to reinforce a fundamental understanding of the core topics.
A final student project will be delivered by teams of students targeting a specific blockchain use case of the team's choice (teams will be given options).

Course Prerequisites

Core Programming

Other Prerequisites

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 50103-1 -- Mathematics for Computer Science: Discrete Mathematics