PRINCIPLES OF COMPUTER SCIENCE
Stampa
Enrollment year
2018/2019
Academic year
2018/2019
Regulations
DM270
Department
DEPARTMENT OF ELECTRICAL,COMPUTER AND BIOMEDICAL ENGINEERING
Course
ELECTRONIC AND COMPUTER ENGINEERING
Curriculum
PERCORSO COMUNE
Year of study
Period
Annual (01/10/2018 - 14/06/2019)
ECTS
12
Language
Italian
Prerequisites
Whose required for the subscription to the University courses.
Learning outcomes
This course is based on the Principles of computer Science Module (Prof. danese) and Computer programming Module (Prof. Facchinetti). The objective of the course is to provide the students with logical principles of the operation and organization of computer systems and the acquisition of methods to exploit their potentials, with particular reference to the study and techniques of the computer programming. The course includes a description of the functional structure of the major hardware and software modules that compose a computer system. Moreover, the basic tools and techniques for using the computer and its programming are provided, which form the essential educational content and are the basis of the necessary experimental activity. It is believed that, once passed the exam, the student has acquired a set of cultural tools to facilitate the study of other subjects of its curriculum and, on the other hand, has identified the topics that should be independently investigated to acquire skills not provided from their study plan. In particular, it is believed that the student will have acquired the necessary skills for the development of algorithmic solutions for problems of limited complexity and coding, and development of C programs as a basis for the study of more complex and advanced languages.
Course contents
Introductory concepts
Definition of concepts, technical terms and fields of application of electronic computers.

Information coding
Discussion of several techniques of representation of numerical information, text, graphics inside of computers. Presentation of redundant and non-binary codes, detectors and error-correcting. Introduction to the Boolean algebra.

Computer architecture
Description of the functional structure of computers and modules that compose them. Description of the operation logic of the processors, the size of the instructions and the execution cycle, the organization of the memory devices and related access techniques, the principles of operation and characteristics of the peripheral devices. Description of the architecture of a complex computer system with reference to the problems of memory and resources management, and the parallelism of operation as well. The description is intended to provide an overview of the architecture, in terms of both hardware and software. Therefore, this topic also includes a description of the basic functionality of the software.

Operating systems
Presentation of the main features of operating systems, including the kernel and basic software. Classification of the various types of existing operating systems and their main features.

Programming tools
Presentation of functions and features of tools to support for the software development. In particular, showing of commands for manipulating files in a Unix environment, and description of the operation of compilers and interpreters as tools for the implementation of programs.

Data structures
Introduction to the most relevant data structures from their abstract definition viewpoint and from their actual implementation.

Programming principles
Discussion on the principles of programming computers, including the formalization of the problem, the design and coding algorithms through the methods and techniques of structured programming and the criteria for analyzing, testing, and validation of programs. The objective is to provide students with an operational capacity in software development and a sensitivity to the problems of good documentation and reliability of the applications.

C language programming
Presentation of the principles of programming and detailed description of the C language. The theoretical activity is integrated by practical exercises in the computer laboratory dealing with problems of numerical computation and data manipulation. In particular sorting algorithms are implemented, the management of data structures, data filtering, etc.
Teaching methods
Lectures (hours/year in lecture theatre): 75
Practical class (hours/year in lecture theatre): 25
Practicals / Workshops (hours/year in lecture theatre): 0
Reccomended or required readings
For the content of Prof. Danese.

Web site: http://mclab.unipv.it/index.php/corsi?id=28

J. Glenn Brookshear, Dennis Brylow: “Informatica. Una panoramica generale”, Pearson, 12^ EDIZIONE, 9/2016, Milano.

For the content of Prof. Facchinetti.

[1] Tullio Facchinetti, Cristiana Larizza, Alessandro Rubini. Dalla A alla Z passando per C. Maggioli Editore, 2013.

[2] Brian W. Kernighan, Dennis M. Ritchie. Linguaggio C. Seconda Edizione - Jackson Libri, 1989. (Testo ideale come manuale di riferimento per programmatori che già conoscano il linguaggio).
Assessment methods
Main exam

The exams is a test on the part of the course held by Prof. Danese (hereafter called "theory test"), and a test on the part held by Prof. Facchinetti (called "programming test").
The theory test proposes 6 questions on topics covered in the lectures of Prof. Danese.
The programming test consists of a practical test program to be carried out in the computers classroom and a test on theory of programming for the verification of theoretical concepts presented during the lectures by Prof. Facchinetti.
The test on theory of programming consists of 2-3 questions, while the practical test involves the implementation of an algorithm using the C programming language.
The overall result of the programming test is the weighted average of the results of the programming test and the test on theory of programming (respectively, with a weight of 1/3 and 2/3).
It is possible to carry out the practical test and test on theory of programming in different exams.

The achievement of a sufficient assessment in theoretical and programming tests allows to pass the exam. The overall score is the average of the valuations obtained in the theory test and that of programming test.
It is possible to carry out the two tests, theory and programming, in different exams.

There is an optional oral examination with two different purposes:

• in case that the resulting overall assessment is sufficient, the oral examination allows to improve the score (but the score can also decrease);
• in case theory test has been assessed as insufficient, but with a score greater or equal to 16/30, the oral test can allow to achieve, for this test, a sufficient final evaluation.

In case of insufficient or unsatisfactory outcome of one of the three tests (theory test, practical test and test on theory of programming), the candidate can repeat that test only, maintaining the validity of other tests. Once passed, the validity of a test ends after one calendar year from when the test was passed. If the student repeats a test, the previously achieved result, although sufficient, is discarded.


The activity is split