Skip to content

ulivs-app/python-tutorial

Repository files navigation

Bootcamp Python — Notebook didattici (Giorni 1-3)

Tre Jupyter notebook in italiano per imparare Python direttamente nel browser, senza installare nulla. Sono il materiale dei primi tre giorni di un bootcamp rivolto a studenti delle scuole superiori, pensato per chi conosce già un po' di programmazione (C, Java) ma è alle prime armi con Python.

Link al sito

Pagina di benvenuto (consigliata per gli studenti): https://ulivs-app.github.io/python-tutorial/lab/index.html?path=README.md

Apri la home di JupyterLite: https://ulivs-app.github.io/python-tutorial/

(disponibili dopo il primo deploy di GitHub Pages)

Cliccando il primo link si apre JupyterLite con la guida di benvenuto già renderizzata (i file .md si aprono in anteprima grazie a overrides.json). Gli esercizi girano nel browser tramite Pyodide (Python compilato in WebAssembly).

I tre notebook

# Notebook Argomenti
1 01_strutture_dati_e_cicli.ipynb if/for/while, scope, tuple, liste, dizionari, list comprehension
2 02_funzioni_e_librerie.ipynb funzioni, parametri default, *args, ricorsione, math/random/json
3 03_classi.ipynb classi, __init__, metodi, @staticmethod/@classmethod/@property, ereditarietà

Ogni notebook contiene 10 esercizi con verifica automatica: lo studente scrive la soluzione e ottiene subito un feedback ([OK], [X] o [!]).

Come funziona

Tutto gira nel browser dello studente, senza server e senza installazioni: il codice Python viene eseguito da Pyodide (WebAssembly). Basta una connessione per caricare la pagina la prima volta. Niente account, niente setup.

GitHub Pages serve un sito statico generato da JupyterLite. Ad ogni push sul branch main, GitHub Actions ricostruisce e ripubblica il sito automaticamente.

Per gli studenti

Apri il link al sito qui sopra, scegli il notebook del giorno e segui le istruzioni nella pagina di benvenuto. Non serve installare niente.

Per i docenti

Guida operativa completa (rigenerare, verificare, pubblicare): docs/MANUTENZIONE.md.

Dove stanno le soluzioni. La cartella solutions/ contiene le versioni complete (*_SOL.ipynb) con tutte le funzioni già risolte. Questa cartella non viene pubblicata: il build di JupyterLite include solo content/, e jupyter_lite_config.json la esclude esplicitamente come ulteriore garanzia. Gli studenti non possono vederla dal sito.

Come modificare i notebook. La fonte di verità sono i notebook in source/ (source/01_*.ipynb, ecc.): li apri in JupyterLab, li esegui e verifichi che i test passino. Per marcare la parte di soluzione che lo studente non deve vedere, avvolgila tra i marcatori (convenzione nbgrader):

def funzione(...):
    ### BEGIN SOLUTION
    ...codice della soluzione...
    ### END SOLUTION

Lo script tools/build_notebooks.py legge source/ e genera automaticamente le due versioni: content/ (studente — i blocchi soluzione diventano pass, i test sono collassati) e solutions/ (docente — soluzione visibile). Eventuali suggerimenti: scrivi un commento # <- ... prima di ### BEGIN SOLUTION (resta visibile allo studente). Per un nuovo esercizio servono due celle: la cella con la funzione (marcata) e una cella di TEST la cui prima riga è # [TEST] (non modificare).

uv venv
uv pip install -r requirements.txt nbformat nbclient ipykernel
uv run python tools/build_notebooks.py

Puoi anche editare i .ipynb a mano, ma ricordati di tenere allineate le due versioni (studente e _SOL).

Aspetto e branding. Il sito usa il tema scuro JupyterLab Night, i colori Open Innova (navy #19213c, verde #6bb889) e un banner brandizzato in cima a ogni notebook e alla pagina di benvenuto. Il banner è generato da tools/build_notebooks.py (funzione brand_banner, con il logo incorporato da branding/logo-white.svg). Per cambiare tema, modifica overrides.json → chiave theme (valori validi: "JupyterLab Night", "JupyterLab Dark", "JupyterLab Light"). Il nome dell'app è in jupyter-lite.json (appName). La favicon è branding/favicon.svg: NON sta in content/ (così non compare nel file browser) e viene copiata nella radice del sito da un passo post-build del workflow (cp branding/favicon.svg dist/favicon.svg). Dopo ogni modifica ricorda di ribuildare.

Provare in locale prima di pubblicare.

uv run jupyter lite build --contents content --output-dir dist
python -m http.server -d dist 8000   # poi apri http://localhost:8000

Aggiornare il sito pubblicato. Fai commit e push sul branch main: GitHub Actions ribuilda e ripubblica in pochi minuti.

git add -A && git commit -m "aggiorna esercizi" && git push

Licenza

Materiale a cura di Open Innova S.R.L. (openinnova.it), distribuito con licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0).

Sei libero di riusarlo, modificarlo e ridistribuirlo, anche per fini commerciali, a patto di citare la fonte. Vedi il file LICENSE per i dettagli e per il testo di attribuzione consigliato.

Crediti e licenze di terze parti

Il sito è costruito su strumenti open source, che ringraziamo:

Le note di licenza complete delle dipendenze sono incluse nel sito generato (file third-party-licenses.json) e consultabili dentro l'app dal menu Help → Licenses. Questi strumenti sono solo usati, non ridistribuiti da noi (Pyodide e CPython arrivano dalla CDN): nessun obbligo di attribuzione aggiuntivo, le citazioni qui sopra sono un riconoscimento dovuto.

Setup iniziale di GitHub Pages (una volta sola)

  1. Crea un repository su GitHub e fai push di questo codice.
  2. Vai su Settings → Pages → Source e scegli GitHub Actions.
  3. Attendi il primo build (qualche minuto): l'indirizzo del sito comparirà nella stessa pagina.
  4. Sostituisci i placeholder USERNAME/NOME-REPO in questo README con i valori reali.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors