Most Popular Books

Watch What I Do: Programming by Demonstration

  • Editor: Allen Cypher
  • Format: online HTML
  • Price: free

This book grew out of a workshop on Programming by Demonstration that was held at Apple Computer in March, 1992. The workshop was an opportunity for current researchers to discuss their work with the pioneers in the field. David Smith demonstrated a HyperCard simulation of his Pygmalion system, which was the first system for programming by demonstration and the inspiration for the work that has followed. Henry Lieberman ported his classic Tinker system to the Macintosh so that he could give a live demonstration at the workshop. This was followed by classic videos of the early systems, live demonstrations of the newer systems, and open discussion on topics in the field.

This book is not only intended for individuals who are actively working in the field of programming by demonstration. We have aimed to make this material accessible and interesting to a larger audience: students and researchers with an interest in end user programming, and individuals interested in user interface design and agent-based systems. It is not a book about machine learning or artificial intelligence. Rather, the focus is on ways to create the appropriate human-computer interaction so that end users can gain more control of their personal computers.

The motivation behind Programming by Demonstration is simple and compelling: if a user knows how to perform a task on the computer, that should be sufficient to create a program to perform the task. It should not be necessary to learn a programming language like C or BASIC. Instead, the user should be able to instruct the computer to “Watch what I do”, and the computer should create the program that corresponds to the user’s actions. This book investigates the various issues that arise in trying to make this idea practical. The first section of the book describes 18 computer implementations of Programming by Demonstration, and the second section discusses the problems and opportunities for Programming by Demonstration (PBD) in more general terms.

Chapters include:

I Systems

  • Pygmalion: An Executable Electronic Blackboard
  • Tinker: A Programming by Demonstration System for Beginning Programmers
  • A Predictive Calculator
  • Rehearsal World: Programming by Rehearsal
  • SmallStar: Programming by Demonstration in the Desktop Metaphor
  • Peridot: Creating User Interfaces by Demonstration
  • Metamouse: An Instructible Agent for Programming by Demonstration
  • TELS: Learning Text Editing Tasks from Examples
  • Eager: Programming Repetitive Tasks by Demonstration
  • Garnet: Uses of Demonstrational Techniques
  • The Turvy Experience: Simulating an Instructible Interface
  • Chimera: Example-Based Graphical Editing
  • The Geometer’s Sketchpad: Programming by Geometry
  • Tourmaline: Text Formatting by Demonstration
  • A History-Based Macro by Example System
  • Mondrian: A Teachable Graphical Editor
  • Triggers: Guiding Automation with Pixels to Achieve Data Access
  • The AIDE Project: An Application-Independent Demonstrational Environment

II Components

  • A History of Editable Graphical Histories
  • Graphical Representation and Feedback in a PBD System
  • PBD Invocation Techniques: A Review and Proposal
  • A System-Wide Macro Facility Based on Aggregate Events: A Proposal
  • Making Programming Accessible to Visual Problem Solvers
  • Using Voice Input to Disambiguate Intent

III Perspectives

  • Characterizing PBD Systems
  • Demonstrational Interfaces: A Step Beyond Direct Manipulation
  • Just-in-time Programming

http://www.acypher.com/wwid/

Philip and Alex’s Guide to Web Publishing

  • Author: Philip Greenspun
  • Format: online HTML
  • Price: free

This book is a catalog of the mistakes that I’ve made while building more than 100 Web sites in the last five years. I wrote it in the hopes that others won’t have to repeat those mistakes.
In a society that increasingly rewards specialists and narrowness, Web publishing is one of the few fields left where the generalist is valuable. To make a great site, you need to know a little bit about writing, photography, publishing, Unix system administration, relational database management systems (RDBMS), user interface design, and computer programming. I have thus assumed no specific technical background among my readers and have tried to make the text self-contained.

Chapters include:

  • Envisioning a site that won’t be featured in suck.com
  • So you want to join the world’s grubbiest club: Internet entrepreneurs
  • Scalable systems for on-line communities
  • Static site development
  • Learn to program HTML in 21 minutes
  • Adding images to your site
  • Publicizing your site
  • So you want to run your own server
  • User tracking
  • Sites that are really programs
  • Sites that are really databases
  • Database management systems
  • Interfacing a relational database to the Web
  • ecommerce
  • Case studies
  • Better living through chemistry
  • A future so bright you’ll need to wear sunglasses

http://philip.greenspun.com/panda/index.html

IBM Redbooks

  • Author: IBM
  • Format: PDF
  • Price: free

A searchable list of the most recently published IBM Redbooks.

IBM Redbooks are developed and published by the IBM International Technical Support Organization, ITSO. The ITSO develops and delivers skills, technical know-how, and materials to IBM technical professionals, Business Partners, clients, and the marketplace in general.

The ITSO works with IBM Divisions and Business Partners in the process of developing IBM Redbooks, Redpapers, Technotes, workshops, and other materials. The ITSO is part of the IBM Global Content Services organization within IBM Sales & Distribution.

The ITSO’s value-add information products address product, platform, and solution perspectives. They explore integration, implementation, and operation of realistic client scenarios that include PeopleSoft, Linux, Windows, SAP, Oracle, and others.

IBM Redbooks are the ITSO’s core product. They typically provide positioning and value guidance, installation and implementation experiences, typical solution scenarios, and step-by-step “how-to” guidelines. They often include sample code and other support materials that are also available as downloads.

http://www.redbooks.ibm.com/redbooks.nsf/redbooks/

Object-Oriented System Development

  • Author: Dennis de Champeaux, Douglas Lea, and Penelope Faure
  • Format: online HTML
  • Price: free

This book is intended to help the reader better understand the role of analysis and design in the object-oriented software development process. Experiments to use structured analysis and design as precursors to an object-oriented implementation have failed. The descriptions produced by the structured methods partition reality along the wrong dimensions. Classes are not recognized and inheritance as an abstraction mechanism is not exploited. However, we are fortunate that a multitude of object-oriented analysis and design methods have emerged and are still under development. Core OO notions have found their home place in the analysis phase. Abstraction and specialization via inheritance, originally advertised as key ingredients of OO programming, have been abstracted into key ingredients of OO analysis (OOA). Analysis-level property inheritance maps smoothly on the behavior inheritance of the programming realm.

While the book is mostly self-contained, people report that it does not serve as an introductory OO text. It helps to have had some previous exposure to basic OO concepts.

Chapters Include:

Part 1: Analysis

  • Introduction to Analysis
  • Object Statics
  • Object Relationships
  • Object Dynamics
  • Object Interaction
  • Class Relationships
  • Instances
  • Ensembles
  • Constructing a System Model
  • Other Requirements
  • The Analysis Process
  • Domain Analysis
  • The Grady Experience

Part II: Design

  • From Analysis to Design
  • Description and Computation
  • Attributes in Design
  • Relationships in Design
  • Designing Transitions
  • Interaction Designs
  • Dispatching
  • Coordination
  • Clustering Objects
  • Designing Passive Objects
  • Performance Optimization
  • From Design to Implementation

http://g.oswego.edu/dl/oosd/