Engineering a Compiler


Keith D. Cooper - 2003
    No longer is execution speed the sole criterion for judging compiled code. Today, code might be judged on how small it is, how much power it consumes, how well it compresses, or how many page faults it generates. In this evolving environment, the task of building a successful compiler relies upon the compiler writer's ability to balance and blend algorithms, engineering insights, and careful planning. Today's compiler writer must choose a path through a design space that is filled with diverse alternatives, each with distinct costs, advantages, and complexities.Engineering a Compiler explores this design space by presenting some of the ways these problems have been solved, and the constraints that made each of those solutions attractive. By understanding the parameters of the problem and their impact on compiler design, the authors hope to convey both the depth of the problems and the breadth of possible solutions. Their goal is to cover a broad enough selection of material to show readers that real tradeoffs exist, and that the impact of those choices can be both subtle and far-reaching.Authors Keith Cooper and Linda Torczon convey both the art and the science of compiler construction and show best practice algorithms for the major passes of a compiler. Their text re-balances the curriculum for an introductory course in compiler construction to reflect the issues that arise in current practice.

The Art of Doing Science and Engineering: Learning to Learn


Richard Hamming - 1996
    By presenting actual experiences and analyzing them as they are described, the author conveys the developmental thought processes employed and shows a style of thinking that leads to successful results is something that can be learned. Along with spectacular successes, the author also conveys how failures contributed to shaping the thought processes. Provides the reader with a style of thinking that will enhance a person's ability to function as a problem-solver of complex technical issues. Consists of a collection of stories about the author's participation in significant discoveries, relating how those discoveries came about and, most importantly, provides analysis about the thought processes and reasoning that took place as the author and his associates progressed through engineering problems.

The New Media Reader [With CDROM]


Noah Wardrip-Fruin - 2003
    General introductions by Janet Murray and Lev Manovich, along with short introductions to each of the texts, place the works in their historical context and explain their significance. The texts were originally published between World War II--when digital computing, cybernetic feedback, and early notions of hypertext and the Internet first appeared--and the emergence of the World Wide Web--when they entered the mainstream of public life.The texts are by computer scientists, artists, architects, literary writers, interface designers, cultural critics, and individuals working across disciplines. The contributors include (chronologically) Jorge Luis Borges, Vannevar Bush, Alan Turing, Ivan Sutherland, William S. Burroughs, Ted Nelson, Italo Calvino, Marshall McLuhan, Billy Kl?Jean Baudrillard, Nicholas Negroponte, Alan Kay, Bill Viola, Sherry Turkle, Richard Stallman, Brenda Laurel, Langdon Winner, Robert Coover, and Tim Berners-Lee. The CD accompanying the book contains examples of early games, digital art, independent literary efforts, software created at universities, and home-computer commercial software. Also on the CD is digitized video, documenting new media programs and artwork for which no operational version exists. One example is a video record of Douglas Engelbart's first presentation of the mouse, word processor, hyperlink, computer-supported cooperative work, video conferencing, and the dividing up of the screen we now call non-overlapping windows; another is documentation of Lynn Hershman's Lorna, the first interactive video art installation.

Things That Make Us Smart: Defending Human Attributes In The Age Of The Machine


Donald A. Norman - 1993
    Norman explores the complex interaction between human thought and the technology it creates, arguing for the development of machines that fit our minds, rather than minds that must conform to the machine.Humans have always worked with objects to extend our cognitive powers, from counting on our fingers to designing massive supercomputers. But advanced technology does more than merely assist with thought and memory—the machines we create begin to shape how we think and, at times, even what we value. Norman, in exploring this complex relationship between humans and machines, gives us the first steps towards demanding a person-centered redesign of the machines that surround our lives.

In Our Own Image: Savior or Destroyer? The History and Future of Artificial Intelligence


George Zarkadakis - 2016
    He traces AI's origins in ancient myth, through literary classics like Frankenstein, to today's sci-fi blockbusters, arguing that a fascination with AI is hardwired into the human psyche. He explains AI's history, technology, and potential; its manifestations in intelligent machines; its connections to neurology and consciousness, as well as—perhaps most tellingly—what AI reveals about us as human beings.In Our Own Image argues that we are on the brink of a fourth industrial revolution—poised to enter the age of Artificial Intelligence as science fiction becomes science fact. Ultimately, Zarkadakis observes, the fate of AI has profound implications for the future of science and humanity itself.

Absolute Beginner's Guide to C


Greg Perry - 1993
    This bestseller talks to readers at their level, explaining every aspect of how to get started and learn the C language quickly. Readers also find out where to learn more about C. This book includes tear-out reference card of C functions and statements, a hierarchy chart, and other valuable information. It uses special icons, notes, clues, warnings, and rewards to make understanding easier. And the clear and friendly style presumes no programming knowledge.

The Little Elixir & OTP Guidebook


Benjamin Tan Wei Hao - 2015
    It combines the productivity and expressivity of Ruby with the concurrency and fault-tolerance of Erlang. Elixir makes full use of Erlang's powerful OTP library, which many developers consider the source of Erlang's greatness, so you can have mature, professional-quality functionality right out of the gate. Elixir's support for functional programming makes it a great choice for highly distributed event-driven applications like IoT systems.The Little Elixir & OTP Guidebook gets you started programming applications with Elixir and OTP. You begin with a quick overview of the Elixir language syntax, along with just enough functional programming to use it effectively. Then, you'll dive straight into OTP and learn how it helps you build scalable, fault-tolerant and distributed applications through several fun examples. Come rediscover the joy of programming with Elixir and remember how it feels like to be a beginner again.

Computer Networks


Andrew S. Tanenbaum - 1981
    In this revision, the author takes a structured approach to explaining how networks function.

The Cartoon Guide to the Computer


Larry Gonick - 1983
    Illustrated with cartoons throughout.

Black Hat Python: Python Programming for Hackers and Pentesters


Justin Seitz - 2014
    But just how does the magic happen?In Black Hat Python, the latest from Justin Seitz (author of the best-selling Gray Hat Python), you'll explore the darker side of Python's capabilities writing network sniffers, manipulating packets, infecting virtual machines, creating stealthy trojans, and more. You'll learn how to:Create a trojan command-and-control using GitHubDetect sandboxing and automate common malware tasks, like keylogging and screenshottingEscalate Windows privileges with creative process controlUse offensive memory forensics tricks to retrieve password hashes and inject shellcode into a virtual machineExtend the popular Burp Suite web-hacking toolAbuse Windows COM automation to perform a man-in-the-browser attackExfiltrate data from a network most sneakilyInsider techniques and creative challenges throughout show you how to extend the hacks and how to write your own exploits.When it comes to offensive security, your ability to create powerful tools on the fly is indispensable. Learn how in Black Hat Python."

Natural Language Processing with Python


Steven Bird - 2009
    With it, you'll learn how to write Python programs that work with large collections of unstructured text. You'll access richly annotated datasets using a comprehensive range of linguistic data structures, and you'll understand the main algorithms for analyzing the content and structure of written communication.Packed with examples and exercises, Natural Language Processing with Python will help you: Extract information from unstructured text, either to guess the topic or identify "named entities" Analyze linguistic structure in text, including parsing and semantic analysis Access popular linguistic databases, including WordNet and treebanks Integrate techniques drawn from fields as diverse as linguistics and artificial intelligenceThis book will help you gain practical skills in natural language processing using the Python programming language and the Natural Language Toolkit (NLTK) open source library. If you're interested in developing web applications, analyzing multilingual news sources, or documenting endangered languages -- or if you're simply curious to have a programmer's perspective on how human language works -- you'll find Natural Language Processing with Python both fascinating and immensely useful.

LATEX: A Document Preparation System: User's Guide and Reference Manual


Leslie Lamport - 1985
    The new edition features additional styles and functions, improved font handling, and enhanced graphics capabilities. Other parts of the book have been revised to reflect user comments and suggestions. Selected sections have been rewritten to explain challenging concepts or functions, and the descriptions of both MakeIndex and BibTEX have been updated. New LATEX users will want to start with this book, and current users, particularly as they upgrade to the LATEX2e software, will be eager to obtain the most up-to-date version of its associated manual. Features Revised version of the authoritative user's guide and reference manual for the LATEX computer typesetting system. Features the new standard software release - LATEX2e. Sections rewritten to explain difficult concepts or functions.