Publication in the Diário da República: Despacho n.º 8644/2020 - 08/09/2020
5 ECTS; 3º Ano, 1º Semestre, 28,0 PL + 28,0 TP , Cód. 911943.
Lecturer
- António Manuel Rodrigues Manso (1)(2)
(1) Docente Responsável
(2) Docente que lecciona
Prerequisites
Java programming
Graphical user interfaces
Object-oriented programming
Data structures and algorithms
Computer networks
Objectives
1 - Understand the essential concepts of distributed computing and their application in different architectures
2 - Understand and apply security principles in distributed systems.
3 - Develop skills to design and develop robust, efficient and secure distributed systems
Program
1 - Distributed systems
a. Introduction to distributed systems
b. Distributed systems architectures
c. Blockchain technology: Definition, data structures and consensus protocols.
2 - Information security
a. Trusted systems and security threats
b. Security objectives: Confidentiality, Integrity and Availability
c. Design and implementation of secure systems
3 - Multitasking computing
a. Models and architecture of parallel execution systems
b. Parallelization of algorithms
c. Programming with Threads
d. Concurrent access to resources
e. Load balancing
4 - Distributed computing
a. Models and architecture of distributed systems
b. Programming with Sockets
c. Remote execution of procedures
d. Programming with services
Evaluation Methodology
Practical work 60% - Minimum of 10.0 out of 20.
Theoretical exam: 40% - minimum of 7.0 out of 20
Students who fail the practical assignments will be given a practical exam instead.
Bibliography
- Cardoso, J. (2010). Programação de Sistemas Distribuídos em Java. Lisboa: FCA
- Coulouris, G. e Dollimore, J. (2011). Distributed Systems: Concepts and Design. (Vol. 1). USA: Addison Wesley
- González, J. (2017). Java 9 Concurrency Cookbook. Oracle: PAckt
- Singhal , B. (2018). Beginning Blockchain: A Beginner's Guide to Building Blockchain Solutions . Paperback : Apress
Teaching Method
Lectures to present the syllabus.
Practical laboratory classes to solve problems and consolidate knowledge Accompanying and guiding the development of Distributed Systems projects
Software used in class
- Java Development Kit
- Bouncy Castle Open-source cryptographic API
- Netbeans