Torna ai corsi
AI015 Professional

Introduzione alla programmazione in Julia

Una guida completa al linguaggio di programmazione Julia, un linguaggio dinamico generale ad alte prestazioni particolarmente adatto per calcoli scientifici e numerici. Il corso copre tutto, dalla sintassi di base e dai tipi di dati fino a argomenti avanzati come la metaprogrammazione, i frame di dati, la rete e l'interfacciamento con database.

4.9
30.0h
913 studenti
0 mi piace
Intelligenza Artificiale
Inizia ad imparare

Panoramica del corso

📚 Riepilogo del contenuto

Una guida completa al linguaggio di programmazione Julia, un linguaggio dinamico generico ad alte prestazioni particolarmente adatto per il calcolo scientifico e numerico. Il corso copre tutto, dalla sintassi di base e dai tipi di dati fino a temi avanzati come la metaprogrammazione, i frame di dati, la rete e l'interfaccia con database.

Padroneggia il calcolo scientifico ad alte prestazioni con la velocità del C e la semplicità del Python.

Autore: Tutorials Point (I) Pvt. Ltd.

Ringraziamenti: Copyright 2020 da Tutorials Point (I) Pvt. Ltd. Tutti i contenuti e le immagini sono proprietà di Tutorials Point.

🎯 Obiettivi di apprendimento

  1. Definire il linguaggio di programmazione Julia e identificare le sue caratteristiche principali e il contesto storico.
  2. Distinguere Julia dagli altri linguaggi per il calcolo tecnico in termini di prestazioni e sintassi.
  3. Installare e configurare correttamente l'ambiente Julia e REPL su Linux, Windows e macOS.
  4. Applicare le convenzioni stilistiche di Julia per la nomenclatura delle variabili e utilizzare commenti singoli o multi-linea per la documentazione del codice.
  5. Creare array di diversi tipi e dimensioni usando oggetti intervallo, generatori, comprensioni e funzioni incorporate come zeros() e ones().
  6. Eseguire operazioni avanzate di indicizzazione e mutazione degli array usando logica booleana, la parola chiave end e funzioni con punto esclamativo (es. push!, splice!).
  7. Costruire e manipolare Tuple e Tuple nominate, inclusa la loro applicazione come argomenti opzionali nelle funzioni.
  8. Identificare e gestire i comportamenti di overflow degli interi e gli errori di divisione usando tipi standard e a precisione arbitraria.
  9. Analizzare le rappresentazioni in virgola mobile, inclusi zeri con segno, valori speciali (NaN, Inf) e l'epsilon macchina.
  10. Eseguire e combinare operatori aritmetici, bit a bit e di aggiornamento per manipolare i tipi di dati.

🔹 Lezione 1: Introduzione a Julia e impostazione dell’ambiente

Panoramica: Questa lezione introduce Julia, un linguaggio di programmazione dinamico ad alto livello e ad alte prestazioni progettato specificamente per il calcolo scientifico e l'analisi dei dati. Gli studenti esploreranno la sua storia, le caratteristiche e come si confronta con linguaggi consolidati come Python, R e MATLAB. La lezione fornisce una guida completa all'impostazione dell'ambiente Julia su diverse piattaforme operative e alla gestione del suo potente ecosistema di pacchetti.

Risultati dell'apprendimento:

  • Definire il linguaggio di programmazione Julia e identificare le sue caratteristiche fondamentali e il contesto storico.
  • Distinguere Julia dagli altri linguaggi per il calcolo tecnico in termini di prestazioni e sintassi.
  • Installare e configurare correttamente l'ambiente Julia e REPL su Linux, Windows e macOS.

🔹 Lezione 2: Sintassi di base e manipolazione degli array

Panoramica: Questa lezione introduce la sintassi fondamentale di Julia, con particolare attenzione alle convenzioni per la nomenclatura delle variabili, ai commenti e al robusto trattamento delle strutture Array. Gli studenti passeranno da assegnazioni semplici delle variabili a manipolazioni complesse degli array, incluse la creazione di array multidimensionali, le comprensioni e le operazioni mutative essenziali per il calcolo scientifico ad alte prestazioni.

Risultati dell'apprendimento:

  • Applicare le convenzioni stilistiche di Julia per la nomenclatura delle variabili e utilizzare commenti singoli o multi-linea per la documentazione del codice.
  • Creare array di diversi tipi e dimensioni usando oggetti intervallo, generatori, comprensioni e funzioni incorporate come zeros() e ones().
  • Eseguire operazioni avanzate di indicizzazione e mutazione degli array usando logica booleana, la parola chiave end e funzioni con punto esclamativo (es. push!, splice!).

🔹 Lezione 3: Tuple e tipi numerici

Panoramica: Questa lezione offre una panoramica tecnica approfondita delle strutture dati fondamentali e dei tipi numerici di Julia, con particolare attenzione alle tuple immutabili e alle sfumature dell'aritmetica del computer. Gli studenti esploreranno la costruzione e la manipolazione delle tuple nominate, il comportamento degli interi a precisione fissa (compreso l'overflow), e le caratteristiche legate alla precisione dei numeri in virgola mobile, razionali e complessi. Questa base è cruciale per applicazioni di calcolo scientifico ad alte prestazioni e analisi dei dati.

Risultati dell'apprendimento:

  • Creare e manipolare Tuple e Tuple nominate, inclusa la loro applicazione come argomenti opzionali nelle funzioni.
  • Identificare e gestire i comportamenti di overflow degli interi e gli errori di divisione usando tipi standard e a precisione arbitraria.
  • Analizzare le rappresentazioni in virgola mobile, incluse zeri con segno, valori speciali (NaN, Inf) e l'epsilon macchina.

🔹 Lezione 4: Operatori e funzioni matematiche

Panoramica: Questa lezione offre un'approfondita esplorazione del sistema di operatori di Julia e della sua estesa libreria di funzioni matematiche. Gli studenti passeranno dalle operazioni aritmetiche e bitwise di base alle avanzate operazioni vettoriali "dot" e complesse espressioni concatenate. Il contenuto illustra inoltre strumenti numerici essenziali per il calcolo scientifico, tra cui arrotondamento, divisione specializzata, funzioni logaritmiche e trigonometriche.

Risultati dell'apprendimento:

  • Eseguire e combinare operatori aritmetici, bit a bit e di aggiornamento per manipolare i tipi di dati.
  • Applicare la sintassi vettoriale "dot" per eseguire operazioni elemento per elemento sugli array.
  • Analizzare il comportamento di valutazione e le regole di precedenza delle espressioni composte e complesse.

🔹 Lezione 5: Stringhe e programmazione funzionale

Panoramica: Questa lezione affronta i due pilastri della gestione dei dati in Julia: manipolazione delle stringhe e programmazione funzionale. Gli studenti esploreranno il robusto supporto di Julia per stringhe Unicode/UTF-8, l'indicizzazione avanzata e i letterali non standard, insieme al potere fondante del paradigma funzionale di Julia, incluso il dispatch multiplo, le funzioni anonime e le funzioni di ordine superiore come map e filter.

Risultati dell'apprendimento:

  • Manipolare e cercare stringhe usando l'indicizzazione per intervallo, l'interpolazione e le espressioni regolari.
  • Creare funzioni versatili utilizzando argomenti opzionali, argomenti nominati e ricorsione.
  • Applicare schemi di programmazione funzionale (Map/Filter) e sfruttare il Dispatch Multiplo per selezionare metodi specializzati.

🔹 Lezione 6: Controllo del flusso e raccolte chiave-valore

Panoramica: Questa lezione copre le strutture essenziali per controllare l'esecuzione del programma e gestire raccolte di dati complesse in Julia. Gli studenti impareranno a implementare logica condizionale tramite espressioni ternarie, switch booleani e blocchi if-else standard, oltre a tecniche di iterazione usando cicli for e while. Inoltre, la lezione esplora strutture dati di alto livello come Dizionari per il mapping chiave-valore e Set per lo stoccaggio di elementi univoci, concentrandosi sulla loro creazione, manipolazione e operazioni teoriche degli insiemi.

Risultati dell'apprendimento:

  • Implementare una logica condizionale concisa usando operatori ternari e espressioni booleane di cortocircuito.
  • Creare cicli di iterazione robusti e gestire errori in tempo di esecuzione usando eccezioni e blocchi do.
  • Gestire dati associativi con Dizionari, inclusa la ricerca, la fusione e l'analisi della frequenza.

🔹 Lezione 7: Date, I/O e metaprogrammazione

Panoramica: Questa lezione esplora tre pilastri avanzati del linguaggio di programmazione Julia: la gestione dei dati temporali tramite il modulo Dates, le operazioni robuste di input/output (I/O) sui file e il potere della metaprogrammazione. Gli studenti impareranno a manipolare date e orari, navigare e interagire con il sistema di file, e comprendere come il codice Julia viene analizzato, rappresentato come un Albero Sintattico Astratto (AST) e manipolato tramite macro.

Risultati dell'apprendimento:

  • Eseguire calcoli complessi con date, formattazione e arrotondamento, comprendendo la gerarchia dei tipi sottostanti agli oggetti temporali.
  • Implementare tecniche efficienti di gestione dei file, incluse letture basate su flussi, estrazione di metadati e modelli sicuri di chiusura dei file.
  • Analizzare la struttura delle espressioni Julia e creare macro per automatizzare la generazione e l'esecuzione del codice.

🔹 Lezione 8: Visualizzazione dei dati e DataFrames

Panoramica: Questa lezione esplora la doppia necessità di analisi visiva e statistica in Julia, partendo da tracciati funzionali e visualizzazioni testuali (UnicodePlots). Passa quindi alla gestione di dataset complessi tramite l'ecosistema DataFrames.jl, sottolineando il ruolo fondamentale della pulizia dei dati, della modellazione di regressione e delle modifiche strutturali per preparare i dati alla ricerca scientifica.

Risultati dell'apprendimento:

  • Generare tracciati funzionali e testuali usando Plots.jl, UnicodePlots e VegaLite.
  • Analizzare il rapporto tra statistiche descrittive e visualizzazione dei dati usando il Quartetto di Anscombe e modelli di regressione lineare.
  • Eseguire manipolazioni avanzate di DataFrame, incluse la gestione dei valori mancanti, modifiche strutturali (aggiunta/rimozione di righe e colonne) e filtraggio condizionato.

🔹 Lezione 9: Calcolo scientifico: dataset, moduli e grafica

Panoramica: Questa lezione copre l'ecosistema essenziale di Julia per il calcolo scientifico, focalizzandosi su tre pilastri: gestione dei dati (CSV, HDF5, XML e RDatasets), analisi statistica (statistiche descrittive e campionamento) e la struttura modulare dei programmi Julia. Infine, esplora motori di visualizzazione dei dati molto diversi, che vanno dalla rappresentazione testuale di basso livello a implementazioni avanzate "Grammar of Graphics".

Risultati dell'apprendimento:

  • Eseguire I/O e manipolazione dei dati: Importare/esportare file CSV e HDF5, analizzare XML e eseguire sottoinsiemi e ordinamenti su DataFrame.
  • Eseguire analisi statistica: Calcolare statistiche descrittive semplici e pesate (media, varianza, deviazione standard) e applicare diverse tecniche di campionamento.
  • Gestire la struttura del codice: Installare e usare moduli/pacchetti efficacemente, comprendendo la struttura interna della directory di un pacchetto Julia.

🔹 Lezione 10: Reti e interfaccia con database

Panoramica: Questa lezione esplora le capacità del linguaggio di programmazione Julia nell'instaurare comunicazioni di rete e interfacciarsi con sistemi di database diversi. Copre la comunicazione di rete a basso livello tramite TCP e Pipe nome, servizi web di alto livello (Email, Twitter, WebSockets) e l'integrazione con ambienti cloud come AWS e Google Cloud. Inoltre, dettaglia connessioni robuste con database utilizzando MySQL, JDBC, ODBC, SQLite e PostgreSQL, enfatizzando l'esecuzione delle query e la gestione dei metadati.

Risultati dell'apprendimento:

  • Configurare e distribuire servizi di rete usando TCP, Pipe nome e WebSockets.
  • Integrare applicazioni Julia con ambienti cloud (AWS/Google Cloud) e API sociali/messaggistiche (Twitter/Email).
  • Implementare soluzioni database usando API dirette (MySQL, SQLite) e astrazioni middleware (JDBC, ODBC, DBI).