A Discipline of Programming


Book Description

Executional abstraction; The role of programming languages; States and their characterization; The characterization of semantics; The semantic characterization of a programming language; Two theorems; On the design of properly terminating; Euclid's algorithm revisited; The formal treatment of some small examples; The linear search theorem; The problem of the next permutation.







Elements of Programming


Book Description

Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. This book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.




Coders at Work


Book Description

Peter Seibel interviews 15 of the most interesting computer programmers alive today in Coders at Work, offering a companion volume to Apress’s highly acclaimed best-seller Founders at Work by Jessica Livingston. As the words “at work” suggest, Peter Seibel focuses on how his interviewees tackle the day-to-day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 15 folks who’ve been kind enough to agree to be interviewed: Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow Joe Armstrong: Inventor of Erlang Joshua Bloch: Author of the Java collections framework, now at Google Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger Douglas Crockford: JSON founder, JavaScript architect at Yahoo! L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1 Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal Dan Ingalls: Smalltalk implementor and designer Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler Donald Knuth: Author of The Art of Computer Programming and creator of TeX Peter Norvig: Director of Research at Google and author of the standard text on AI Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress Ken Thompson: Inventor of UNIX Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hacker




Structured Design


Book Description

Presents system and program design as a disciplined science.




A Discipline of Multiprogramming


Book Description

In this book, a programming model is developed that addresses the fundamental issues of 'large-scale programming'. The approach unifies several concepts from database theory, object-oriented programming and designs of reactive systems. The model and the associated theory has been christened "Seuss." The major goal of Seuss is to simplify multiprogramming. To this end, the concern of concurrent implementation is separated from the core program design problem. A program execution is understood as a single thread of control - sequential executions of actions that are chosen according to some scheduling policy. As a consequence, it is possible to reason about the properties of a program from its single execution thread.




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.







The Discipline of Organizing: Professional Edition


Book Description

Note about this ebook: This ebook exploits many advanced capabilities with images, hypertext, and interactivity and is optimized for EPUB3-compliant book readers, especially Apple's iBooks and browser plugins. These features may not work on all ebook readers. We organize things. We organize information, information about things, and information about information. Organizing is a fundamental issue in many professional fields, but these fields have only limited agreement in how they approach problems of organizing and in what they seek as their solutions. The Discipline of Organizing synthesizes insights from library science, information science, computer science, cognitive science, systems analysis, business, and other disciplines to create an Organizing System for understanding organizing. This framework is robust and forward-looking, enabling effective sharing of insights and design patterns between disciplines that weren’t possible before. The Professional Edition includes new and revised content about the active resources of the "Internet of Things," and how the field of Information Architecture can be viewed as a subset of the discipline of organizing. You’ll find: 600 tagged endnotes that connect to one or more of the contributing disciplines Nearly 60 new pictures and illustrations Links to cross-references and external citations Interactive study guides to test on key points The Professional Edition is ideal for practitioners and as a primary or supplemental text for graduate courses on information organization, content and knowledge management, and digital collections. FOR INSTRUCTORS: Supplemental materials (lecture notes, assignments, exams, etc.) are available at http://disciplineoforganizing.org. FOR STUDENTS: Make sure this is the edition you want to buy. There's a newer one and maybe your instructor has adopted that one instead.




The Science of Programming


Book Description

Describes basic programming principles and their step-by- step applications.Numerous examples are included.