Welcome to the course. I'm Vincent Gramoli, and I will be your guide for the next few weeks of this course. I'm an Associate Professor in the School of Computer Science here at the University of Sydney. I also do my research at Data 61 CSIRO, and I've been affiliated with Inria in France, Cornell University in the US, and EPFL in Switzerland. I work as a researcher in blockchain and my field of expertise is distributed computing. For the last 15 years, I've been working on the consensus problem, which is a difficult problem that is central to blockchain systems. Distributed computing consists of leveraging multiple machines to improve on what a single machine can do alone. A blockchain is a distributed system because it distributes the tracking of digital asset ownership to multiple machines. In this course, I will introduce you to the distributed computing aspects of blockchains. I created this course to help bridge the gap between the academic literature on distributed computing and the recent blockchain advances we see over the Internet, on blog posts, wikis, and in the media at large. In this way, I hope you can gain a better understanding regarding the limitations and guarantees blockchains can offer. In this course, you will learn foundational concepts rather than technology-specific concepts. For example, this course will not teach you a specific programming language dedicated to write smart contracts, but will teach you the security and scalability limitations of algorithmic decisions. This course is organized in five modules, each designed to be covered in one week. In the first module, we will introduce the blockchain and investigate its relation to distributed computing. Here we will learn the basics on blockchain abstraction and that consensus between machines can help mitigate the risks of having an attacker spending the same assets twice. An undesirable situation called double-spending. From there, we will proceed to module 2, where we will learn how classic blockchains try to solve consensus. In this module, we will look at the failures and delays blockchain system must take into account and how these events may prevent machines from reaching consensus. In module 3, we'll take a deeper look at how to solve the consensus problem central to blockchain systems. Here we'll investigate a few algorithmic solutions to the consensus problem comparing the complexity of these different solutions. In module 4, we will investigate how delays in the network can impact the security of the blockchain. We will illustrate this using network attacks that allowed hackers to steal digital assets in the past, and that every blockchain designer should be aware of. Then in the fifth module, we will discuss how to cope with the security problem mentioned above. Within each module, there will be lectures and links to recommended resources and readings. There will also be quizzes to assess all the knowledge you learned each week. I also encourage you to participate in the weekly discussion topics, as this will help you learn and interact with other learners from across the globe. By the end of this course, I hope you will have a better understanding of what makes a blockchain scalable and secure. It is my pleasure to guide you through this enriching journey.