PRINCIPLES OF COMPUTER SCIENCE
Stampa
Enrollment year
2021/2022
Academic year
2021/2022
Regulations
DM270
Academic discipline
ING-INF/05 (DATA PROCESSING SYSTEMS)
Department
DEPARTMENT OF ELECTRICAL,COMPUTER AND BIOMEDICAL ENGINEERING
Course
INDUSTRIAL ENGINEERING
Curriculum
PERCORSO COMUNE
Year of study
Period
Annual (27/09/2021 - 17/06/2022)
ECTS
12
Lesson hours
106 lesson hours
Language
Italian
Activity type
WRITTEN TEST
Teacher
CUSANO CLAUDIO (titolare) - 12 ECTS
Prerequisites
=
Learning outcomes
The course provides students with a basic knowledge of the principles of computer science.
Students will be able to understand how a computer works and the hardware and software components that make up information processing systems. Students will also be able to devise solutions to simple computational problems by designing algorithms and data structures.
At the end of the course, they will also have acquired the ability to make computer programs written in the Python programming language.
Course contents
The course is divided into two parts: the first is an introduction to computer science and procedural programming, while the second explores the topics of object-oriented programming, algorithms and data structures.

More precisely, the first part includes the following topics:
- information representation: representation of integer and fractional numbers; representation of negative numbers; fixed and floating point representations. Encoding of text and multimedia information.
- Computer architecture: architecture of Von Neumann; machine language; instruction execution cycle. Storage devices and input / output devices.
- Programs and programming languages: syntax and semantics of languages; compilers and interpreters.
- The Python programming language: variables and expressions; control structures; standard library.
- Data containers: strings, lists, tuples, dictionaries and sets.
- Procedural programming: definition of functions; parameters; recursive functions.

The second part of the course covers the following topics:
- object oriented programming: classes and objects; attributes and methods; inheritance and polymorphism.
- Advanced programming techniques: exceptions, iterators, generator expressions.
- Algorithms: definition and properties; analysis of their correctness and complexity.
- Search algorithms: linear and binary search; hash tables.
- Sorting algorithms: elementary algorithms; recursive algorithms; stability of sorting algorithms.
- Linear data structures: lists, stacks and queues.
- Trees: definitions; representation of tree structures; search trees; heap and priority queues.
- Graphs: definitions; representation of graph structures; algorithms on graphs.
- Introduction to computation theory.
Teaching methods
Lectures (hours/year in lecture theatre): 82
Practical class (hours/year in lecture theatre): 0
Practicals / Workshops (hours/year in lab): 24
Reccomended or required readings
Allen B. Downey. Think Python: How to Think Like a Computer Scientist. O'Reilly.
https://greenteapress.com/thinkpython/thinkpython.html

Bradley N. Miller, David L. Ranum. Problem Solving With Algorithims and Data Structures Using Python. Franklin Beedle & Assoc.
https://runestone.academy/runestone/books/published/pythonds/index.html
Assessment methods
The exam takes place in the lab and is divided in two sections, one for each part of the course. The sections are mutually independent, and each one includes questions and excercises about the topics of the course as well as programming exercises.
Further information
The exam takes place in the lab and is divided in two sections, one for each part of the course. The sections are mutually independent, and each one includes questions and excercises about the topics of the course as well as programming exercises.
Sustainable development goals - Agenda 2030