Seminar “From Service-Oriented Computing to Microservices and Beyond” for the Programming Languages course, 2020, Università di Bologna, Bologna, IT | Slides
Seminar “Microservice Security Concepts” for the Cybersecurity Summer School 2019, KEA Institute, Copenhagen, DK | Slides
Seminar “A Gentle Introduction to Jolie” for the Bertinoro International Spring School 2016, University Residential Center, Bertinoro, IT | Slides | Examples
Seminar on “From Service-Oriented Computing to Microservices and Beyond” for the Programming Languages course, 2016, Università di Bologna, Bologna, IT | Slides
The exam regards the conduction of a group study project that applies the knowledge acquired attending the course. The exam’s hand-in consists of a report in PDF format of at most 5000 words — approximately, these correspond to 30k characters and 9–10 pages. Reports that exceed the word count will be penalised. The report shall detail the context, the problem/motivation, the data, the measures applied, and the results obtained (along with their qualitative interpretation). Once a group assembled an outline of the project they want to conduct, they can contact the teacher for feedback with a short summary of the outline (using the address below).
As a reference for the styling of the project report, please use the following
Word template or LaTeX template
Please, carefully read the following instructions on the modality and timing of the exam and, before submitting your report, review it against the content checklist below.The project is performed by a group of 3–5 students, who can deliver their report within any of the exam session’ deadlines reported below. The evaluation of the projects starts after each exam session’s deadline and considers all projects delivered before that deadline. The exam sessions are 7 within an academic year (AY) and spaced around 50 days apart (excluding the summer break).
Project delivery (exam session) deadlines for the AY 24–25 (at 23:59 UTC+2 of each date):
Dec. 6th, 2024 | Jan. 10th, 2025 | Feb. 21st, 2025 | Apr. 4th, 2025 | ||||
May. 23rd, 2025 | Jul. 11th, 2025 | Sep. 5th, 2025 |
When delivering their project, all members must also register to the available exam session on AlmaEsami. After the evaluation, the students will receive the notification of the grading on AlmaEsami (usually around two weeks after each exam session’s deadline).
Grades are officially registered one week after the notification from AlmaEsami. Within that week, groups which passed the exam but want to re-take it (fixing possible shortcomings of the delivered project), can notify the teacher via email, who will exclude their grade from the registration. Groups have 1 attempt to re-take the exam, after which the last passing grade will be registered automatically.
Delivery of Project Reports
The project reports must follow these formatting requirements: A4 single-column layout, 1-line spacing, 3cm margins, 12pt font (Times or equivalent), and they must be in
PDF format (no .doc, .docx or any alternative)
The templates at the beginning of this page follow the above requirements and can be used to generate valid PDF files.
All deliveries happen via email at the address saverio.giallorenzo[at]gmail.com and must contain in the subject the prefix [Network Analysis].
Guidelines and Report Evaluation
The report is the artefact evaluated for the exam, but students are invited to see it as a support tool when conducting their projects. Indeed, if done step-by-step during the project, reporting is a helpful tool to clarify and document the decisions taken by the group at each stage of the project. In the report, it is fundamental to indicate A) what phenomena are investigated, B) what measures are applied, and C) how each measure is interpreted to explain the related phenomenon. Simplified example: A) we want to study which nodes are in the core of the studied network, B) we apply the k-core measure, C) k-core interprets core-periphery as the connected set of nodes where each is joined to at least k of the others, hence, we expect to find core nodes in the set with the highest k-value.
Besides “journaling” progress, the report is a useful tool for the group to check that they considered and reported on all the important aspects of their project study. The clear presentation/explanation of those aspects also forms the weighted partition that guides the grading (and indicates a ratio for distributing the contents of the report), as shown below:
Context Problem(s) Motivation |
Dataset(s) and source(s)
Validity and reliability Applied measure/s and its/their justification, possible hypotheses and tests, results |
Interpretation of the overall results Critique (brief) |
20% | 60% | 20% |
Introduction to Network Analysis | Slides |
Some Logistics (Reading Groups) | Slides |
Research Design (also, How to read a research paper) | Slides |
Paper Presentation: An Information Flow Model for Conflict and Fission in Small Groups | Slides |
The Mathematics of Networks | Slides |
Data Collection and Data Management | Slides |
Measures and Metrics, Nodes | Slides |
Measures and Metrics, Networks | Slides |
Testing Hypotheses | Slides |
Week | Wednesday | Thursday |
---|---|---|
38 | Introduction to Network Analysis Some Logistics |
Introduction to Network Analysis Some Logistics Research Design |
39 | Research Design Paper Presentation |
The Mathematics of Networks |
40 | Class cancelled | Data Collection and Data Management |
41 | Data Collection and Data Management Reading Group Paper Presentations |
Measures and Metrics, Nodes Tools Demonstration |
42 | No lecture Suggested activities: reading groups and practice with UCINET/NetworkX |
Measures and Metrics, Nodes Reading Group Paper Presentations |
43 | Measures and Metrics, Nodes Measures and Metrics, Networks Reading Group Paper Presentations |
Measures and Metrics, Networks Tools Demonstration |
Main references:
Additional references:
networkx
, matplotlib
, and scipy
libraries installed, e.g., via the command pip install networkx matplotlib scipy
).Data refinement
Network Analysis
Datasets
Dataset repositories available online, e.g., useful to draw inspiration for projects:
An Information Flow Model for Conflict and Fission in Small Groups
Topic | Italian | English (unsync'd) |
---|---|---|
Introduction to Types | Slides | Slides |
Basic Types and Algebra of Types | Slides | Slides |
Polymorphic Types | Slides | Slides |
Exceptions | Slides | Slides |
Memory Safety: Garbage Collection and Borrow-checking | Slides | Slides |
Abstract Data Types and Object Orientation | Slides | Slides |
Tutored exercises
During the lessons period, Giosuè Cotugno will tutor extra-hour exercise sessions, scheduled via email.
Please, fill this form with your contact information to register to the exercise sessions.
If you could not register to the form and still want to participate and get notified of the upcoming exercise session, please directly contact the tutor.
Main references:
Additional references:
Slides
Exercises 00 | Slides |
Exercises 01 | Slides |
Exercises 02 | Slides |
Code Exercises
We frequently use jqwik to run property-based tests over our exercises.
To simplify the retrieval of the dependencies and running the tests, we use the gradle file build.gradle.
To run any of the tests below, make sure to have the following configuration:
test
, where we want to save our java exercises;test
folder;exercises
in test
;test
folder and run the following template command gradle test --tests exercises.ClassName.testMethodName
where ClassName
is the name of the file we are testing (e.g., Fun
, below) and testMethodName
is the name of the method we want to test (e.g., testFunArrayList
within the Fun
class). We can also run all the tests within a given class by not specifying a method name (e.g., the command gradle test --tests exercises.Fun
executes all the tests of the Fun
class).When more files belong in the same row, the first from the left is the one with the tests. To run, it needs the other files to be present in the same folder.
File | Related exercise |
---|---|
Fun.java | Exercises 00, 1.3 |
SumList.java | Exercises 00, 1.5 |
CheckMinHeap.java | Exercises 00, 2.1 |
MonotonicPath.java UG_List.java | Exercises 01, 8.1 |
FindMaxOutdegree.java | Exercises 01, 8.3 |
CountInversions.java | Exercises 01, 5.5 |
GreedyCuts.java | Exercises 01, 6.1 |
BinPacking.java | Exercises 01, 6.3 |
RestCalculator.java | Exercises 02, 7.1 |
MostFiles.java RestCalculator.java | Exercises 02, 7.2 |
LazyPrimMST.java UG_List.java WUG_List.java MinHeap.java | Exercises 02, 10.A |
LazyDijkstraSP.java UG_List.java WUG_List.java MinHeap.java | Exercises 02, 10.B |
It is highly advised to hack and tweak the exercises to improve your understanding of the techniques and algorithms they represent :)
See the course description on the SDU website.
Teaching material, exercises, and assignments are available at the repository dedicated to the course.
Slides
Introduction Interprocess Communication | Slides | |
Introduction to Jolie | Slides | Example |
Basics - First Service and Basic Deployment | Slides | Examples |
Basic Behaviour - Types and Data Manipulation
Basic Behaviour - Composition and Workflow
|
Examples | |
Advanced Behaviour - Faults and Dynamic Binding | Slides | Examples |
Advanced Deployment - Architectural Composition | Slides | Examples |
Projects
Unless specified differently, exams take place at Laboratorio S04 - Dipartimento di Informatica - Scienza e Ingegneria, Mura Anteo Zamboni, 7 - 40126 Bologna ITALY.
LAST
PREVIOUS
AA 2015-2016 | Project Description, Groups status --- Examples: MyTimer example JavaService |
AA 2014-2015 | Project Description, Groups status --- Examples: File Transfer, Console Inputs |
FAQs
I installed Jolie with the installer but when I launch jolie
I get the message "Error: Could not find or load main class jolie.Jolie".
Did you launch the installer with the right permissions? If yes, proceed.
The launchers deployed by the installer use the environment variable JOLIE_HOME
to set the classpath and launch Jolie.
As reported by the installer at the end of the installation:
Please, open a new shell and execute the command below:
echo 'export JOLIE_HOME="/usr/lib/jolie"' >> ~/.bash_profile
Close the shell and open it again (or source ~/.bash_profile
) before trying to launch the Jolie interpreter.
Attention: in case you are still getting the message "Error: Could not find or load main class jolie.Jolie", it could be the case your shell is not sourcing file `.bash_profile`. To fix it, edit your ~/.bashrc
file by appending the line source .bash_profile
.
I get "command not found" after I installed Jolie under MacOs X El Capitan (10.10.11).
/usr/local/lib/jolie
as the directory of installation of Jolie and /usr/local/bin
as the directory of the launchers.
Slides (in Italian)
Introduction Database Systems* | Slides |
Exercises on Database Systems* | Slides |
Analysis of data in tabular formats (spreadsheets)* | Slides |
Operating Systems, Virtualisation Technologies, and Cloud Computing | Slides |
*Adapted from material by Stefano Ferretti.