The Second Age of Computer Science

Subrata Dasgupta

Published by
Oxford University Press
ISBN 9780190843861
RRP £25.99
Reviewed by Patrick Hill CEng MBCS CITP

10 out of 10

Toward the end of the 1960’s, the Association for Computing Machinery published “Curriculum 68”, a report prepared by leading researchers which documented the state of the computational paradigm. The publication of this report signaled that the field of computer science, young though it was, had reached a level of maturity.

In this book, the author argues that the 1970’s and 80’s brought about such significant changes in and challenges to the computational paradigm as described in Curriculum 68, that the two epochs in the evolution of computer science could reasonably be termed respectively the first and second ages of computing. This book charts the history of the second age of computing.

The author identifies several themes which permeate thinking in the second age. These include the quest for scientificity in computer science endeavours, considering computer science as a human-centred activity in contrast to the information-centric view espoused in Curriculum 68, escaping from strictly sequential computation and a desire to further and possibly unify our understanding of intelligence through computer science. 

The book’s content considers seven key aspects of computing which developed during the second age. The chapters do not form a chronology, but rather should be considered as parallel histories which relate to other aspects and themes through interwoven discourses. The book describes how researchers of the age interacted and how ideas evolved and were adopted across different domains, sometimes long after their origination.

The narrative is too rich and detailed to summarise in a brief review such as this. However, as a flavour of the kind of topics that are discussed, we learn how programming language design influenced by Algol 60 lead to the emergence of object-oriented languages and languages targeted at virtual machines. We see how microprogramming enabled hardware to more closely map to programming languages.

The book considers how researchers formulated ways of modelling data, designing programs, and proving that programs are correct, and how some of the problems of parallel programming could be addressed. A chapter is also devoted to exploring the emergence of artificial intelligence from initial interest in connectionist models and subsequent exploration of rules-based expert systems. The book concludes by reflecting on ways in which the second age demonstrated progress in terms of the themes that defined it.

This is a well researched, well written and enjoyable book. Of necessity, the text considers a variety of disciplines, however, where required, in-line descriptions, simplifications and examples are given so the reader is not required to be fully conversant with details. The chapters are quite long, however they are structured into individually numbered and titled sections and are extensively referenced. The author also helps readers to navigate the text by providing useful references to sections within the book. This book should appeal to anyone with an interest in the history of computing.

Further information: Oxford University Press

August 2018