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




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




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.




The Art of Assembly Language, 2nd Edition


Book Description

Assembly is a low-level programming language that's one step above a computer's native machine language. Although assembly language is commonly used for writing device drivers, emulators, and video games, many programmers find its somewhat unfriendly syntax intimidating to learn and use. Since 1996, Randall Hyde's The Art of Assembly Language has provided a comprehensive, plain-English, and patient introduction to 32-bit x86 assembly for non-assembly programmers. Hyde's primary teaching tool, High Level Assembler (or HLA), incorporates many of the features found in high-level languages (like C, C++, and Java) to help you quickly grasp basic assembly concepts. HLA lets you write true low-level code while enjoying the benefits of high-level language programming. As you read The Art of Assembly Language, you'll learn the low-level theory fundamental to computer science and turn that understanding into real, functional code. You'll learn how to: –Edit, compile, and run HLA programs –Declare and use constants, scalar variables, pointers, arrays, structures, unions, and namespaces –Translate arithmetic expressions (integer and floating point) –Convert high-level control structures This much anticipated second edition of The Art of Assembly Language has been updated to reflect recent changes to HLA and to support Linux, Mac OS X, and FreeBSD. Whether you're new to programming or you have experience with high-level languages, The Art of Assembly Language, 2nd Edition is your essential guide to learning this complex, low-level language.




Basic Category Theory for Computer Scientists


Book Description

Basic Category Theory for Computer Scientists provides a straightforward presentation of the basic constructions and terminology of category theory, including limits, functors, natural transformations, adjoints, and cartesian closed categories. Category theory is a branch of pure mathematics that is becoming an increasingly important tool in theoretical computer science, especially in programming language semantics, domain theory, and concurrency, where it is already a standard language of discourse. Assuming a minimum of mathematical preparation, Basic Category Theory for Computer Scientists provides a straightforward presentation of the basic constructions and terminology of category theory, including limits, functors, natural transformations, adjoints, and cartesian closed categories. Four case studies illustrate applications of category theory to programming language design, semantics, and the solution of recursive domain equations. A brief literature survey offers suggestions for further study in more advanced texts. Contents Tutorial • Applications • Further Reading




Foundations of Computer Science


Book Description




The Science of Computing


Book Description

The identity of computing has been fiercely debated throughout its short history. Why is it still so hard to define computing as an academic discipline? Is computing a scientific, mathematical, or engineering discipline? By describing the mathematical, engineering, and scientific traditions of computing, The Science of Computing: Shaping a Discipline presents a rich picture of computing from the viewpoints of the field’s champions. The book helps readers understand the debates about computing as a discipline. It explains the context of computing’s central debates and portrays a broad perspective of the discipline. The book first looks at computing as a formal, theoretical discipline that is in many ways similar to mathematics, yet different in crucial ways. It traces a number of discussions about the theoretical nature of computing from the field’s intellectual origins in mathematical logic to modern views of the role of theory in computing. The book then explores the debates about computing as an engineering discipline, from the central technical innovations to the birth of the modern technical paradigm of computing to computing’s arrival as a new technical profession to software engineering gradually becoming an academic discipline. It presents arguments for and against the view of computing as engineering within the context of software production and analyzes the clash between the theoretical and practical mindsets. The book concludes with the view of computing as a science in its own right—not just as a tool for other sciences. It covers the early identity debates of computing, various views of computing as a science, and some famous characterizations of the discipline. It also addresses the experimental computer science debate, the view of computing as a natural science, and the algorithmization of sciences.




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.




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.




Turing's Vision


Book Description

In 1936, when he was just twenty-four years old, Alan Turing wrote a remarkable paper in which he outlined the theory of computation, laying out the ideas that underlie all modern computers. This groundbreaking and powerful theory now forms the basis of computer science. In Turing's Vision, Chris Bernhardt explains the theory, Turing's most important contribution, for the general reader. Bernhardt argues that the strength of Turing's theory is its simplicity, and that, explained in a straightforward manner, it is eminently understandable by the nonspecialist. As Marvin Minsky writes, "The sheer simplicity of the theory's foundation and extraordinary short path from this foundation to its logical and surprising conclusions give the theory a mathematical beauty that alone guarantees it a permanent place in computer theory." Bernhardt begins with the foundation and systematically builds to the surprising conclusions. He also views Turing's theory in the context of mathematical history, other views of computation (including those of Alonzo Church), Turing's later work, and the birth of the modern computer. In the paper, "On Computable Numbers, with an Application to the Entscheidungsproblem," Turing thinks carefully about how humans perform computation, breaking it down into a sequence of steps, and then constructs theoretical machines capable of performing each step. Turing wanted to show that there were problems that were beyond any computer's ability to solve; in particular, he wanted to find a decision problem that he could prove was undecidable. To explain Turing's ideas, Bernhardt examines three well-known decision problems to explore the concept of undecidability; investigates theoretical computing machines, including Turing machines; explains universal machines; and proves that certain problems are undecidable, including Turing's problem concerning computable numbers.