====== Principles for Software Composition ====== {{:magistraleinformatica:psc:psc.png?250 | }} **PSC 2020/21 (375AA, 9 CFU)** Lecturer: **Roberto Bruni**\\ [[http://www.di.unipi.it/~bruni|web]] - [[mailto:bruni@di.unipi.it|email]] - [[https://teams.microsoft.com/l/team/19%3a8825cbfab4544a1789a382bf14027c14%40thread.tacv2/conversations?groupId=6eb3f4a5-bc31-419d-9965-778a70297e1d&tenantId=c7456b31-a220-47f5-be52-473828670aa1|Microsoft Teams channel]] Office hours: **Tuesday 15:00-17:00 or by appointment** ---- ==== Objectives ==== The objective of the course is to present: * different models of computation, * their programming paradigms, * their mathematical descriptions, both //concrete// and //abstract//, * some intellectual tools/techniques for reasoning on models. The course will cover the basic techniques for assigning meaning to programs with higher-order, concurrent and probabilistic features (e.g., domain theory, logical systems, well-founded induction, structural recursion, labelled transition systems, Markov chains, probabilistic reactive systems, stochastic process algebras) and for proving their fundamental properties, such as termination, normalisation, determinacy, behavioural equivalence and logical equivalence. Temporal and modal logics will also be studied for the specification and analysis of programs. In particular, some emphasis will be posed on modularity and compositionality, in the sense of guaranteeing some property of the whole by proving simpler properties of its parts. ---- ==== Prerequisites ==== There are no prerequisites, but the students are expected to have some familiarity with discrete mathematics, first-order logic, context-free grammars, and code fragments in imperative and functional style. ---- ==== Textbook(s) ==== Main text: * Roberto Bruni, Ugo Montanari, "[[http://www.springer.com/978-3-319-42898-7|Models of Computation]]", Springer Texts in Computer Science, 2017. Other readings: * Graham Hutton, "[[http://www.cs.nott.ac.uk/~pszgmh/pih.html|Programming in Haskell]]", 2nd edition, Cambridge University Press (2016). Chapters: 1-8, 14, 15. * Joe Armstrong, [[https://pragprog.com/titles/jaerlang2/programming-erlang-2nd-edition/|Programming Erlang]], 2nd edition. The Pragmatic Bookshelf (2013). Chapters: 1-5, 8, 10-12. * Caleb Doxsey, [[http://shop.oreilly.com/product/0636920046516.do|Introducing Go]], O'Reilly Media (2016). Chapters: 1-4, 6-7, 10. * Robin Milner, "[[https://books.google.it/books/about/Communication_and_Concurrency.html?id=QPyyQgAACAAJ&redir_esc=y|Communication and Concurrency]]", Prentice Hall (1989). Chapters: 1-7, 10. * Luca Aceto, et al, "[[https://www.cambridge.org/core/books/reactive-systems/9B91FFD3996FC77D7AF0C309F8EE4CF7#|Reactive Systems]]", Cambridge University Press (2011). Chapters: 1-7. * Jane Hillston, [[http://www.dcs.ed.ac.uk/pepa/book.pdf|A Compositional Approach to Performance Modelling]], Cambridge University Press (1996). Chapters 1-3. External resources: * [[https://www.haskell.org/|Haskell]] * [[http://www.erlang.org/|Erlang]] * [[http://golang.org/|Google Go]] * [[http://caal.cs.aau.dk/|CAAL]] * [[http://www.dcs.ed.ac.uk/pepa/|PEPA]] ---- ==== Exam ==== Normally, the evaluation would have been based on written and oral exams. Due to the covid-19 countermeasures, for the current period, the evaluation will be solely based on oral exams. As an alternative to the assignment of exercises during the oral exam, students can develop a small project before the exam (contact the teacher if interested). Registration to exams (mandatory): [[https://esami.unipi.it/esami/|Exams registration system]] During the oral exam the student must demonstrate * knowledge: his/her knowledge of the course material, and * problem solving: the ability to solve some simple exercises, and * understanding: the ability to discuss the reading matter thoughtfully and with propriety of expression. ---- ==== Oral Exams: schedule ==== See the channel **Exams** in the Microsoft Teams platform ---- ==== Announcements ==== * Due to the covid-19 emergency situation, there will be no **mid-term exams** * as the course starts:\\ Each student must subscribe the [[https://teams.microsoft.com/l/team/19%3a8825cbfab4544a1789a382bf14027c14%40thread.tacv2/conversations?groupId=6eb3f4a5-bc31-419d-9965-778a70297e1d&tenantId=c7456b31-a220-47f5-be52-473828670aa1|Microsoft Teams channel]] of the course and then send an email to the professor from his/her favourite email account with subject **PSC20-21** and the following data\\ (by doing so, the account will be included in the class mailing-list, where important announcements can be sent): - **first name** and **last name** (please clarify which is which, to avoid ambiguities) - **enrolment number** (numero di matricola) - bachelor degree (**course of study** and **university**) - your favourite topics in computer science (optional) ---- ==== Lectures (1st part) ==== [[https://teams.microsoft.com/l/team/19%3a8825cbfab4544a1789a382bf14027c14%40thread.tacv2/conversations?groupId=6eb3f4a5-bc31-419d-9965-778a70297e1d&tenantId=c7456b31-a220-47f5-be52-473828670aa1|Virtual classroom]]: To join a lecture enter the course team on Microsoft Teams, go to the Lectures channel and click on the scheduled lecture. ^ N ^ Date ^^ Time ^ Room ^ Lecture notes ^ Links ^ | 1 | Mon | 15/02 | 16:00-18:00 | Teams | 01 - Introduction to the course | {{ :magistraleinformatica:psc:2021-02-15_-_01_-_intro.pdf |Lecture 01}} | | 2 | Wed | 17/02 | 14:00-16:00 | Teams | 02 - Preliminaries:\\ //from syntax to semantics, the role of formal semantics, SOS approach, small-step operational semantics, big-step operational semantics// | {{ :magistraleinformatica:psc:2021-02-17_-_02_-_semantics.pdf |Lecture 02}} | | 3 | Fri | 21/02 | 14:00-16:00 | Teams | 02 - Preliminaries (ctd.):\\ //denotational semantics, compositionality principle, normalisation, determinacy, consistency, equivalence, congruence, signatures//\\ \\ 03 - Unification:\\ //inference process, signatures, substitutions,unification problem, unification algorithm// | {{ :magistraleinformatica:psc:2021-02-19_-_03_-_unification.pdf |Lecture 03}} | | 4 | Mon | 22/02 | 16:00-18:00 | Teams | 04 - Logical systems:\\ //logical systems, derivations, logic programs, goal-oriented derivations// | {{ :magistraleinformatica:psc:2021-02-22_-_04_-_logic.pdf |Lecture 04}} | | 5 | Wed | 24/02 | 14:00-16:00 | Teams | 05 - Induction:\\ //precedence relation, infinite descending chains, well-founded relations, well-founded induction, mathematical induction, proof of induction principle, structural induction, termination of arithmetic expressions, determinacy of arithmetic expressions// | {{ :magistraleinformatica:psc:2021-02-24_-_05a_-_induction.pdf |Lecture 05a}} | | 6 | Fri | 26/02 | 14:00-16:00 | Teams | 05 - Induction (ctd.):\\ //termination of arithmetic expressions//\\ \\ Exercises:\\ //unification, goal-oriented derivations// | {{ :magistraleinformatica:psc:01_-_inference.pdf |Exercises 01}} | | 7 | Mon | 01/03 | 16:00-18:00 | Teams | 05 - Induction (ctd.):\\ //determinacy of arithmetic expressions, structural induction over many-sorted signatures, termination of boolean expressions, memories, update operation, operational semantics of commands, divergence// | {{ :magistraleinformatica:psc:2021-03-01_-_05b_-_more_induction.pdf |Lecture 05b}} | | 8 | Wed | 03/03 | 14:00-16:00 | Teams | 05 - Induction (ctd.):\\ //rule for divergence, limits of structural induction, induction on derivations, rule induction, determinacy of commands// | {{ :magistraleinformatica:psc:2021-03-03_-_05c_-_rule_induction.pdf |Lecture 05c}} | | 9 | Fri | 05/03 | 14:00-16:00 | Teams | Exercises:\\ //induction, termination, determinacy, divergence//\\ \\ 06 - Equivalence:\\ //operational equivalence, concrete equivalences, parametric equivalences, equivalence and divergence// | {{ :magistraleinformatica:psc:2020-21:02_-_properties.pdf |Exercises 02}}\\ \\ {{ :magistraleinformatica:psc:2021-03-05_-_06_-_equivalence.pdf |Lecture 06}} | | 10 | Mon | 08/03 | 16:00-18:00 | Teams | 07 - Induction and recursion:\\ //well-founded recursion, denotational semantics of arithmetic expressions, consistency of operational and denotational semantics for arithmetic expressions, lexicographic precedence relation, Ackermann function, fixpoint equations// | {{ :magistraleinformatica:psc:2021-03-08_-_07_-_recursion.pdf |Lecture 07}} | | 11 | Wed | 10/03 | 14:00-16:00 | Teams | Exercises:\\ //x++, arithmetic expressions with side-effects//\\ \\ 08 - Partial orders and fixpoints:\\ //partial orders, Hasse diagrams, chains, least element, minimal element, bottom element, upper bounds, least upper bound, chains, limits, complete partial orders, powerset completeness// | {{ :magistraleinformatica:psc:2021-03-10_-_08a_-_cpo.pdf |Lecture 08a}} | | 12 | Fri | 12/03 | 14:00-16:00 | Teams | 08 - Partial orders and fixpoints (ctd.):\\ //prefix independence, CPO of partial functions, monotonicity, continuity, Kleene's fixpoint theorem// | {{ :magistraleinformatica:psc:2021-03-12_-_08b_-_kleene.pdf |Lecture 08b}} | | 13 | Mon | 15/03 | 16:00-18:00 | Teams | 08 - Partial orders and fixpoints (ctd.):\\ //recursive definitions of partial functions as logical systems, immediate consequences operator, set of theorems as fixpoint//\\ \\ 09 - Denotational semantics:\\ //lambda-notation, free variables, capture-avoiding substitutions, alpha-conversion, beta rule, conditionals// | {{ :magistraleinformatica:psc:2021-03-15_-_08c_-_ico.pdf |Lecture 08c}}\\ \\ {{ :magistraleinformatica:psc:2021-03-15_-_09_-_denotational_imp.pdf |Lecture 09}} | | 14 | Wed | 17/03 | 14:00-16:00 | Teams | 09 - Denotational semantics (ctd.):\\ //denotational semantics of commands, fixpoint computation//\\ \\ 10 - Consistency:\\ //denotational equivalence, congruence, compositionality principle, consistency of commands, correctness, completeness//\\ \\ Exercises:\\ //well-founded recursion, posets, semantics// | {{ :magistraleinformatica:psc:2021-03-17_-_10_-_consistency_imp.pdf |Lecture 10}}\\ \\ {{ :magistraleinformatica:psc:2020-21:03_-_poset.pdf |Exercises 03}} | | 15 | Fri | 19/03 | 14:00-16:00 | Teams | 10 - Consistency (ctd.):\\ //completeness//\\ \\ Exercises:\\ //well-founded recursion, rule induction//\\ \\ 11 - Haskell:\\ //an overview// | {{ :magistraleinformatica:psc:2021-03-19_-_11_-_haskell.pdf |Lecture 11}} | | 16 | Mon | 22/03 | 16:00-18:00 | Teams | Haskell ghci:\\ //basics, lambda, tuples, lists, list comprehension, guards, pattern matching, partial application, recursive definitions, zip, exercises//\\ {{ :magistraleinformatica:psc:ghci-session1-2021.txt.zip |ghci session 01}} | [[https://www.haskell.org/|Haskell]] | | 17 | Wed | 24/03 | 14:00-16:00 | Teams | Haskell ghci (ctd.):\\ //costrutto let-in, costrutto where, map, filter, fixpoint operator, exercises//\\ {{ :magistraleinformatica:psc:ghci-session2-2021.txt.zip |ghci session 02}} | [[https://www.haskell.org/|Haskell]] | | 18 | Fri | 26/03 | 14:00-16:00 | Teams | Haskell ghci (ctd.):\\ //tail recursion, folds, application, function composition, data types, type classes, recursive data structures, derived instances, exercises//\\ {{ :magistraleinformatica:psc:ghci-session3-2021.txt.zip |ghci session 03}} | [[https://www.haskell.org/|Haskell]] | | 19 | Mon | 29/03 | 16:00-18:00 | Teams | Exercises:\\ //Haskell//\\ \\ 12 - HOFL:\\ //syntax, type system, type checking// | {{ :magistraleinformatica:psc:2020-21:04_-_haskell.pdf |Exercises 04}}\\ {{ :magistraleinformatica:psc:2021-03-29_-_12a_-_hofl_types.pdf |Lecture 12a}} | | 20 | Wed | 31/03 | 14:00-16:00 | Teams | 12 - HOFL (ctd.):\\ //type inference, principal type, canonical forms, operational semantics, lazy vs eager evaluation// | {{ :magistraleinformatica:psc:2021-03-31_-_12b_-_hofl_operational.pdf |Lecture 12b}} | ==== Lectures (2nd part) ==== [[https://teams.microsoft.com/l/team/19%3a8825cbfab4544a1789a382bf14027c14%40thread.tacv2/conversations?groupId=6eb3f4a5-bc31-419d-9965-778a70297e1d&tenantId=c7456b31-a220-47f5-be52-473828670aa1|Virtual classroom]]: To join a lecture enter the course team on Microsoft Teams, go to the Lectures channel and click on the scheduled lecture. ^ N ^ Date ^^ Time ^ Room ^ Lecture notes ^ Links ^ | 21 | Wed | 07/04 | 14:00-16:00 | Teams | 13 - Domain theory:\\ //Integers with bottom, cartesian product, projections, switching lemma, functional domains// | {{ :magistraleinformatica:psc:2021-04-07_-_13a_-_cartesian_domains.pdf |Lecture 13a}}\\ {{ :magistraleinformatica:psc:2021-04-07_-_13b_-_functional_domains.pdf |Lecture 13b}} | | 22 | Fri | 09/04 | 14:00-16:00 | Teams | 13 - Domain theory (ctd.):\\ //functional domains, lifting, continuity theorems, apply, fix, let notation// | {{ :magistraleinformatica:psc:2021-04-09_-_13c_-_continuity_theorems.pdf |Lecture 13c}} | | 23 | Mon | 12/04 | 16:00-18:00 | Teams | 14 - Denotational semantics of HOFL:\\ //definition and examples, type consistency, substitution lemma, compositionality and other properties// | {{ :magistraleinformatica:psc:2021-04-12_-_14_-_hofl_denotational.pdf |Lecture 14}} | | 24 | Wed | 14/04 | 14:00-16:00 | Teams | 15 - Consistency of HOFL:\\ //Counterexample to completeness, correctness of the operational semantics, operational convergence, denotational convergence, operational convergence implies denotational convergence (and vice versa), operational and denotational equivalence, correspondence for type int, unlifted semantics//\\ \\ Exercises:\\ //HOFL, domains// | {{ :magistraleinformatica:psc:2021-04-14_-_15_-_consistency_hofl.pdf |Lecture 15}}\\ {{ :magistraleinformatica:psc:2020-21:05_-_hofl.pdf |Exercises 05}} | | 25 | Fri | 16/04 | 14:00-16:00 | Teams | Exercises:\\ //HOFL//\\ \\ 16 - Erlang:\\ //an overview// | {{ :magistraleinformatica:psc:2021-04-16_-_16_-_erlang.pdf |Lecture 16}} | | 26 | Mon | 19/04 | 16:00-18:00 | Teams | Erlang erl:\\ //numbers, atoms, tuples, lists, terms, variables, term comparison, pattern matching, list comprehension, modules, functions, guards, higher order, recursion, pids, spawn, self, send, receive, examples//\\ {{ :magistraleinformatica:psc:erl_2021.zip |erl session}} | [[http://www.erlang.org/|Erlang]] | | 27 | Wed | 21/04 | 14:00-16:00 | Teams | 17 - CCS:\\ //Syntax, operational semantics// | {{ :magistraleinformatica:psc:2021-04-21_-_17a_-_ccs.pdf |Lecture 17a}} | | 28 | Fri | 23/04 | 14:00-16:00 | Teams | 17 - CCS:\\ //value passing, finitely branching processes, guarded processes (proofs about properties of guarded processes are optional)//\\ \\ 18 - Bisimulation:\\ //abstract semantics, graph isomorphism, trace equivalence, bisimulation game, strong bisimulation// | {{ :magistraleinformatica:psc:2021-04-23_-_17b_-_ccs_guarded.pdf |Lecture 17b}}\\ {{ :magistraleinformatica:psc:2021-04-23_-_18a_-_ccs_abstract.pdf |Lecture 18a}}\\ {{ :magistraleinformatica:psc:2021-04-23_-_18b_-_ccs_bisimulation.pdf |Lecture 18b}} | | 29 | Mon | 26/04 | 16:00-18:00 | Teams | 18 - Bisimulation:\\ //strong bisimilarity, strong bisimilarity is an equivalence, strong bisimilarity is a bisimulation, strong bisimilarity is the coarsest strong bisimulation, strong bisimilarity is a congruence, some laws for strong bisimilarity, strong bisimilarity as a fixpoint// | {{ :magistraleinformatica:psc:2021-04-26_-_18c_-_ccs_bis_as_fix.pdf |Lecture 18c}} | | 30 | Wed | 28/04 | 14:00-16:00 | Teams | 18 - Bisimulation:\\ //strong bisimilarity as a fixpoint, Phi operator, Phi is monotone, Phi is continuous (on finitely branching processes), Knaster-Tarski's fixpoint theorem//\\ \\ 19 - Hennessy-Milner logic:\\ //modalities, HML syntax, formula satisfaction, converse of a formula, HML equivalence//\\ \\ 20 - Weak Semantics:\\ //weak transitions, weak bisimulation// | {{ :magistraleinformatica:psc:2021-04-28_-_19_-_hml.pdf |Lecture 19}}\\ {{ :magistraleinformatica:psc:2021-04-28_-_20_-_weak.pdf |Lecture 20}} | | 31 | Fri | 30/04 | 14:00-16:00 | Teams | 20 - Weak Semantics:\\ //weak bisimilarity, weak bisimilarity is not a congruence, weak observational congruence, Milner's tau-laws//\\ \\ 21 - CCS at work:\\ //modelling imperative programs with CCS, playing with CCS (using CAAL)//\\ {{ :magistraleinformatica:psc:buffers_in_caal_2021.zip |CAAL session 01}} (copy the text and paste it in the Edit panel) | {{ :magistraleinformatica:psc:2021-04-30_-_21_-_ccs_at_work.pdf |Lecture 21}}\\ [[http://caal.cs.aau.dk/|CAAL]] | | 32 | Mon | 03/05 | 16:00-18:00 | Teams | 21 - CCS at work:\\ //modelling and verification of mutual exclusion algorithms with CCS and CAAL//\\ {{ :magistraleinformatica:psc:peterson_hyman_in_caal_2021.zip |CAAL session 02}} (copy the text and paste it in the Edit panel) | [[http://caal.cs.aau.dk/|CAAL]] | | 33 | Wed | 05/05 | 14:00-16:00 | Teams | Exercises:\\ //CAAL, Erlang, CCS// | {{ :magistraleinformatica:psc:2020-21:06_-_erlang_-_ccs.pdf |Exercises 06}}\\ [[http://caal.cs.aau.dk/|CAAL]] | | 34 | Fri | 07/05 | 14:00-16:00 | Teams | Exercises:\\ //CCS//\\ \\ 22 - Temporal and modal logics:\\ //linear temporal logic (LTL), linear structures models, shifting, LTL satisfaction, equivalence of formulas, automata-like models// | {{ :magistraleinformatica:psc:2021-05-07_-_22a_-_ltl_ctl.pdf |Lecture 22a}} | | 35 | Mon | 10/05 | 16:00-18:00 | Teams | 22 - Temporal and modal logics:\\ //computational tree logic (CTL* and CTL), infinite trees, infinite paths, branching structure, CTL* satisfaction, equivalence of formulas, CTL formulas, expressiveness comparison, mu-calculus, positive normal form, least and greatest fixpoints, invariant properties, possibly properties, mu-calculus with labels// | {{ :magistraleinformatica:psc:2021-05-10_-_22b_-_mu_calculus.pdf |Lecture 22b}} | | 36 | Wed | 12/05 | 14:00-16:00 | Teams | 23 - GoogleGo:\\ //an overview//\\ \\ GoogleGo playground:\\ Go principles, variable declaration, type conversion, multiple assignments, type inference, imports, packages and public names, named return values, naked return, multiple results, conditionals and loops, pointers, struct, receiver arguments and methods, interfaces, goroutines, bidirectional channels, channel types, send, receive, asynchronous communication with buffering, close, select, communicating communication means\\ {{ :magistraleinformatica:psc:go-session1-2021.zip |go session 01}} | {{ :magistraleinformatica:psc:2021-05-12_-_23_-_google_go.pdf |Lecture 23}}\\ [[http://golang.org/|Google Go]] | | 37 | Fri | 14/05 | 14:00-16:00 | Teams | GoogleGo playground:\\ range, handling multiple senders, concurrent prime sieve\\ {{ :magistraleinformatica:psc:go-session2-2021.zip |go session 02}}\\ \\ 24 - Pi-calculus:\\ //name mobility, free names, bound names, syntax and operational semantics, scope extrusion, early and late bisimilarities, weak semantics// | {{ :magistraleinformatica:psc:2021-05-14_-_24_-_pi_calculus.pdf |Lecture 24}} | | 38 | Mon | 17/05 | 16:00-18:00 | Teams | Exercises:\\ //logics, GoogleGo, pi-calculus//\\ \\ 25 - Measure theory and Markov chains:\\ //probability space, random variables, stochastic processes// | {{ :magistraleinformatica:psc:2020-21:07_-_logics_-_googlego_-_pi.pdf |Exercises 07}}\\ {{ :magistraleinformatica:psc:2021-05-17_-_25a_-_dtmc.pdf |Lecture 25a}} | | 39 | Wed | 19/05 | 14:00-16:00 | Teams | 25 - Measure theory and Markov chains:\\ //homogeneous Markov chains, DTMC, DTMC as matrices, DTMC as PTS, next state probability, finite path probability, ergodic DTMC, steady state distribution, negative exponential distribution, CTMC, embedded DTMC, infinitesimal generator matrix, CTMC stationary distribution// | {{ :magistraleinformatica:psc:2021-05-19_-_25b_-_ctmc.pdf |Lecture 25b}} | | 40 | Fri | 21/05 | 14:00-16:00 | Teams | 26 - Probabilistic bisimilarities:\\ //bisimilarity revisited, reachability predicate, CTMC bisimilarity, DTMC bisimilarity, Markov chains with actions, probabilistic reactive systems, bisimilarity for reactive systems, Larsen-Skou logic//\\ \\ 27 - PEPA:\\ //motivation, basic ideas, PEPA workflow, PEPA syntax, cooperation combinator, bounded capacity, apparent rate, PEPA operational semantics, performance analysis, reward structures//\\ \\ Exercises:\\ //Markov chains, probabilistic systems, PEPA// | {{ :magistraleinformatica:psc:2021-05-21_-_26_-_probabilistic_bisimilarities.pdf |Lecture 26}}\\ {{ :magistraleinformatica:psc:2020-21:2021-05-21_-_27_-_pepa.pdf |Lecture 27}}\\ {{ :magistraleinformatica:psc:2020-21:08_-_probability.pdf |Exercises 08}}\\ [[http://www.dcs.ed.ac.uk/pepa/|PEPA]] | | End | | | | | | | ==== Exam sessions ==== ^ Date ^^ Time ^ Room ^ Info ^ | Fri | 04/06 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | | Fri | 25/06 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | | Fri | 23/07 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | | Fri | 03/09 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | | Fri | 14/01 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | | Tue | 01/02 | 11:00 | Teams | Exam\\ The actual date of the oral exam will be agreed with the teacher | ---- ==== Past courses ==== * [[magistraleinformatica:psc:2019-20:|A.A. 2019/20]] * [[magistraleinformatica:psc:2018-19:|A.A. 2018/19]] * [[magistraleinformatica:psc:2017-18:|A.A. 2017/18]] * [[magistraleinformatica:mod:|MOD (A.A. 2016/17)]] * [[magistraleinformatica:mod:2015-16:|MOD (A.A. 2015/16)]] * [[magistraleinformatica:mod:2014-15:|MOD (A.A. 2014/15)]] * [[magistraleinformatica:mod:2013-14:|MOD (A.A. 2013/14)]] ----