Course Outline

Only basic knowledge in cryptography or computer security is assumed. It would be ideal if you have done a cryptography and/or security lecture at FAU or during your previous studies somewhere else. The list of topics covered are the following:

  • Bitcoin Protocols
  • Nakamoto Consensus Algorithms
  • Bitcoin Community and Politics
  • Alternative Mining Approaches
  • Alternative Coins: Ethereum, Anonymous Payments, Zero-Knowledge Cash…
  • Credit Systems: Ripple, PrivPay
  • Other state-of-the-art topic related to cryptocurrencies

General Information

  • First lecture: 27/02/2017 (Room 02.134)
  • Instructor: Prof. Dr. Dominique Schröder
  • ECTS credits: 5.0
  • Language: English
  • StudOn: here


Date Session 1

9:00 – 10:45

Session 2

11:00 – 12:30

Session 3

14:00 – 16:00

 27/02  Introduction to Cryptography and Cryptocurrencies Nakamoto Consensus Exercise 1
 28/02 Bitcoin Protocols Bitcoin Applications and Security Exercise 2
 01/03 Mining Bitcoin Mining Strategies and Attacks Exercise 3
 02/03 Starting at 10:00:  Redactable Blockchain Programming 1 Programming 2
 03/03 Programming 3 Programming 4 Programming 5
 06/03 Anonymity 1 Anonymity 2 Exercise 4
 07/03 Ripple and Payment Networks 1 Ripple and Payment Networks 2 Exercise 5
 08/03 Modern Ideas, Ethereum and Alternative Mining Approaches  Other Blockchain Applications Exercise 6
 09/03 Starting at 10:00: Research Talk Programming 6 Programming 7
10/03 Programming day (complete day)
13/03 Programming day (complete day)
14/03 Programming day (complete day)
15/03 Programming day (complete day)
16/03 Programming day (complete day)
17/03 Programming day (complete day)


Programming Project

The programming project will consist in the development of a new blockchain-based coin from *scratch*.
The students will be separated into small groups, and be required to implement a library that performs all the
basic blockchain operations such as,

* P2P networking
* Consensus mechanism
* Wallet interface

The description and requirements of each of the previous points will be given in more details at a later time.

The final goal of the project is to have a high-quality test framework for the development of
proof-of-concept implementations on the blockchain technology. We expect to have a high quality,
and very well documented code to be released as an open-source project at the end of the course.