An Introduction to Mathematical Computer Science explores an alternative approach to teaching of computer science, an approach that is independent of technology, using a methodology that simultaneously deals with both theory and practice.
The ‘mapcode’ formalism introduced here is based on classical ideas, but this book is the first to explore the possibilities of the formalism extensively to evolve the subject as an area of mathematics. Using only the algebra of sets and maps and no advanced mathematics or formal logic, the book suggests a unified point of view for understanding the structure of finite automata, Turing machines, von Neumann machines, and neural systems. It also introduces a 10-step design process for devising algorithms and verifying their termination and correctness. Recursion and sorting algorithms are examined. Data types and Boolean function theory are explained from a novel point of view. A chapter on topological algorithms relates the mapcode formalism to some tools of analysis and numerical analysis. The book, with its several illustrative diagrams and exercises, will serve as textbook for mathematics and computer science students at both undergraduate and graduate levels.