Writing for Computer Science


Book Description

A complete update to a classic, respected resource Invaluable reference, supplying a comprehensive overview on how to undertake and present research




Ideas That Created the Future


Book Description

Classic papers by thinkers ranging from from Aristotle and Leibniz to Norbert Wiener and Gordon Moore that chart the evolution of computer science. Ideas That Created the Future collects forty-six classic papers in computer science that map the evolution of the field. It covers all aspects of computer science: theory and practice, architectures and algorithms, and logic and software systems, with an emphasis on the period of 1936-1980 but also including important early work. Offering papers by thinkers ranging from Aristotle and Leibniz to Alan Turing and Nobert Wiener, the book documents the discoveries and inventions that created today's digital world. Each paper is accompanied by a brief essay by Harry Lewis, the volume's editor, offering historical and intellectual context.




Computer Engineering for Babies


Book Description

An introduction to computer engineering for babies. Learn basic logic gates with hands on examples of buttons and an output LED.




Structure and Interpretation of Computer Programs


Book Description

A new version of the classic and widely used text adapted for the JavaScript programming language. Since the publication of its first edition in 1984 and its second edition in 1996, Structure and Interpretation of Computer Programs (SICP) has influenced computer science curricula around the world. Widely adopted as a textbook, the book has its origins in a popular entry-level computer science course taught by Harold Abelson and Gerald Jay Sussman at MIT. SICP introduces the reader to central ideas of computation by establishing a series of mental models for computation. Earlier editions used the programming language Scheme in their program examples. This new version of the second edition has been adapted for JavaScript. The first three chapters of SICP cover programming concepts that are common to all modern high-level programming languages. Chapters four and five, which used Scheme to formulate language processors for Scheme, required significant revision. Chapter four offers new material, in particular an introduction to the notion of program parsing. The evaluator and compiler in chapter five introduce a subtle stack discipline to support return statements (a prominent feature of statement-oriented languages) without sacrificing tail recursion. The JavaScript programs included in the book run in any implementation of the language that complies with the ECMAScript 2020 specification, using the JavaScript package sicp provided by the MIT Press website.




The Computer Book


Book Description

An illustrated journey through 250 milestones in computer science, from the ancient abacus to Boolean algebra, GPS, and social media. With 250 illustrated landmark inventions, publications, and events—encompassing everything from ancient record-keeping devices to the latest computing technologies—The Computer Book takes a chronological journey through the history and future of computer science. Two expert authors, with decades of experience working in computer research and innovation, explore topics including: the Sumerian abacus * the first spam message * Morse code * cryptography * early computers * Isaac Asimov’s laws of robotics * UNIX and early programming languages * movies * video games * mainframes * minis and micros * hacking * virtual reality * and more “What a delight! A fast trip through the computing landscape in the company of friendly tour guides who know the history.” —Harry Lewis, Gordon McKay Professor of Computer Science, Harvard University




The Physics of Computing


Book Description

The Physics of Computing gives a foundational view of the physical principles underlying computers. Performance, power, thermal behavior, and reliability are all harder and harder to achieve as transistors shrink to nanometer scales. This book describes the physics of computing at all levels of abstraction from single gates to complete computer systems. It can be used as a course for juniors or seniors in computer engineering and electrical engineering, and can also be used to teach students in other scientific disciplines important concepts in computing. For electrical engineering, the book provides the fundamentals of computing that link core concepts to computing. For computer science, it provides foundations of key challenges such as power consumption, performance, and thermal. The book can also be used as a technical reference by professionals. - Links fundamental physics to the key challenges in computer design, including memory wall, power wall, reliability - Provides all of the background necessary to understand the physical underpinnings of key computing concepts - Covers all the major physical phenomena in computing from transistors to systems, including logic, interconnect, memory, clocking, I/O




Essential Logic for Computer Science


Book Description

An introduction to applying predicate logic to testing and verification of software and digital circuits that focuses on applications rather than theory. Computer scientists use logic for testing and verification of software and digital circuits, but many computer science students study logic only in the context of traditional mathematics, encountering the subject in a few lectures and a handful of problem sets in a discrete math course. This book offers a more substantive and rigorous approach to logic that focuses on applications in computer science. Topics covered include predicate logic, equation-based software, automated testing and theorem proving, and large-scale computation. Formalism is emphasized, and the book employs three formal notations: traditional algebraic formulas of propositional and predicate logic; digital circuit diagrams; and the widely used partially automated theorem prover, ACL2, which provides an accessible introduction to mechanized formalism. For readers who want to see formalization in action, the text presents examples using Proof Pad, a lightweight ACL2 environment. Readers will not become ALC2 experts, but will learn how mechanized logic can benefit software and hardware engineers. In addition, 180 exercises, some of them extremely challenging, offer opportunities for problem solving. There are no prerequisites beyond high school algebra. Programming experience is not required to understand the book's equation-based approach. The book can be used in undergraduate courses in logic for computer science and introduction to computer science and in math courses for computer science students.




Law for Computer Scientists and Other Folk


Book Description

This book introduces law to computer scientists and other folk. Computer scientists develop, protect, and maintain computing systems in the broad sense of that term, whether hardware (a smartphone, a driverless car, a smart energy meter, a laptop, or a server), software (a program, an application programming interface or API, a module, code), or data (captured via cookies, sensors, APIs, or manual input). Computer scientists may be focused on security (e.g. cryptography), or on embedded systems (e.g. the Internet of Things), or on data science (e.g. machine learning). They may be closer to mathematicians or to electrical or electronic engineers, or they may work on the cusp of hardware and software, mathematical proofs and empirical testing. This book conveys the internal logic of legal practice, offering a hands-on introduction to the relevant domains of law, while firmly grounded in legal theory. It bridges the gap between two scientific practices, by presenting a coherent picture of the grammar and vocabulary of law and the rule of law, geared to those with no wish to become lawyers but nevertheless required to consider the salience of legal rights and obligations. Simultaneously, this book will help lawyers to review their own trade. It is a volume on law in an onlife world, presenting a grounded argument of what law does (speech act theory), how it emerged in the context of printed text (philosophy of technology), and how it confronts its new, data-driven environment. Book jacket.




Assessing and Responding to the Growth of Computer Science Undergraduate Enrollments


Book Description

The field of computer science (CS) is currently experiencing a surge in undergraduate degree production and course enrollments, which is straining program resources at many institutions and causing concern among faculty and administrators about how best to respond to the rapidly growing demand. There is also significant interest about what this growth will mean for the future of CS programs, the role of computer science in academic institutions, the field as a whole, and U.S. society more broadly. Assessing and Responding to the Growth of Computer Science Undergraduate Enrollments seeks to provide a better understanding of the current trends in computing enrollments in the context of past trends. It examines drivers of the current enrollment surge, relationships between the surge and current and potential gains in diversity in the field, and the potential impacts of responses to the increased demand for computing in higher education, and it considers the likely effects of those responses on students, faculty, and institutions. This report provides recommendations for what institutions of higher education, government agencies, and the private sector can do to respond to the surge and plan for a strong and sustainable future for the field of CS in general, the health of the institutions of higher education, and the prosperity of the nation.




Computer Science


Book Description

Computer Science: Reflections on the Field, Reflections from the Field provides a concise characterization of key ideas that lie at the core of computer science (CS) research. The book offers a description of CS research recognizing the richness and diversity of the field. It brings together two dozen essays on diverse aspects of CS research, their motivation and results. By describing in accessible form computer science's intellectual character, and by conveying a sense of its vibrancy through a set of examples, the book aims to prepare readers for what the future might hold and help to inspire CS researchers in its creation.