- Economics
- Bachelor Degree
- Scienze Statistiche ed Economiche [E4101B]
- Courses
- A.A. 2023-2024
- 1st year
- Introduction To Computer Science
- Summary
Course Syllabus
Obiettivi formativi
Il corso è finalizzato ad acquisire competenze relative a: fondamenti di architettura dei calcolatori, definizione di hardware e software, concetti di base sui sistemi operativi, rappresentazione dell'informazione, progettazione di algoritmi, basi di programmazione software.
Al termine del corso, lo studente sarà in grado di progettare algortimi ed implementarli in un linguaggio di programmazione, in particolare al fine di elaborare dati per risolvere specifici problemi.
Contenuti sintetici
Rappresentazione dell'informazione
Gestione dell'informazione: l'architettura dei calcolatori
Hardware e software di sistema: cenni ai sistemi operativi
La nozione di algoritmo
Costrutti fondamentali
Strutture dati
Procedure e funzioni
Scrivere e leggere file
Programmazione Orientata agli Oggetti
Esempi ed esercizi
Programma esteso
Rappresentazione dell'informazione
- informazione e incertezza
- la rappresentazione dei numeri nei calcolatori: il sistema binario, ottale e esadecimale (rappresentazione di numeri interi, decimali in virgola mobile, testo). Richiami di algebra booleana
Gestione dell'informazione: l'architettura dei calcolatori - macchina elementare
- macchina moderna (registri e ALU)
- memoria primaria e secondaria
- BUS
- dispositivi periferici
Hardware e software di sistema: cenni ai sistemi operativi - processi e CPU
- gestione della memoria
- gestione dell'I/O (Input/Output)
- il File System
La nozione di algoritmo - pseudocodice e diagrammi di flusso
- progettazione di un algoritmo: strategie elementari, top-down,e bottom-up
Costrutti fondamentali - variabili
- istruzioni condizionali
- cicli
- ricorsione
- operatori fondamentali
Strutture dati - tipi semplici
- array: vettori e matrici
- liste, pile e code
Procedure e funzioni
Scrivere e leggere file
Programmazione Orientata agli Oggetti - definizioni di "classe", "oggetto" e "metodo"
- (metodo) "costruttore" di una classe
- classi astratte e interfacce
- ereditarietà
Esempi ed esercizi
Prerequisiti
Nessuno
Metodi didattici
Lezione frontale
Esercitazioni (in aula e laboratorio)
Esercitazione finale con simulazione delle modalità di verifica dell'apprendimento
Modalità di verifica dell'apprendimento
La verifica dell'apprendimento consiste in una prova scritta e in una successiva discussione/accetazione del voto finale. Per sostenere l'esame è obbligatorio effettuare l'iscrizione attraverso segreterie online secondo le scadenze stabilite.
La prova scritta consiste in circa 10 domande a risposta chiusa e 1 o 2 domande a risposta aperta, il numero di domande, per entrambe le tipologie, potrà variare da un appello all'altro. Il tempo a disposizione per l'esame sarà orientativamente 2 ore, potrà variare da un appello all'altro in relazione alla numerosità e/o complessità delle domande.
Domande a riposta chiusa
Le domande a risposta chiusa riguarderanno argomenti di teoria oppure richiederanno di simulare l'esecuzione di un algoritmo e/o porzione di codice, oppure richiederanno di individuare l'output prodotto da un algoritmo e/o porzione di codice. Una risposta sbagliata non darà luogo ad alcuna penalizzazione, le risposte corrette contribuiranno al raggiungimento del voto finale.
Domande a risposta aperta
Verrà richiesto di progettare un algoritmo per la risoluzione di uno specifico problema e tradurlo in codice (Python) che dovrà risultare eseguibile.
Esiti
L'esame è superato se viene raggiunta la sufficienza sia nelle domande a risposta chiusa, sia nelle domande a risposta aperta. In caso di compito gravemente insufficiente, non ci sono limitazioni a ripresentarsi ad uno degli appelli successivi: si confida tuttavia che lo studente si presenti agli appelli preparato o che chieda di non correggere la prova qualora ritenesse di aver svolto il compito in modo gravemente insufficiente.
Testi di riferimento
Slides, esercizi ed in generale tutto il materiale presentato a lezione sarà pubblicato su questo sito web.
Libri
- "Fondamenti di Informatica per l'Università". Enrico Grosso, Manuele Bicego. G. Giappichelli Editore, Torino
- "Concetti di informatica e fondamenti di Python" (seconda edizione). Cay Horstmann, Rance D. Necaise. Maggioli Editore.
Periodo di erogazione dell'insegnamento
Primo semestre, secondo ciclo.
Lingua di insegnamento
Italiano
Learning objectives
The course is aimed at gathering skills on: fundamentals of computer architecture, definition of hardware and software, basic concepts on operating systems, information representation, algorithm design, software programming basics.
At the end of the course, the student will be able to design algorithms and implement them in a programming language, in particular in order to process data to solve specific problems.
Contents
Representation of information
Information management: the architecture of computers
Hardware and system software: introduction to operating systems
The notion of algorithm
Fundamental constructs
Data structures
Procedures and functions
Write and read files
Object Oriented Programming
Examples and exercises
Detailed program
Representation of information
- information and uncertainty
- the representation of numbers in computers: the binary, octal and hexadecimal system (representation of integers, floating point decimals, text). Basics of Boolean algebra.
Information management: the architecture of computers - elementary machine
- modern machine (registers and ALU)
- primary and secondary memory
- BUS
- peripheral devices
Hardware and system software: introduction to operating systems - processes and CPU
- memory management
- I/O management (Input / Output)
- the File System
The notion of algorithm - pseudocode and flow charts
- algorithm design: elementary, top-down, and bottom-up strategies
Fundamental constructs - variables
- conditional statements
- cycles
- recursion
- fundamental operators
Data structures - simple types
- array: vectors and matrices
- lists, stacks and queues
Procedures and functions
Write and read files
Object Oriented Programming - definitions of "class", "object" and "method"
- (method) "constructor" of a class
- abstract classes and interfaces
- inheritance
Examples and exercises
Prerequisites
None
Teaching methods
Lectures
Exercises (in the classroom and laboratory)
Final exercise with an exam simulation
Assessment methods
The final exam consists of a written test and a subsequent discussion/acceptance of the final grade. Registration through the online system is mandatory.
The written test consists of about 10 "multiple-choice" questions and 1 or 2 "open-ended" questions, the number of questions, for both types, may vary from one session to another. The time available for the exam will be approximately 2 hours, it may vary from one session to another in relation to the number and/or complexity of the questions.
Multiple choice questions
The multiple-choice questions will concern theoretical topics or will require you to simulate the execution of an algorithm and/or piece of code, or will require you to identify the output produced by an algorithm and/or piece of code. A wrong answer will not give rise to any penalty, the correct answers will contribute to the achievement of the final grade.
Open-ended questions
You will be asked to design an algorithm for solving a specific problem and translate it into code (Python) that must be executable.
Outcomes
The exam is passed if a sufficient grade is achieved both in the multiple-choice questions and in the open-ended questions. In the event of a seriously insufficient test, there are no limitations on returning to one of the subsequent exams: however, we are confident that the student will present himself for the exams prepared or that he will ask not to correct the test if he considers that he has carried out the task in a seriously insufficient way.
Textbooks and Reading Materials
Slides, exercises, and, in general, all the materials presented during lectures will be published on this website
Textbooks
- "Fondamenti di Informatica per l'Università". Enrico Grosso, Manuele Bicego. G. Giappichelli Editore, Torino
- "Concetti di informatica e fondamenti di Python" (seconda edizione). Cay Horstmann, Rance D. Necaise. Maggioli Editore.
Semester
First semester, second period.
Teaching language
Italian