- controllo di versione e fossil
- Installazione python e matlab, ambiente di sviluppo spyder e matlab
- Altri linguaggi ad alto livello: R, Mathematica/Sage, Scala, Julia
- Version control, Git and Fossil
- Documentazione, help, metadati, bug tracking
- Code correctness, replicability and reproducibility (fixing the random seed)
- introduzione a python
- Introduzione a python
- Interfacce di esecuzione: script, MATLAB-like, notebook
- Strutture dati dai base: liste, set, dizionari, queue, deque
- testing e hypothesys
- test: classical test, property test, regression testing
- (https://en.wikipedia.org/wiki/Therac-25)
- (https://www.fastcompany.com/28121/they-write-right-stuff)
- The pain of testing random processes
- debugging?
- vettorizzazione e numpy
- programmazione vettoriale (numpy e matlab)
- Problemi del calcolo numerico? Overflow, underflow, precision loss, testing per uguaglianza/similitudine
- Scipy
- Librerie pre-esistenti (scipy, etc...), non reinventare la ruota
- Visualizzazione grafica
- Dataframe e Pandas
- IO di dati, caricare CSV, excel, scaricare da internet e simili
- dataframes, tidy data, split-apply-combine (grouping), join, pivot e melt
- data pipeline e snakemake
- life cycle of data (raw, source, usage, temporary)
- file formats: hdf5, csv, json, xml, yaml, ini, etc..
- Data testing: hashing functions, sanity controls
- DRY KISS (Don’t Repeat Yourself, Keep It Simple Stupid), remove redundancy from code and data
- pipeline e make, idempotenza, DAG (directed acyclic graphs)
- profiling
- line_profile
- memory_profile
- intro ai big data
- intro to big data: out-of-core algorithm (chunking), sparse matrices, memmapping
- Semafori, Resource locks (lock files), operazioni atomiche, concurrency and parallel execution
Argomenti da inserire?
- regex
- comandi di bash
- debugging
- iteratori e generatori
- programmazione funzionale (iteratori, map-filter-reduce)
Argomenti che non tratteremo
- Interfacciamento con database (SQL)
- Interfaccia con linguaggi di basso livello (Cython)
- Interfaccia con altri linguaggi di alto livello ( R )
- Algebra simbolica (sympy)
- Pacchetti statistici/machine learning
- Design GUI interface
- Esplorazione dati, glueviz
- Generazione automatica di report (docutils, reportlab) e literate programming
- Bash e librerie per interfacciarcisi
- Micro web framework per il reporting (flask, bottle, etc...)