Title: On the Foundations of Computing (60 ore, 9cfu)
Semester: 2nd
Professor in charge of the course: Giuseppe Primiero
Teaching Unit A (20 ore, 3cfu): Mathematical Foundation
Teaching Unit B (20 ore, 3cfu): Engineering Foundation
Teaching Unit C (20 ore, 3cfu): Experimental Foundation
This course is addressed to students of the Master Degree in Philosophical Sciences (Classe LM78, enrolled from AY 2017/2018, 120 CFU).
Description
Computing is developing academically and industrially, and it has a huge impact on everyday’s life. This requires not only for practitioners to be aware of the delicate and extensive role they are playing in society, but it also imposes an essential task to disciplines like Philosophy that have traditionally played a critical role on the methodological and epistemological nature of the sciences. Computing and information represent new essential disciplines for students of philosophy, be they oriented towards an academic or professional career, to reflect and judge upon, to assess their working methodologies and foresee future developments.
Learning Objectives
By locating computing in its conceptual, technical and historical evolution and by learning the principles that define it, students will gain a critical awareness and technical knowledge of the processes by which computing has become an essential aspect of our lives and will understand how this subject is located with respect to other sciences. The course includes programming activities for the model of Turing Machines and for an agentbased simulation software. Such notions and methods will be valuable in any activity requiring advanced reasoning and problemsolving abilities in the computational domain.
Prerequisites
Successful completion of at least one course in Logic is strongly recommended.
Expected Learning Outcomes
Knowledge acquisition and understanding:
The course provides knowledge of philosophical and technical literature in the area of computing and the philosophy of information; principles of logic, epistemology of computing sciences and technologies; and the understanding of new software and dataintensive science methodologies.
Skills acquisition and ability to apply knowledge:
The course provides technical and analytical skills in the following topics:
– Logic and computability
– Turing Computability
– Logics of Program Correctness
– Laws of Computing Evolution
– Logics of Information
– Errors in Computing
– Computer Modelling, Experiments and Simulation
– MultiAgent Systems and Logics of Communication
At the end of the course, students are expected to be able to:
 identify classes of computational functions and problems;
 identify algorithmic processes and their properties;
 formulate formal structures applied to computational and informational structures;
 analyze the ontological structure of computational systems and their properties;
 formulate hypothesis and experiments in a computational setting.
References
Teaching Unit A+B+C
G.Primiero. On the Foundations of Computing. OUP, 2019
L. Floridi, The Logic of Being Informed, Logique Et Analyse 49 (2006)
G.Primiero, An Epistemic Logic for Becoming Informed, Synthese, 167:2, pp.363389, 2009.
Teaching Unit C
M.Huth, M.Ryan, Logic in Computer Science, CUP 2004.
G.Primiero, M. Bottone, F. Raimondi, J. Tagliabue, Trust and Distrust in Contradictory Information Transmission. Applied Network Science, 2:12. DOI: 10.1007/s4110901700290 (2017).
All the reading material will be made available to students.
Programme for Attending and NonAttending Students
Teaching Unit A
Mathematical Foundations of Computing:
1. The foundational Crisis of Mathematics
2. Computing and Decidability
3. Definition of Computable
4. Mechanical Computation
5. Logics of Program Correctness
Teaching Unit B
Engineering Foundations of Computing:
1. Universality and Allpurposefulness
2. The Laws of Computing Evolution
3. Logics of Information
4. Specification and Implementation
5. Miscomputation
Teaching Unit C
The Experimental Foundation of Computing:
1. Computer Experiments, Models and Simulations
2. Logics for MultiAgent Systems
4. Logics of Communication
5. Epistemology of Experimental Computing
Examination: Written
For attending students:
1. Compulsory: Each unit in this course will be followed by a compulsory written test with open questions, to verify understanding and technical mastering of issues specific to that unit. Each test is structured as follows:
Group I: Definitions and Basic Concepts

This set contains 6 questions of 3 points each concerning essential knowledge. The criteria of evaluation are correctness and clarity. All these questions need to be answered correctly to pass the exam. Only full points are given. Total points: 18.

Group II: Technical and Formal Analysis
This set contains 2 questions of 4 points each concerning more complex formal and technical aspects related to computing. The criteria of evaluation are correctness and clarity. Partial evaluation on each question is admitted. Total points available: 8. 
Group III: Philosophical Analysis
This set contains 2 questions of 5 points each concerning philosophical aspects related to computing. The criteria of evaluation are correctness, clarity and completeness. Partial evaluation on each question is admitted. Total points available: 10.
Participation to Test 2 is reserved to students who have passed Test 1. Participation to Test 3 is reserved to students who have passed Test 2. With a failed test the student will need to take the full exam at the end of the course as by the modalities given for nonattending students.
Dates of the Tests will be made available to Students on the Website of the Course. Corrections of each test will be communicated with feedback to students via email. The final mark offered to the students will be one consistent with each Test counting for 1/3 of the total.
2. Optional: A short paper to be presented at the end of the course. This additional task is for students who wish to take the opportunity to research one of the topics presented during the course. This can constitute the basis for a Master dissertation. In the case this option is taken, the evaluation of the paper will count towards ¼ of the total final marking.
For non attending students:
A written exam covering topics from the whole program. The final exam is structured as follows:

Group I: Definitions and Basic Concepts
This set contains 6 questions of 3 points each concerning essential knowledge. The criteria of evaluation are correctness and clarity. All these questions need to be answered correctly to pass the exam. Only full points are given. Total points: 18.

Group II: Technical and Formal Analysis
This set contains 4 questions of 2 points each concerning more complex formal and technical aspects related to computing. The criteria of evaluation are correctness and clarity. Partial evaluation on each question is admitted. Total points available: 8. 
Group III: Philosophical Analysis
This set contains 4 questions of 2 points each concerning philosophical aspects related to computing. The criteria of evaluation are correctness, clarity and completeness. Partial evaluation on each question is admitted. Total points available: 8.
Notes
The exam for students with (learning) disabilities must be agreed with the lecturer and with the competent office.