Skip navigation

Computer Science and Intelligent Systems

  • Page 4 of 12

Hundreds of programming languages are in use today—scripting languages for Internet commerce, user interface programming tools, spreadsheet macros, page format specification languages, and many others. Designing a programming language is a metaprogramming activity that bears certain similarities to programming in a regular language, with clarity and simplicity even more important than in ordinary programming. This comprehensive text uses a simple and concise framework to teach key ideas in programming language design and implementation.

Our growing dependence on increasingly complex computer and software systems necessitates the development of formalisms, techniques, and tools for assessing functional properties of these systems. One such technique that has emerged in the last twenty years is model checking, which systematically (and automatically) checks whether a model of a given system satisfies a desired property such as deadlock freedom, invariants, or request-response properties. This automated technique for verification and debugging has developed into a mature and widely used approach with many applications.

This book provides students with a deep, working understanding of the essential concepts of programming languages. Most of these essentials relate to the semantics, or meaning, of program elements, and the text uses interpreters (short programs that directly analyze an abstract representation of the program text) to express the semantics of many essential language elements in a way that is both clear and executable. The approach is both analytical and hands-on.

Portable Shared Memory Parallel Programming

"I hope that readers will learn to use the full expressibility and power of OpenMP. This book should provide an excellent introduction to beginners, and the performance section should help those with some experience who want to push OpenMP to its limits."
—from the foreword by David J. Kuck, Intel Fellow, Software and Solutions Group, and Director, Parallel and Distributed Solutions, Intel Corporation

Principles of Interaction Programming

Interactive systems and devices, from mobile phones to office copiers, do not fulfill their potential for a wide variety of reasons—not all of them technical. Press On shows that we can design better interactive systems and devices if we draw on sound computer science principles. It uses state machines and graph theory as a powerful and insightful way to analyze and design better interfaces and examines specific designs and creative solutions to design problems.

A Programming Handbook for Visual Designers and Artists

It has been more than twenty years since desktop publishing reinvented design, and it's clear that there is a growing need for designers and artists to learn programming skills to fill the widening gap between their ideas and the capability of their purchased software. This book is an introduction to the concepts of computer programming within the context of the visual arts.

The Robotics Primer offers a broadly accessible introduction to robotics for students at pre-university and university levels, robot hobbyists, and anyone interested in this burgeoning field. The text takes the reader from the most basic concepts (including perception and movement) to the most novel and sophisticated applications and topics (humanoids, shape-shifting robots, space robotics), with an emphasis on what it takes to create autonomous intelligent robot behavior.

Activity Theory and Interaction Design

Activity theory holds that the human mind is the product of our interaction with people and artifacts in the context of everyday activity. Acting with Technology makes the case for activity theory as a basis for understanding our relationship with technology. Victor Kaptelinin and Bonnie Nardi describe activity theory's principles, history, relationship to other theoretical approaches, and application to the analysis and design of technologies. The book provides the first systematic entry-level introduction to the major principles of activity theory.

After completing this self-contained course on server-based Internet applications software, students who start with only the knowledge of how to write and debug a computer program will have learned how to build web-based applications on the scale of Amazon.com. Unlike the desktop applications that most students have already learned to build, server-based applications have multiple simultaneous users. This fact, coupled with the unreliability of networks, gives rise to the problems of concurrency and transactions, which students learn to manage by using the relational database system.

A Unified Approach

Evolutionary computation, the use of evolutionary systems as computational processes for solving complex problems, is a tool used by computer scientists and engineers who want to harness the power of evolution to build useful new artifacts, by biologists interested in developing and testing better models of natural evolutionary systems, and by artificial life scientists for designing and implementing new artificial evolutionary worlds. In this clear and comprehensive introduction to the field, Kenneth De Jong presents an integrated view of the state of the art in evolutionary computation.

  • Page 4 of 12