John V. Guttag

John V. Guttag is the Dugald C. Jackson Professor of Computer Science and Electrical Engineering at MIT.

  • Introduction to Computation and Programming Using Python, Second Edition

    Introduction to Computation and Programming Using Python, Second Edition

    With Application to Understanding Data

    John V. Guttag

    The new edition of an introductory text that teaches students the art of computational problem solving, covering topics ranging from simple algorithms to information visualization.

    This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of data science for using computation to model and interpret data. The book is based on an MIT course (which became the most popular course offered through MIT's OpenCourseWare) and was developed for use not only in a conventional classroom but in in a massive open online course (MOOC). This new edition has been updated for Python 3, reorganized to make it easier to use for courses that cover only a subset of the material, and offers additional material including five new chapters.

    Students are introduced to Python and the basics of programming in the context of such computational concepts and techniques as exhaustive enumeration, bisection search, and efficient approximation algorithms. Although it covers such traditional topics as computational complexity and simple algorithms, the book focuses on a wide range of topics not found in most introductory texts, including information visualization, simulations to model randomness, computational techniques to understand data, and statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems and dynamic programming. This edition offers expanded material on statistics and machine learning and new chapters on Frequentist and Bayesian statistics.

    • Paperback $45.00 £35.00
  • Introduction to Computation and Programming Using Python, Revised And Expanded Edition

    Introduction to Computation and Programming Using Python, Revised And Expanded Edition

    John V. Guttag

    An introductory text that teaches students the art of computational problem solving, covering topics that range from simple algorithms to information visualization.

    This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of “data science” for using computation to model and interpret data. The book is based on an MIT course (which became the most popular course offered through MIT's OpenCourseWare) and was developed for use not only in a conventional classroom but in a massive open online course (or MOOC) offered by the pioneering MIT-Harvard collaboration edX.

    Students are introduced to Python and the basics of programming in the context of such computational concepts and techniques as exhaustive enumeration, bisection search, and efficient approximation algorithms. The book does not require knowledge of mathematics beyond high school algebra, but does assume that readers are comfortable with rigorous thinking and not intimidated by mathematical concepts. Although it covers such traditional topics as computational complexity and simple algorithms, the book focuses on a wide range of topics not found in most introductory texts, including information visualization, simulations to model randomness, computational techniques to understand data, and statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems and dynamic programming.

    Introduction to Computation and Programming Using Python can serve as a stepping-stone to more advanced computer science courses, or as a basic grounding in computational problem solving for students in other disciplines.

    • Paperback $30.00 £24.95
  • Introduction to Computation and Programming Using Python, Spring 2013 Edition

    Introduction to Computation and Programming Using Python, Spring 2013 Edition

    John V. Guttag

    An introductory text that teaches students the art of computational problem solving, covering topics that range from simple algorithms to information visualization.

    This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of “data science” for using computation to model and interpret data. The book is based on an MIT course (which became the most popular course offered through MIT's OpenCourseWare) and was developed for use not only in a conventional classroom but in in a massive open online course (or MOOC) offered by the pioneering MIT–Harvard collaboration edX.

    Students are introduced to Python and the basics of programming in the context of such computational concepts and techniques as exhaustive enumeration, bisection search, and efficient approximation algorithms. The book does not require knowledge of mathematics beyond high school algebra, but does assume that readers are comfortable with rigorous thinking and not intimidated by mathematical concepts. Although it covers such traditional topics as computational complexity and simple algorithms, the book focuses on a wide range of topics not found in most introductory texts, including information visualization, simulations to model randomness, computational techniques to understand data, and statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems and dynamic programming.

    Introduction to Computation and Programming Using Python can serve as a stepping-stone to more advanced computer science courses, or as a basic grounding in computational problem solving for students in other disciplines.

    • Paperback $25.00 £17.95
  • Research Directions in Computer Science, Second Edition

    An MIT Perspective

    John V. Guttag, Albert Meyer, Ronald L. Rivest, and Peter Szolovits

    Research Directions in Computer Science celebrates the twenty-fifth anniversary of the founding of MIT's Project MAC. It covers the full range of ongoing computer science research at the MIT Laboratory for Computer Science and the MIT Artificial Intelligence Laboratory, both of which grew out of the original Project MAC. Leading researchers from the faculties and staffs of the laboratories highlight current research and future activities in multiprocessors and parallel computer architectures, in languages and systems for distributed computing, in intelligent systems (AI) and robotics, in complexity and learning theory, in software methodology, in programming language theory, in software for engineering research and education, and in the relation between computers and economic productivity.

    Contributors Abelson, Arvind, Rodney Brooks, David Clark, Fernando Corbato, William Daily, Michael Dertouzos, John Guttag, Berthold K. P. Horn, Barbara Liskov, Albert Meyer, Nicholas Negroponte, Marc Raibert, Ronald Rivest, Michael Sipser, Gerald Sussman, Peter Szolovits, and John Updike

    • Hardcover $57.00
  • Abstraction and Specification in Program Development

    Barbara Liskov and John V. Guttag

    Abstraction and Specification in Program Development offers professionals in program design and software engineering a methodology that will enable them to construct programs that are reliable and reasonably easy to understand, modify, and maintain. Good programming involves the systematic mastery of complexity, and this book provides the first unified treatment of the techniques of abstraction and specification, which, the authors argue, are the linchpin of any effective approach to programming. They place particular emphasis on the use of data abstraction to produce highly modular programs. The authors focus on the process of decomposing large program projects into independent modules that can be assigned to independent working groups. They discuss methods of decomposition, the kinds of modules that are most useful in this process, and techniques to increase the likelihood that modules produced can in fact be recombined to solve the original programming problem. There are many examples of abstractions throughout the text, and each chapter ends with pertinent references and exercises. Most of the sample implementations in the book are written in CLU, one of a growing number of languages able to support data abstraction. Sufficient material is included, however, to allow the reader to work in Pascal as well. The material in this book was developed by the authors during a decade of teaching undergraduate, graduate, and professional-level courses.

    Abstraction and Specification in Program Development is included in the MIT Electrical Engineering and Computer Science series.

    • Hardcover $57.50