- Introduction To Computer Science
- Summary
Course Syllabus
Obiettivi
L'obiettivo principale del corso è quello di fornire competenze di base e capacità pratiche inerenti alle discipline dell'informatica e dell'analisi dei dati, con particolare attenzione alle possibili applicazioni alla sfera delle scienze della terra.
Contenuti sintetici
Il corso consentirà di:
- Capire cos’è l’informatica
- Conoscere la storia dell'informatica
- Capire perché l’informatica è importante per le scienze della terra
- Apprendere nozioni legate alle tecnologie di rete, comprendere la differenza tra Internet e il Web
- Comprendere il problema dell'accesso ai dati e alle informazioni
- Capire logica e architettura di un computer
- Familiarizzare con l’organizzazione, l’analisi e la visualizzazione dei dati
- Familiarizzare con il concetto di base di dati relazionale e linguaggio di interrogazione SQL
- Familiarizzare con gli algoritmi
- Mettere in pratica le teorie in applicazioni concrete
- Imparare ad utilizzare Excel e Python per immagazzinare, processare e analizzare dati, produrre grafici, implementare algoritmi
Programma esteso
Introduzione
- Introduzione al corso, organizzazione di lezioni ed esercitazioni
- Cos'è l'informatica
- Dati e informazione
- Cosa sono gli algoritmi
- Perché l'informatica per le Scienze della Terra
- I G.I.S. (Geographical Information System)
Storia dell'Informatica
- Preistoria e primi "passi" dell'informatica
- La definizione dei fondamenti teorici (logica, algebra Booleana, i primi programmi)
- Le macchine elettromeccaniche
- La macchina di Turing
- ENIAC e gli antenati del computer digitale
- Transistor, chip e microprocessori
- I primi personal computer
- Conservazione e trasmissione di dati (protocolli)
- La legge di Moore
- ARPANET e il percorso che conduce ad internet
- La diffusione al grande pubblico dei computer (prima) e della rete (dopo)
Architettura del calcolatore
- L'hardware
- L'architettura di Von Neumann
- CPU, Memoria, I/O, BUS
- Il software
- Il sistema operativo
Le reti di calcolatori
- Le componenti di una rete di calcolatori
- Classificazione delle reti per estensione
- Classificazione delle reti per topologia
- Classificazione delle reti per mezzo trasmissivo
- I protocolli di comunicazione
- Internet e Internet of Things
- I servizi di Internet: Web, posta elettronica, DNS
Internet e il Web
- Differenza tra Internet e il Web
- Il World Wide Web
- Web statico e Web dinamico
- Web 1.0, 2.0, 3.0, 4.0
- Il Web sociale
Il problema dell'accesso alle informazioni
- Introduzione al problema
- I motori di ricerca
- I sistemi di raccomandazione
- L'accesso alle informazioni sui social media
- Analisi dei dati sui social media
La rappresentazione dei dati nel sistema binario
- I sistemi di numerazione
- Il sistema decimale
- Il sistema binario
- Conversione dei numeri in diverse basi
- La rappresentazione in modulo e segno
- La rappresentazione in complemento a due
- L'algebra di Boole e i circuiti elettronici
La codifica dei testi, delle immagini e del suono
- La rappresentazione del testo
- I caratteri
- I sistemi di rappresentazione ASCII e Unicode
- La rappresentazione delle immagini
- Grafica raster
- Grafica vettoriale
- La rappresentazione del suono
- Il campionamento audio
- La qualità audio nella rappresentazione digitale
I database e il modello relazionale
- Dati e informazioni
- Sistemi informativi
- Il sistema informatico
- Basi di dati
- Sistemi di gestione di basi di dati
- Il modello relazionale
- Relazioni tra tabelle (uno a uno, uno a molti, molti a molti)
Il linguaggio SQL
- Definizioni di schemi e di istanze in SQL
- Sintassi e domini elementari
- Vincoli interrelazionali
- Proiezione e selezione
- Selezione dei dati da più tabelle
Introduzione agli algoritmi e alla programmazione
- Cos'è un algoritmo
- Le proprietà degli algoritmi
- I diagrammi di flusso (istruzioni condizionali e cicli)
- Lo pseudocodice
- I linguaggi di programmazione
- I paradigmi di programmazione
I linguaggi procedurali
- Variabili e costanti
- Le istruzioni di assegnamento
- I tipi di dato (elementari e derivati)
- Le funzioni
- Le strutture di controllo (condizionali e iterative)
Introduzione a Python - Prima parte
- Ricapitolazione dei concetti fondamentali della programmazione procedurale
- Esempio di algoritmo (diagramma di flusso, pseudocodice e codice Python)
- Descrizione dell'ambiente di programmazione Python
- Utilizzo di base
- Le variabili in Python
Introduzione a Python - Seconda parte
- Valori scalari, liste e strutture dati in Python
- Accedere agli elementi delle strutture dati
- Operazioni sulle variabili e sulle strutture dati
- Gli operatori
- Le strutture di controllo (if-elif-else, for, while)
Durante le Esercitazioni, verranno inoltre illustrati, nella pratica, l'utilizzo di Excel e delle sue principali funzioni e verrà approfondito l'utilizzo di Python per la definizione di algoritmi per il trattamento e l'analisi dei dati.
Prerequisiti
Nessuno
Modalità didattica
Lezioni frontali (Dr. Marco Viviani)
Esercitazioni in laboratorio (su turni distinti)
Il corso viene erogato in lingua italiana
Materiale didattico
Testi consigliati (non obbligatori)
TEORIA e concetti di base:
- Informatica. Una panoramica generale J. Glenn Brookshear Pearson
- Informatica arte e mestiere. MacGrawHill
Python:
- Introduzione a Python. Per l'informatica e la data science. Ediz. MyLab. Con Contenuto digitale per accesso on line Copertina flessibile, di Paul J. Deitel (Autore), Harvey M. Deitel (Autore), Pietro Codara (a cura di), Carlo Mereghetti (a cura di), Diego Valota (Traduttore).
Risorse online suggerite a lezione
Periodo di erogazione dell'insegnamento
Marzo - giugno 2020
Modalità di verifica del profitto e valutazione
Prova al computer (in laboratorio o online): domande teoriche + esercizi pratici
- 6 domande con scelta a risposta multipla per il controllo estensivo di concetti teorici e teorico-pratici illustrati a lezione
- 1 domande aperta per il controllo intensivo della preparazione sul programma d'esame (aspetti teorici)
- 3 esercizi per la verifica dell'apprendimento dell'utilizzo di Excel, della conoscenza del linguaggio SQL, dei concetti fondamentali della programmazione mediante l'utilizzo di Python.
Colloquio (facoltativo)
Orario di ricevimento
Su appuntamento
Aims
The main objective of the course is to provide fundamental expertise and practical skills on computer science and data analysis, with particular focus on the possible applications to the sphere of geological sciences.
Contents
The course will allow to:
- Understand what computer science is
- Know the history of computer science
- Understand what computer science is important in geological sciences
- Learning notions related to network technologies, understanding the difference between the Internet and the Web
- Understanding the problem of access to data and information
- Understand the logic and architecture of computers
- Become familiar with the organization, analysis, and visualization of data
- Become familiar with the concept of relational database and SQL query language
- Become familiar with algorithms
- Transform theories into practical applications
- Learn to use Excel and Python to store, process and analyze data, produce graphs, implement algorithms
Detailed program
Introduction
- Introduction to the course, organization of lectures and exercises.
- What is information technology
- Data and information
- What are algorithms
- Why computer science for the earth sciences.
- G.I.S. (Geographical Information System).
History of Computer Science
- Prehistory and early "steps" of computer science.
- The definition of the theoretical foundations (logic, Boolean algebra, the first programs).
- The electromechanical machines
- The Turing machine
- ENIAC and the ancestors of the digital computer.
- Transistors, chips and microprocessors
- The first personal computers
- Data storage and transmission (protocols).
- Moore's law
- ARPANET and the path leading to the internet.
- The spread to the general public of computers (before) and the network (after).
Computer architecture
- The hardware
- Von Neumann's architecture.
- CPU, Memory, I/O, BUS
- The software
- The operating system
Computer networks
- The components of a computer network.
- Classification of networks by extent
- Classification of networks by topology
- Classification of networks by transmission medium.
- The communication protocols.
- The Internet and the Internet of Things
- The services of the Internet: Web, e-mail, DNS.
Internet and the Web
- Difference between the Internet and the Web
- The World Wide Web
- Static Web and dynamic Web
- Web 1.0, 2.0, 3.0, 4.0
- The Social Web
The problem of information access
- Introduction to the problem.
- The search engines
- Recommender systems
- The access to information on social media
- Analysis of social media data.
The representation of data in the binary system
- The numbering systems
- The decimal system
- The binary system
- Conversion of numbers to different bases
- The representation in modulus and sign
- The representation in two's complement
- Boolean algebra and electronic circuits.
The encoding of text, images and sound
- The representation of text
- The characters
- The ASCII and Unicode representation systems
- The representation of images
- Raster graphics
- Vector graphics
- The representation of sound
- Audio sampling
- Audio quality in digital representation.
Databases and the relational model
- Data and information
- Information systems
- The information system
- Databases
- Database management systems
- The relational model
- Relationships between tables (one-to-one, one-to-many, many-to-many).
The SQL language
- Definitions of schemas and instances in SQL.
- Syntax and elementary domains.
- Interrelational constraints
- Projection and selection
- Data selection from multiple tables.
Introduction to algorithms and programming
- What is an algorithm
- The properties of algorithms
- Flowcharts (conditional instructions and loops).
- The pseudocode
- The programming languages
- The programming paradigms
The procedural languages
- Variables and constants
- The assignment statements
- The data types (elementary and derived).
- The functions
- The control structures (conditional and iterative).
Introduction to Python - Part One
- Recapitulation of the fundamental concepts of procedural programming
- Example algorithm (flowchart, pseudocode and Python code)
- Description of the Python programming environment
- Basic Usage
- Variables in Python
Introduction to Python - Part Two
- Scalar values, lists and data structures in Python
- Accessing the elements of data structures
- Operations on variables and data structures
- Operators
- Control structures (if-else, for, while).
During the Exercises, the use of Excel and its main functions will also be demonstrated in practice, and the use of Python for defining algorithms for data processing and analysis will be explored.
Prerequisites
None
Teaching form
Lectures (Dr. Marco Viviani)
Laboratory exercices (different teaching shifts)
The course is delivered in Italian
Textbook and teaching resource
Suggested textbooks (in Italian language)
Fundamentals of computer science:
- Informatica. Una panoramica generale J. Glenn Brookshear Pearson
- Informatica arte e mestiere. MacGrawHill
Python:
- Introduzione a Python. Per l'informatica e la data science. Ediz. MyLab. Con Contenuto digitale per accesso on line Copertina flessibile, di Paul J. Deitel (Autore), Harvey M. Deitel (Autore), Pietro Codara (a cura di), Carlo Mereghetti (a cura di), Diego Valota (Traduttore).
Online resources suggested in class
Semester
March - June 2020
Assessment method
Computer test (in a laboratory or online): theoretical questions + practical exercises
- 6 questions with multiple choice for the extensive control of theoretical and theoretical-practical concepts illustrated in class
- 1 open questions for intensive preparation control on the exam program (theoretical aspects)
- 3 exercises for verifying the learning of using Excel, the knowledge of the SQL language, the fundamental concepts of programming using Python.
Oral test (optional)
Office hours
By appointment