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
As a reference for the styling of the project proposal and report, students can use the following
Please, carefully read the following instructions on the modality and timing of the exam and, before submitting your proposal, review it against the proposal checklist below.The exam consists of conducting a study project that applies the knowledge on network analysis acquired during the course.
The exam’s hand-in consists of a report, a 5–6-page PDF document (8–9 pages for projects with more students), detailing the context, the problem/motivation, the data, the measures, and the results of the project that the students performed.
The project is either individual or in a small group, and it is negotiated with the teacher through a project proposal. The project proposal is a 1-page PDF document (2 pages for proposals with more students) that briefly presents the content of the study (context, the problem/motivation, the proposed data, the designed measures, and the expected results of the research project that the student will perform).
To make sure students have enough time to work on their projects, there is a “minimal work period” between the agreement on the project proposal and the first upcoming project delivery deadline. This minimal work period is 20 days before the next deadline for delivering the report. Students can work on their proposals and projects notwithstanding the above constraint. The only effect of this rule is that projects whose proposals were approved after that deadline will be eligible for evaluation starting from the second upcoming project delivery deadline.
Once the student has received the approval on their project proposal, they can deliver their report within the first valid (as per rule above) deadline and the following ones—i.e., once a project proposal has been approved, the student can deliver the project at any valid following deadline.
The evaluation starts after each project delivery deadline and considers all projects delivered before that deadline.
The deadlines for project delivery are 8 in total within an A.Y. and spaced around 45 days apart (except for August’s break).
Project delivery deadlines (23:59 UTC+2) for the A.Y. 22–23:
The official exam sessions are published on AlmaEsami, where the students must register before the delivery of their project reports. Students registered for the exam on AlmaEsami should automatically receive a notification of the grading (which usually takes around two weeks after each deadline). Grades are officially registered one week after the notification from AlmaEsami. Within that week, students who passed the exam but want to re-take it (on the same project proposal), can notify the teacher, who will not register their grade. Students have 1 attempt to re-take the exam, after which the last passing grade will be registered automatically.
Delivery of Project Proposals and Reports
Project proposals and project reports must follow these requirements:
The templates at the beginning of this page follow the above requirements and can be used to generate 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 student at each stage of the project. In the proposal (and, by extension, in the report) it is fundamental to indicate A) what phenomena will be investigated, B) what measures will be applied, and C) how each measure will be 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.
Moreover, besides “journaling” progress, the report is a useful tool for the students 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 listed below:
Weight | Aspects |
---|---|
20% |
Context Problem(s) Motivation |
60% | Dataset(s) and source(s)
Validity and reliability Applied measure/s and its/their justification, possible hypotheses and tests, results |
20% | Interpretation of the overall results Critique (brief) |
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 | Thursday | Friday |
---|---|---|
38 | Introduction to Network Analysis Some Logistics |
Introduction to Network Analysis Some Logistics Research Design |
39 | Research Design Paper Presentation |
Paper Presentation The Mathematics of Networks |
40 | No lectures Suggested activities: participate in reading groups |
No lectures Suggested activities: participate in reading groups |
41 | Reading Group Paper Presentations The Mathematics of Networks Data Collection and Data Management |
Data Collection and Data Management Tools Demonstration |
42 | Reading Group Paper Presentations Measures and Metrics, Nodes |
Measures and Metrics, Nodes Tools Demonstration |
43 | Reading Group Paper Presentations Measures and Metrics, Networks |
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 |
---|---|---|
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 |
A simple Java reference implementation of the Unification algorithm, inspired by [Pierce, 2002]
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.