Computational thinking is a mental process for solving problems through an ordered series of precise instructions. This ordered series is an “algorithm”, an ancient term of Arabic origin which has become so fashionable that plenty of people use it without really knowing what it means. Whenever we use a smartphone to call someone, take a picture, listen to music or access the internet, we set off – in a completely imperceptible way – an extremely complicated “computation” allowing us to use sounds, images and character sequences. Computation plays an essential role in the modern world and has become a general activity dealing with all sorts of data. The book introduces the reader to computational thinking by addressing and solving increasingly complex problems. The author describes some of its most important applications, from managing big data to text compression, to the operation of search engines.
Paolo Ferragina teaches Algorithms at the University of Pisa and also teaches at Pisa’s Scuola Normale Superiore.
Fabrizio Luccio has taught at the Polytechnic University of Milan, the MIT in Boston and other American universities and is now professor emeritus of Computer Science at the University of Pisa.