70/0006-M - FUNDAMENTALS OF COMPUTER SCIENCE
Academic Year 2016/2017
Free text for the University
GIAN LUCA MARCIALIS (Tit.)
- Teaching style
- Lingua Insegnamento
|[70/77] CHEMICAL ENGINEERING||[77/00 - Ord. 2016] PERCORSO COMUNE||6||60|
|[70/78] MECHANICAL ENGINEERING||[78/00 - Ord. 2016] 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, to 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, appliying in a flexible way the basic concepts provided in the course.
No preliminary requirements.
Computer architecture (basic notions)
Logical organization of computers and operating principles: the Von Neumann architecture. Von Neumann architecture components: CPU, memory, peripheral I/O, system bus. Mechanism of program execution. Evolution of the Von Neumann architecture: memory hierarchy, pipelining, CISC and RISC architectures, multi-core and multi-processor architectures.
Binary encoding of information (basic notions)
The concept of information encoding. Encoding of numerical information: integer (unsigned, sign and value, two's complement) and real numbers (fixed-point and floating point). Notes on encoding of further non-numerical information (eg, sounds and images).
The operating system (basic notions)
Background. Functions and organization of operating systems. Process management, main memory, peripherals, secondary memory. The user interface.
Databases management systems. Data models. The relational data model. Tables, attributes, schemas and instances of a relational database. Key of a table. Integrity constraints. Query languages: SQL.
Computer networks, Internet (basic notions)
Architecture of networks: local area networks (LAN), metropolitan (MAN), and wide area (WAN). Network topologies. Network protocols: functions and structure. The ISO / OSI model. The Internet: history, IP and TCP, application protocols (WWW, email, etc..).
Algorithms and languages for coding algorithms
The concept of the algorithm. Languages for coding algorithms. Programming languages: languages of low / high-level languages translated / interpreted. Programming paradigms (notes): procedural, object-oriented, functional, declarative. Examples of algorithms: sorting algorithms (selection sort, insertion sort) and search (sequential search and binary search of ordered sequences).
Introduction to Python
The main instructions of the Python language: assignment statement, conditional, iterative, user input / output (print and input / raw_input). Functions and procedures.
Data structures of the Python language
Definition of data type. Simple and structured data types. Built-in types and user-defined. Pre-defined simple types (int, long, double, boolean, string). Structured types: tuples, lists, dictionary. Definition of classes (class).
Control structures of the Python language
If, for, while.
The subroutines in Python language: functions and procedures
Structuring a program in subroutines. Parameters and arguments of subroutines. Defining and calling subroutines. The subroutines in Python language: functions and procedures. Declaration of subroutines. Parameter passing. Some built-in functions of Python (str, len, etc..). Rules for string formatting in writing.
Input / Output standard and file in Python
Accessing files in read / write / modify. File operations of the secondary memory: the functions open, close, etc.
25 hours of lectures on general issues concerning computer science (architectures of computers, operating systems and computer networks).
35 hours on databases and on the Python language (with 20 hours of programming practice during the teaching schedule).
Verification of learning
The assessment of learning is done through written test, which covers the topics of the course. The texts and solutions of exams are made public via web and, upon request, discussed with the students.
The final grade, ranging from 18 and 30, depends on the quality of the written exam produced by the student. To enable the possibility of getting full mark with distinction, the overall score is 32.
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 http://www.diee.unica.it/~marcialis/FI