70/0006-M - FUNDAMENTALS OF COMPUTER SCIENCE
Academic Year 2021/2022
Free text for the University
GIAN LUCA MARCIALIS (Tit.)
- Teaching style
- Lingua Insegnamento
|[70/77] CHEMICAL ENGINEERING||[77/00 - Ord. 2020] PERCORSO COMUNE||6||60|
|[70/78] MECHANICAL ENGINEERING||[78/00 - Ord. 2019] PERCORSO COMUNE||6||60|
Knowledge and understanding: the student is expected to learn the basics of computer science –as a science that studies the algorithms, the principles of functioning, and the organization of computers, information systems, and computer networks, as well as the foundations of programming languages.
Ability to apply knowledge and understanding: the student will become able to understand the organization and the behavior of modern information systems, develop algorithms for solving problems of medium complexity and to encode them using the Python language.
Making judgments: the student will be able to assess the adequacy of information technology tools in a professional environment, the data structures, and approaches to their use for solving data processing problems.
Communication skills: the student will be able to interact with computer specialists on the basic organization of a modern information system, and to describe the procedures for solving problems of data processing.
Ability to learn independently: the student will be able to learn advanced methods and new programming languages, applying in a flexible way the basic concepts provided in the course.
No preliminary requirements.
Definition of computer science. IT system and information system. Components of a computer system. Informal definition of algorithm. IT applications.
Algebra of Boole
Definition. Truth Tables. Basic operators: AND, OR, NOT. Properties and theorems (De Morgan). Boolean expressions. XOR, XNOR, NAND, NOR operators.
Binary information coding (outline)
The concept of coding information. Coding of numeric information: integers (without sign, sign and value, two's complement) and real numbers (fixed and floating point). Notes on coding other non-numeric information (e.g. sounds and images).
Computer architecture (outline)
Logical organization and operating principles of computers: Von Neumann's architecture. Components of the architecture of Von Neumann: CPU, memory, I / O peripherals, system bus. Mechanism of program execution. Evolutions of Von Neumann's architecture.
The operating system (outline)
Background. Functions and organization of operating systems. Management of processes, main memory, peripherals, secondary memory. The user interface.
Databases, database management systems. Data models: the relational model. Tables, attributes, schemes and instances of a relational database. Key to a table. Integrity constraints. Query languages: SQL.
Algorithms and coding languages of algorithms
Formal definition of algorithm. Languages for coding algorithms. Programming languages: low / high level languages, translated / interpreted languages. Examples of algorithms: sorting algorithms (selection sort, insertion sort) and search (sequential search and binary search on ordered sequences).
Introduction to the Python language
The main instructions of the Python language: assignment instruction, conditional, iterative, input / output instructions (print and input / raw_input). Functions and procedures.
Data structures of the Python language
Definition of data type. Simple and structured data types. Predefined and user-defined types. The predefined simple types (int, long, double, boolean, string). Structured types: tuple, list, dictionary. Class definitions.
Control structures of the Python language
The if, for, while statements.
Subroutines in the Python language: functions and procedures
Subdivision of a program into subprograms. Parameters and arguments of subroutines. Definition and call of subroutines. Subroutines in the Python language: functions and procedures. Subroutines declaration. Passing parameters. Some predefined Python functions (str, len, etc.). Rules for formatting strings for writing.
Standard and file-based input / output in Python language
Access to read / write / edit files. Operations on secondary memory files: the open, close, etc. functions.
* 12 hours of lectures on general issues concerning computer science (boolean algebra, binary information representations, architectures of computers, operating systems, and databases).
* 48 hours on programming in Python language.
To meet specific educational needs related to the epidemiological situation, the possibility of live streaming lessons or recordings of the same available online is provided.
Furthermore, the exercises can be carried out through forms of remote interaction with the available IT supports.
Verification of learning
The exam is divided into a test comprising both the theory part (8 points) and the programming part with Python language (25 points).
The test is carried out in writing, through open-ended, multiple-answer questions, resolution of conversion exercises in binary/decimal format, Boolean expressions, databases, computer architectures, and operating systems. The PYTHON language part consists of writing a project in PYTHON code, and/or in the interpretation of PYTHON programs, and/or in answering questions about the PYTHON language. The programming part aims to verify the candidate's skills in terms of linguistic abstraction and problem-solving skills, using the language constructs indicated in the course content.
The oral test is mandatory if the student reports a grade between 16 and 20 out of thirty.
COVID-19 emergency. The written test is administered as a "fiduciary written test" assigned through the MS Teams platform. The assessment of the written test is followed by three types of oral, aimed at confirming, verifying, completely revising the student's knowledge and skills shown in the written test itself.
All the details, together with a video tutorial for the fiduciary written test, are made known on the course website at:
1) S. Ceri, D. Mandriola, L. Sbattella, P. Cremonesi, G. Cugola, Informatica: arte e mestiere, Terza Edizione, McGraw-Hill 2008, ISBN 918-88-386-6429-8.
2) K.A. Lambert, Programmare in Python, Apogeo, 2012, ISBN 978-88-387-8699-0.
3) G.M. Schneider, J.L. Gersting, Informatica, Apogeo (Maggioli), 2007.
4) M. Mezzalama, E. Piccolo, Capire l’informatica, CittàStudi (De Agostini), 2010.
5) C. Horstmann, R.D. Necaise, Concetti di informatica e fondamenti di Python, Apogeo (Maggioli), 2014.
6) F. Aiolli, Appunti di programmazione (scientifica) in Python, Esculapio, 2014.
The pdf slides of the lessons are available to students on the web pages of the teacher at https://www.unica.it/unica/page/it/fondamenti_di_informatica_1