Questo repository contiene appunti e materiali di studio relativi al corso di Encoding & Encryption tenuto dal Prof. A. De Luca presso l'Università degli Studi Federico II di Napoli nell'Anno Accademico 2025/2026.
Il corso affronta gli aspetti fondamentali di codifica e crittografia, con particolare attenzione a:
- Teoria dell'Informazione: Concetti di entropia, ridondanza e compressione dei dati.
- Algoritmi di Codifica: Codici di Huffman, codici di Shannon-Fano, codici di blocco e codici convoluzionali.
- Codici di Correzione degli Errori: Codici di Hamming, codici BCH.
- Crittografia Asimmetrica: Algoritmi di cifratura come RSA, ECC e Diffie-Hellman.
Questi appunti sono destinati a supportare gli studenti nel loro percorso di apprendimento e a fornire una risorsa di riferimento per gli argomenti discussi durante il corso, ma non sostituiscono in alcun modo il materiale ufficiale e le lezioni dei docenti.
Questo documento è prodotto da studenti, per studenti, e potrebbe contenere errori o imprecisioni. Feedback e correzioni sono ben accetti e incentivati, e possono essere inviati tramite pull request o issue in questa repository.
This project follows the all-contributors specification. Contributions of any kind welcome!
Per compilare questo documento è necessario utilizzare il template LaTeX presente in questa repository.
Dopo il clone del repository, è necessario inizializzare i submodule per ottenere il template:
git submodule update --init --recursiveUna volta configurato l'ambiente, compilare il documento principale:
pdflatex main.tex
bibtex main
pdflatex main.tex
pdflatex main.texOppure utilizzare latexmk per la compilazione automatica:
latexmk -pdf main.texE_E_Notes/
├── main.tex # File principale
├── template/ # Template LaTeX (submodule)
├── _files/ # Risorse grafiche
├── _chapters/ # Capitoli del documento
│ ├── 0_intro.tex
│ ├── 1_introduction.tex
│ └── ...
└── _build/ # File di build (ignorati da git)Contributi, correzioni e miglioramenti sono benvenuti. Per contribuire:
- Fare fork della repository
- Creare un branch per le modifiche (
git checkout -b feature/miglioramento) - Committare le modifiche (
git commit -am 'Descrizione modifiche') - Push del branch (
git push origin feature/miglioramento) - Aprire una Pull Request
Per segnalare errori o problemi, aprire una issue dettagliando il problema riscontrato.
Per mantenere una cronologia chiara e leggibile dei commit e delle modifiche, si rimanda alla convenzione dei commit di tipo Conventional Commits, che prevede l'uso di prefissi standardizzati per indicare la natura delle modifiche. Tali convenzioni sono sviluppate nel contesto dello sviluppo software, ma possono essere adattate efficacemente anche per la gestione di documenti e materiali didattici come segue:
feat: Aggiunta di nuovi contenuti o sezioni al documento.fix: Correzione di errori o imprecisioni nei contenuti esistenti.docs: Modifiche alla documentazione, come questo README, senza alterare i contenuti principali.style: Modifiche di formattazione, layout o stile del documento senza alterare il contenuto.refactor: Ristrutturazione del documento senza aggiungere o rimuovere contenuti, ad esempio riorganizzazione dei capitoli o miglioramento della chiarezza.test: Aggiunta o modifica di esempi, esercizi o casi di studio all'interno del documento.chore: Modifiche di manutenzione, come aggiornamenti di dipendenze o configurazioni di build, senza alterare i contenuti del documento.ci: Modifiche relative alla configurazione del Continuous Integration (CI) per la compilazione automatica del documento.
Questo materiale è fornito a scopo didattico ed è rilasciato sotto licenza MIT. Consultare il file LICENSE per i dettagli completi.
Nota Bene: Gli appunti sono in continuo aggiornamento durante lo svolgimento del corso.