Aquest text presenta una introducció a les teories de la calculabilitat i la complexitat a l'abast d'un estudiant de primer cicle d'una enginyeria informàtica. A partir de la justificació de la necessitat d'un model formal de computació, es presenta el model de màquina de Turing. S'hi introdueixen els conceptes i les eines que calen per classificar problemes segons el grau de dificultat computacional i, en particular, per determinar si un problema és indecidible o si és NP-complet.