This course aims to introduce blockchain technology and its applications. By the end of this course, students will develop a proper understanding of blockchain technology. They will learn architecture, design, mining, and consensus algorithms of Bitcoin protocol in depth. Other blockchain implementations like Ethereum and Hyperledger Fabric will also be discussed. The students will also implement different applications using blockchain technology, which will help them know the ins and outs of blockchain technology. The course relies heavily on reading and programming assignments.