Questo testo raccoglie il materiale didattico preparato per il corso di Tecniche di Programmazione delle lauree di Ingegneria Informatica, Gestionale ed Automatica della Facoltà di Ingegneria dell'Università degli Studi di Roma "La Sapienza". L'obiettivo del corso è di insegnare le caratteristiche del linguaggio di programmazione che richiedono una comprensione approfondita del modello di esecuzione dei programmi, fra cui ricorsione e strutture collegate. Vengono quindi introdotte alcune tecniche di programmazione che richiedono l'uso di strutture dati quali: liste collegate, pile, code, insiemi, alberi. Al termine del corso lo studente è in grado di scrivere programmi in Java che comportano l'uso delle tecniche di programmazione e delle strutture dati introdotte. L'obiettivo del testo è di evidenziare i concetti della programmazione, fornendo un complemento ad un manuale di programmazione in Java nella trattazione sistematica ed approfondita di tali concetti. L'acquisizione dei contenuti ed, in particolare, della capacità di programmazione, richiede l'uso del calcolatore.