95602 - PROGRAMMING AND COMPUTER ARCHITECTURES

Scheda insegnamento

Anno Accademico 2022/2023

Conoscenze e abilità da conseguire

At the end of the course, the student acquires the basics of Python programming, data structures and algorithms. He is able to use the libraries to work with statistics, graphs and tables, spreadsheets and web pages. Providing the student with the concepts necessary for understanding computer architectures and the role of hardware components in the performance of computing systems.

Contenuti

The course is structured in three modules taking place in parallel: one carrying out lectures on Python programming, one with corresponding lab activity (guided exercises at the PC), and one dedicated to computer architectures.

Python Programming: variables, objects, types and expressions; control flow statements; object attributes and methods; function definitions and scoping; modules, standard library and packages; immutable and mutable objects; basic data structures (strings, tuples, lists, dictionaries) and their use in the solution of problems; basic types of algorithms.

Computer Architectures: working knowledge of the key terms, computer components (CPU, RAM, HDD/SSD, I/O devices), milestones in computer architectures, current trend and applications; digital representation, logic circuits, chips and their production; modern computer architectures: computer performance, parallelism, comparison of architectures, cloud paradigm, computer-related companies.

Testi/Bibliografia

John V. Guttag
Introduction to Computation and Programming Using Python. 3rd edition.
MIT press, 2021.
Electronic version available here for UNIBO users (by clicking on “fulltext”).

A.S. Tanenbaum, T. Austin
Structured Computer Organization. 6th edition. 
Pearson Education Limited

Another book on Python:

Allen B. Downey
Think Python: How to Think Like a Computer Scientist. 2nd edition.
O'Reilly Media, 2012.
Electronic version distributed free: PDFHTML.

Metodi didattici

Lectures on Computer Architectures and Python Programming, the latter with live-coding using Thonny and Python Tutor.

Guided programming exercises in Python with JupyterLab.

As concerns the teaching methods of this course unit, all students must attend Module 1, 2 on Health and Safety online.

Modalità di verifica e valutazione dell'apprendimento

There is a single exam covering both the lectures (on Computer
Architectures and Python Programming) and the lab. The exam consists of a written test with closed-ended, open-ended questions, and programming problems.

The part on Computer Architectures will contribute to the final grade with 10 points out of 30 (with a minimum score of 5 to pass the exam) and the part on Python Programming with 20 points out of 30 (with a minimum score of 10 to pass the exam). The exam is passed with an overall score of at least 18; perfectly answered tests will get an overall grade of 30 with Laude.

Strumenti a supporto della didattica

During the term of the lectures, material (both slides and lab exercises) will be available on virtuale

Students are encouraged to install on their PCs Thonny, a simple environment for the programming language Python 3, which will be used during the lectures and JupyterLab, a web-based interactive development environment that will be used during the lab activities.

Orario di ricevimento

Consulta il sito web di Mario Bravetti

Consulta il sito web di Raffaele Cappelli

Consulta il sito web di Guido Borghi