{"id":13033,"date":"2017-04-07T19:41:27","date_gmt":"2017-04-07T17:41:27","guid":{"rendered":"https:\/\/didattica.di.unipi.it\/curriculum-%c2%93software-programming-principles-and-technologies-2\/"},"modified":"2025-12-08T15:09:27","modified_gmt":"2025-12-08T14:09:27","slug":"curriculum-foundations-of-software","status":"publish","type":"page","link":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/","title":{"rendered":"Curriculum \u201cFoundations of Software&#8221;"},"content":{"rendered":"<h2><img loading=\"lazy\" decoding=\"async\" src=\"\/images\/slider\/slider-wif\/06-java-eclipse.png\" alt=\"06 java eclipse\" width=\"891\" height=\"317\" \/><\/h2>\n<h2>Objectives\/Vision<\/h2>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">This track is designed to train students in the rigorous design and analysis of complex software systems, with a focus on abstract modeling, formal verification, and the systematic development of correct, secure, and efficient software. At its core, the track treats software engineering as both a scientific and practical discipline\u2014balancing foundational theory with hands-on implementation.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Students will explore formal methods for specifying, modeling, and verifying software artifacts, learning to ensure functional correctness, reliability, and security within modern ecosystems. The track reflects the growing industrial adoption of automated proof assistants and verification tools, echoing past shifts toward type systems and interface contracts in software development.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Through a carefully structured sequence of core and elective courses, the track addresses the scientific and engineering challenges of software construction over advanced digital infrastructures, including multiprocessors, embedded systems, distributed platforms, and emerging computational paradigms. Core topics such as advanced programming, compilation, static analysis, software verification, and programming logics are complemented by elective courses in areas ranging from distributed algorithms to quantum computing and machine learning.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Laboratory-based learning is a key aspect of the track. Students will engage in real-world projects and gain practical experience with advanced and evolutionary tools and methodologies used in both academia and industry. This blend of theory and application prepares graduates to lead innovation in software development and tackle complex challenges in diverse technological domains.<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Graduates of the Foundations of Software track acquire advanced skills for designing, analyzing, and verifying complex software systems. Their strong grounding in formal methods, program analysis, and system-level development makes them ideal candidates for roles in high-assurance software development, secure systems engineering, and performance-critical applications.<\/span><\/p>\n<h2>Career opportunities<\/h2>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Career opportunities span major ICT companies\u2014such as Google, Microsoft, IBM, and others\u2014where rigorous software engineering practices are essential. Graduates are also well prepared for roles in public organizations, research labs, and companies developing software for distributed systems, embedded platforms, or emerging computing technologies.<br \/>\n<\/span><\/p>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">Graduates are well prepared for careers in top-tier tech companies (both national and international) or to pursue Ph.D. programs in Computer Science or related fields.<\/span><\/p>\n<div>\n<div id=\"pds-fs\"><\/div>\n<h2>Study plan<\/h2>\n<p style=\"text-align: justify\"><span style=\"font-weight: 400\">The current structure of the Software track has been redesigned to specifically focus on formal methods, program correctness, and abstract modeling. Core courses emphasize the theoretical foundations\u2014such as program semantics, logical reasoning, and static analysis\u2014through subjects like <\/span><i><span style=\"font-weight: 400\">Models for Programming Paradigms<\/span><\/i><span style=\"font-weight: 400\">, <\/span><i><span style=\"font-weight: 400\">Program Analysis<\/span><\/i><span style=\"font-weight: 400\">, and <\/span><i><span style=\"font-weight: 400\">Software Verification<\/span><\/i><span style=\"font-weight: 400\">. These skills are increasingly essential in a context where code is often generated or assisted by generative AI and must be validated for reliability, safety, and intent alignment\u2014by human beings.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">The track aims to develop the ability to reason about and understand complex programming patterns. The foundational component is not separated from practice: dedicated courses are designed to experimentally apply the principles taught in the theory-oriented classes. Foundational knowledge in algorithmics remains part of the cultural background of the track, but has been moved to the elective pool to allow for a more focused exploration of formal reasoning and software verification.<\/span><\/p>\n<h3>First year<\/h3>\n<table class=\"table table-condensed table-bordered table-striped\" style=\"width: 89.3005%;height: 185px\">\n<tbody>\n<tr style=\"height: 65px\">\n<td style=\"width: 45%;text-align: center;height: 65px\">\n<h3>Semester 1<\/h3>\n<\/td>\n<td style=\"width: 5%;text-align: center;height: 65px\">\n<h3>CFU<\/h3>\n<\/td>\n<td style=\"width: 45%;text-align: center;height: 65px\">\n<h3>Semester 2<\/h3>\n<\/td>\n<td style=\"width: 31.0586%;text-align: center;height: 65px\">\n<h3>CFU<\/h3>\n<\/td>\n<\/tr>\n<tr style=\"height: 24px\">\n<td style=\"width: 45%;height: 24px\">Models for programming paradigms (*)<\/td>\n<td style=\"text-align: center;width: 5%;height: 24px\">9<\/td>\n<td style=\"width: 45%;height: 24px\">Compilation Techniques (*)<\/td>\n<td style=\"text-align: center;width: 31.0586%;height: 24px\">9<\/td>\n<\/tr>\n<tr style=\"height: 24px\">\n<td style=\"width: 45%;height: 24px\">Advanced Programming<\/td>\n<td style=\"text-align: center;width: 5%;height: 24px\">9<\/td>\n<td style=\"width: 45%;height: 24px\">Program Analysis<\/td>\n<td style=\"text-align: center;width: 31.0586%;height: 24px\">6<\/td>\n<\/tr>\n<tr style=\"height: 24px\">\n<td style=\"width: 45%;height: 24px\"><a href=\"#electives9\">Group: SW elective 9 cfu<\/a><\/td>\n<td style=\"text-align: center;width: 5%;height: 24px\">9<\/td>\n<td style=\"width: 45%;height: 24px\"><a href=\"#electives9\">Group: SW elective 9 cfu<\/a><\/td>\n<td style=\"text-align: center;width: 31.0586%;height: 24px\">9<\/td>\n<\/tr>\n<tr style=\"height: 24px\">\n<td style=\"width: 45%;height: 24px\"><\/td>\n<td style=\"text-align: center;width: 5%;height: 24px\"><\/td>\n<td style=\"width: 45%;height: 24px\">Group: Free choice<\/td>\n<td style=\"text-align: center;width: 31.0586%;height: 24px\">9<\/td>\n<\/tr>\n<tr style=\"height: 24px\">\n<td style=\"width: 45%;height: 24px\"><\/td>\n<td style=\"text-align: center;width: 5%;height: 24px\"><b>27<\/b><\/td>\n<td style=\"width: 45%;height: 24px\"><\/td>\n<td style=\"text-align: center;width: 31.0586%;height: 24px\"><b>33<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>(*) Note that:<\/strong><\/p>\n<ul>\n<li>Models for programming paradigms replaces <em>Principles for <\/em><em>software composition <\/em><\/li>\n<li>Compilation Techniques replaces <em>Languages, compilers and interpreters<\/em><\/li>\n<\/ul>\n<h3>Second year<\/h3>\n<table class=\"table table-condensed table-bordered table-striped\" style=\"width: 88.4929%\">\n<tbody>\n<tr>\n<td style=\"width: 45%;text-align: center\">\n<h3>Semester 3<\/h3>\n<\/td>\n<td style=\"width: 5.10858%;text-align: center\">\n<h3>CFU<\/h3>\n<\/td>\n<td style=\"width: 44.8914%;text-align: center\">\n<h3>Semester 4<\/h3>\n<\/td>\n<td style=\"width: 29.9184%;text-align: center\">\n<h3>CFU<\/h3>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 45%\">Software Verification: Principles and Techniques<\/td>\n<td style=\"text-align: center;width: 5.10858%\">9<\/td>\n<td style=\"width: 44.8914%\">Software Verification Laboratory<\/td>\n<td style=\"text-align: center;width: 29.9184%\">9<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 45%\"><a href=\"#electives6\">Group: SW elective 6 cfu<\/a><\/td>\n<td style=\"text-align: center;width: 5.10858%\">6<\/td>\n<td style=\"width: 44.8914%\"><\/td>\n<td style=\"text-align: center;width: 29.9184%\"><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 45%\"><a href=\"#electives6\">Group: SW elective 6 cfu<\/a><\/td>\n<td style=\"text-align: center;width: 5.10858%\">6<\/td>\n<td style=\"width: 44.8914%\"><\/td>\n<td style=\"width: 29.9184%;text-align: center\"><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 45%\"><a href=\"#electives6\">Group: SW elective 6 cfu<\/a><\/td>\n<td style=\"text-align: center;width: 5.10858%\">6<\/td>\n<td style=\"width: 44.8914%\">Thesis<\/td>\n<td style=\"text-align: center;width: 29.9184%\">24<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 45%\"><\/td>\n<td style=\"text-align: center;width: 5.10858%\"><b>27<\/b><\/td>\n<td style=\"width: 44.8914%\"><\/td>\n<td style=\"text-align: center;width: 29.9184%\"><b>33<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>(*) Note that:<\/strong><\/p>\n<ul>\n<li>Software Verification: Principles and Techniques: this course will not be offered in the academic year 2025\/26. It will replace <em>Software validation and verification<\/em> that is instead active in the academic year 2025\/26<em>.<\/em><\/li>\n<li>Software Verification Laboratory: this course will not be offered in the academic year 2025\/26. It will replace <em>Laboratory for innovative software <\/em>that is instead active in the academic year 2025\/26<em><br \/>\n<\/em><\/li>\n<\/ul>\n<h3 id=\"electives9\">Group: SW electives (9 CFU)<\/h3>\n<p>Advanced Databases (Sem. 2)<br \/>\nAdvanced Software Engineering (Sem. 1)<br \/>\nAlgorithm Engineering (Sem. 1)<br \/>\nAlgorithm Design (Sem. 2)<br \/>\nComputational Mathematics for Learning and Data Analysis (Sem. 1)<br \/>\nData Mining (Sem. 1)<br \/>\nMachine Learning (Sem. 1)<br \/>\nMobile and Cyber-Physical Systems (Sem. 2)<br \/>\nParallel and Distributed Systems: Paradigms and Models (Sem. 2)<br \/>\nPeer to Peer Systems and Blockchains (Sem. 2)<\/p>\n<h3 id=\"electives6\">Group: SW electives (6 CFU)<\/h3>\n<p>3D Geometric Modeling &amp; Processing (Sem. 1 )<br \/>\nAccelerated Computing (Sem. 1)<br \/>\nAlgorithmic Game Theory (Sem. 2)<br \/>\nArtificial Intelligence Fundamentals (Sem. 1)<br \/>\nBioinformatics (Sem. 2)<br \/>\nBusiness Process Modelling (Sem. 1)<br \/>\nCompetitive Programming and Contests (Sem. 1)<br \/>\nComputational Models for Complex Systems (Sem. 2)<br \/>\nDistributed Algorithms (Sem. 1)<br \/>\nFoundations of Computing (Sem. 2) (not offered in a.y. 2025\/26)<br \/>\nInformation Retrieval (Sem. 1)<br \/>\nIntroduction to Quantum Computing (Sem. 2)<br \/>\nScalable Distributed Computing (Sem. 1)<br \/>\nSocial and Ethical Issues in Computer Technology (Sem. 2)<\/p>\n<p>Students enrolled before the academic year 2025\/2026 may refer to the previous\u00a0 <a href=\"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/rules-and-resolutions-2\/\">rules.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectives\/Vision This track is designed to train students in the rigorous design and analysis of complex software systems, with a&hellip;<\/p>\n<p><a class=\"btn btn-dark btn-sm unipi-read-more-link\" href=\"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":13108,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-13033","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Curriculum \u201cFoundations of Software&quot; - Area Didattica - Dipartimento di Informatica<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Curriculum \u201cFoundations of Software&quot; - Area Didattica - Dipartimento di Informatica\" \/>\n<meta property=\"og:description\" content=\"Objectives\/Vision This track is designed to train students in the rigorous design and analysis of complex software systems, with a&hellip;Read More...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/\" \/>\n<meta property=\"og:site_name\" content=\"Area Didattica - Dipartimento di Informatica\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T14:09:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/curriculum-foundations-of-software\\\/\",\"url\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/curriculum-foundations-of-software\\\/\",\"name\":\"Curriculum \u201cFoundations of Software\\\" - Area Didattica - Dipartimento di Informatica\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/#website\"},\"datePublished\":\"2017-04-07T17:41:27+00:00\",\"dateModified\":\"2025-12-08T14:09:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/curriculum-foundations-of-software\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/curriculum-foundations-of-software\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/curriculum-foundations-of-software\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Master programme in Computer Science\",\"item\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Curricula\",\"item\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/master-programme-in-computer-science\\\/curricula-2\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Curriculum \u201cFoundations of Software&#8221;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/\",\"name\":\"Area Didattica - Dipartimento di Informatica\",\"description\":\"Ecco un altro sito Dipartimento di Informatica siti\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/didattica.di.unipi.it\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Curriculum \u201cFoundations of Software\" - Area Didattica - Dipartimento di Informatica","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/","og_locale":"en_US","og_type":"article","og_title":"Curriculum \u201cFoundations of Software\" - Area Didattica - Dipartimento di Informatica","og_description":"Objectives\/Vision This track is designed to train students in the rigorous design and analysis of complex software systems, with a&hellip;Read More...","og_url":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/","og_site_name":"Area Didattica - Dipartimento di Informatica","article_modified_time":"2025-12-08T14:09:27+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/","url":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/","name":"Curriculum \u201cFoundations of Software\" - Area Didattica - Dipartimento di Informatica","isPartOf":{"@id":"https:\/\/didattica.di.unipi.it\/en\/#website"},"datePublished":"2017-04-07T17:41:27+00:00","dateModified":"2025-12-08T14:09:27+00:00","breadcrumb":{"@id":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/curriculum-foundations-of-software\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/didattica.di.unipi.it\/en\/"},{"@type":"ListItem","position":2,"name":"Master programme in Computer Science","item":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/"},{"@type":"ListItem","position":3,"name":"Curricula","item":"https:\/\/didattica.di.unipi.it\/en\/master-programme-in-computer-science\/curricula-2\/"},{"@type":"ListItem","position":4,"name":"Curriculum \u201cFoundations of Software&#8221;"}]},{"@type":"WebSite","@id":"https:\/\/didattica.di.unipi.it\/en\/#website","url":"https:\/\/didattica.di.unipi.it\/en\/","name":"Area Didattica - Dipartimento di Informatica","description":"Ecco un altro sito Dipartimento di Informatica siti","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/didattica.di.unipi.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"acf":[],"jetpack_sharing_enabled":true,"publishpress_future_action":{"enabled":false,"date":"2026-07-02 23:48:00","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"translation_priority","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/pages\/13033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/comments?post=13033"}],"version-history":[{"count":55,"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/pages\/13033\/revisions"}],"predecessor-version":[{"id":27945,"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/pages\/13033\/revisions\/27945"}],"up":[{"embeddable":true,"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/pages\/13108"}],"wp:attachment":[{"href":"https:\/\/didattica.di.unipi.it\/en\/wp-json\/wp\/v2\/media?parent=13033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}