O documento apresenta 6 exercícios sobre programação concorrente e distribuída. O primeiro pede para implementar um programa produtor-consumidor com threads para verificar números primos. O segundo modifica isso para leitores e escritores. O terceiro pede um algoritmo para o problema do barbeiro dorminhoco usando semáforos. O quarto resolve o mesmo problema com monitores. O quinto implementa quicksort concorrente com decomposição recursiva. O sexto busca números primos em lista aleatória usando mapeamento dinâmico mestre-escravo.