Distributed Programming  
General Course Information  
Edirlei Soares de Lima  
<edirlei.lima@universidadeeuropeia.pt>  
Distributed Programming  
Professor: Edirlei Soares de Lima  
Education:  
B.Sc. in Computer Science UnC  
M.Sc. in Computer Science UFSM  
Ph.D. in Computer Science PUC-Rio  
Teaching Experience: PUC-Rio, UNIRIO, UERJ, IADE-UE  
Game Experience:  
Game Engines: RPG Builder, 3D Game Builder (http://www.3dgamebuilder.com.br/);  
Research Projects: most are related with Logtell (http://www.icad.puc-rio.br/~logtell/);  
Games: Krimson (Best Game Award at SBGames 2010 Indie Game Development  
Festival), and several other prototype games.  
What is Distributed Programming?  
Distributed computing is a field of  
computer science that studies  
distributed systems.  
A distributed system is a system  
whose components are located on  
different networked computers,  
which then communicate and  
coordinate their actions by passing  
messages to each other.  
Distributed programming involves  
the implementation of distributed  
systems.  
Distributed Programming  
Games & Apps Development:  
Study of the paradigm of distributed programming, distributed  
systems, and data communication solutions;  
Study of the C++ programming language, and its use in the Unreal  
Engine.  
Learning Outcomes:  
1
2
3
4
. Implement games and general applications using the paradigm of  
distributed programming.  
. Understand the main models for distributed programming and  
distributed systems.  
. Implement client-server and peer-to-peer games using C++ and  
Unreal Engine.  
. Assess aspects related with the performance of distributed systems,  
their advantages, and their shortcomings.  
Distributed Programming  
Module Content:  
1
2
3
4
5
6
7
8
. Introduction to distributed systems and distributed programming;  
. Processes, threads and synchronization;  
. Distributed systems architectures;  
. Introduction to Unreal Engine and C++ programming;  
. Multiplayer and network communication in Unreal Engine;  
. TCP and UDP communication in C++ on Unreal Engine;  
. REST web services and HTTP communication in C++ on Unreal Engine;  
. Evaluation of distributed systems.  
Method  
Active and experiential learning:  
Theoretical concepts;  
Practical examples;  
Implementation exercises;  
Game framework: Unreal Engine  
Semester’s PBL team project:  
Implementation of the game using the methods learned during the  
course (architecture, communication, and performance).  
Evaluation  
Continuous Assessment (bipartite):  
[50%] Intermediate assessment:  
[50%] Individual exercises on the concepts learned;  
[50%] Three intermediate deliveries of the team project (within the  
semester’s PBL team project).  
[50%] End of term assessment:  
[100%] Final delivery of the team project (within the semester’s PBL team  
project) with individual discussion.  
Final Assessment:  
[100%] Individual project development, delivery, and discussion.  
Evaluation  
Project Deliveries:  
1st delivery: identification of the communication necessities;  
2nd delivery: working prototype with basic network communication;  
3rd delivery: full implementation of the network communication;  
4th delivery: final version with performance and scalability analysis.  
Bibliography  
Carnall, B. (2016). Unreal Engine 4.X By  
Example. Packt Publishing. ISBN: 978-  
785885532.  
1
Coulouris, G., Dollimore, J., Kindberg, T., Blair,  
G. (2004). Distributed Systems: Concepts and  
Design (5th edition), Pearson. ISBN: 978-  
0
132143011.  
Glazer, J., Madhav, S. (2015). Multiplayer  
Game Programming: Architecting Networked  
Games. Addison-Wesley Professional. ISBN:  
9
78-0134034300.  
Distributed Programming  
Blackboard: Distributed Programming  
Course webpage:  
http://www.inf.puc-rio.br/~elima/dp/  
Contact:  
edirlei.slima@gmail.com