CODE 108872 ACADEMIC YEAR 2024/2025 CREDITS 6 cfu anno 2 COMPUTER SCIENCE 10852 (LM-18) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE English TEACHING LOCATION GENOVA SEMESTER 1° Semester TEACHING MATERIALS AULAWEB OVERVIEW This course will explore the fundamentals of blockchains, their cryptographic principles, smart contracts, and some frameworks introduced to help developers building decentralized applications in the Web3 ecosystem. AIMS AND CONTENT LEARNING OUTCOMES Learning the techniques and problems related to systems based on permissioned and permissionless blockchains, and decentralized systems in general, examining with particular attention the aspects related to security. AIMS AND LEARNING OUTCOMES At the end of the course, students will be able to: DISCUSS decentralized consensus algorithms and their use in peer-to-peer networks EXPLAIN how cryptographic techniques guarantee the security of distributed ledgers ANALYSE basic scalability issues in blockchain architectures and DESCRIBE some solutions proposed in the literature DISCUSS some security and privacy issues in blockchain architectures and their countermeasure IMPLEMENT basic smart contracts interacting with programmable blockchains (e.g., Ethereum, Solana) USE available tools and libraries to interact with deployed smart contracts UNDERSTAND basic economic, ethical and environmental problems behind blockchain platforms PREREQUISITES To be successful in this course, students should have basic knowledge on: Computer networks Distributed systems Programming (JavaScript, Python) TEACHING METHODS This course includes lectures and practical exercises organized in class. SYLLABUS/CONTENT How to build a shared state without central authorities Algorithms to achieve consensus in a decentralized and adversarial system (e.g., Byzantine, PoW, PoS, ...) Cryptographic techniques Peer-to-peer network protocols Programmable blockchains and decentralized applications Languages and frameworks for smart contracts and client applications Peer-to-peer file systems Practicing with test networks Writing secure and efficient code Scalability issues and solutions Layer 2 (off-chain) networks Sharding: reducing computational redundancy Security and Privacy issues Anonymizing and de-anonymizing users and transactions Attacks and defenses for smart contracts RECOMMENDED READING/BIBLIOGRAPHY Scientific papers and other resources will be indicated on AulaWeb during the course. TEACHERS AND EXAM BOARD MATTEO DELL'AMICO Ricevimento: By appointment (in person or online), taken via email (matteo.dellamico@unige.it). MARINA RIBAUDO Ricevimento: By appointment (in person or online), taken via email. Exam Board MATTEO DELL'AMICO (President) GIOVANNI LAGORIO MARINA RIBAUDO (President Substitute) LESSONS LESSONS START In agreement with the calendar approved by the Degree Program Board of Computer Science. Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam consists of the following parts: (i) a written test and (ii) an oral presentation during which students will discuss their assignments. ASSESSMENT METHODS The written test, which serves as the admission to the assignments discussion, consists of some questions related to the topics covered in class and it allows the evaluation of the student's theoretical knowledge acquired during the course. For the oral part, students will be evaluated based on the quality of the produced code and the completeness of the reports. The written test and the assignments discussion take place in the same session. Exam schedule Data appello Orario Luogo Degree type Note 07/01/2025 10:00 GENOVA Scritto 03/02/2025 10:00 GENOVA Scritto 03/06/2025 10:00 GENOVA Scritto 03/07/2025 10:00 GENOVA Scritto 04/09/2025 10:00 GENOVA Scritto