Concepts, Techniques, and Models of Computer Programming
Publisher: The MIT Press
Published: March 1, 2004
Place of publication: Cambridge, Massachusetts, USA
Language: eng
Format: Hardcover
Number of pages: 930
ISBN-13: 9780262220699
Subjects: Computers; Computers - Languages / Programming; Computer Books: General; Programming - General; Computer Programming
Table of contents: title: List of Figures
pagenum: xvi; title: List of Tables
pagenum: xxiv; title: Preface
pagenum: xxvii; title: Running the example programs
pagenum: xliii; label: I
title: Introduction
pagenum: 1; label: 1
title: Introduction to Programming Concepts
pagenum: 3; label: 1.1
title: A calculator
pagenum: 3; label: 1.2
title: Variables
pagenum: 4; label: 1.3
title: Functions
pagenum: 4; label: 1.4
title: Lists
pagenum: 6; label: 1.5
title: Functions over lists
pagenum: 9; label: 1.6
title: Correctness
pagenum: 11; label: 1.7
title: Complexity
pagenum: 12; label: 1.8
title: Lazy evaluation
pagenum: 13; label: 1.9
title: Higher-order programming
pagenum: 15; label: 1.10
title: Concurrency
pagenum: 16; label: 1.11
title: Dataflow
pagenum: 17; label: 1.12
title: State
pagenum: 18; label: 1.13
title: Objects
pagenum: 19; label: 1.14
title: Classes
pagenum: 20; label: 1.15
title: Nondeterminism and time
pagenum: 21; label: 1.16
title: Atomicity
pagenum: 23; label: 1.17
title: Where do we go from here
pagenum: 24; label: 1.18
title: Exercises
pagenum: 24; label: II
title: General Computation Models
pagenum: 29; label: 2
title: Declarative Computation Model
pagenum: 31; label: 2.1
title: Defining practical programming languages
pagenum: 33; label: 2.2
title: The single-assignment store
pagenum: 44; label: 2.3
title: Kernel language
pagenum: 50; label: 2.4
title: Kernel language semantics
pagenum: 57; label: 2.5
title: From kernel language to practical language
pagenum: 80; label: 2.6
title: Exceptions
pagenum: 91; label: 2.7
title: Advanced topics
pagenum: 98; label: 2.8
title: Exercises
pagenum: 108; label: 3
title: Declarative Programming Techniques
pagenum: 113; label: 3.1
title: What is declarativeness?
pagenum: 117; label: 3.2
title: Iterative computation
pagenum: 120; label: 3.3
title: Recursive computation
pagenum: 126; label: 3.4
title: Programming with recursion
pagenum: 130; label: 3.5
title: Time and space efficiency
pagenum: 169; label: 3.6
title: Higher-order programming
pagenum: 180; label: 3.7
title: Abstract data types
pagenum: 197; label: 3.8
title: Nondeclarative needs
pagenum: 213; label: 3.9
title: Program design in the small
pagenum: 221; label: 3.10
title: Exercises
pagenum: 233; label: 4
title: Declarative Concurrency
pagenum: 237; label: 4.1
title: The data-driven concurrent model
pagenum: 239; label: 4.2
title: Basic thread programming techniques
pagenum: 251; label: 4.3
title: Streams
pagenum: 261; label: 4.4
title: Using the declarative concurrent model directly
pagenum: 277; label: 4.5
title: Lazy execution
pagenum: 283; label: 4.6
title: Soft real-time programming
pagenum: 309; label: 4.7
title: Limitations and extensions of declarative programming
pagenum: 314; label: 4.8
title: The Haskell language
pagenum: 327; label: 4.9
title: Advanced topics
pagenum: 332; label: 4.10
title: Historical notes
pagenum: 343; label: 4.11
title: Exercises
pagenum: 344; label: 5
title: Message-Passing Concurrency
pagenum: 353; label: 5.1
title: The message-passing concurrent model
pagenum: 354; label: 5.2
title: Port objects
pagenum: 357; label: 5.3
title: Simple message protocols
pagenum: 361; label: 5.4
title: Program design for concurrency
pagenum: 370; label: 5.5
title: Using the message-passing concurrent model directly
pagenum: 385; label: 5.6
title: The Erlang language
pagenum: 394; label: 5.7
title: Advanced topics
pagenum: 402; label: 5.8
title: Exercises
pagenum: 407; label: 6
title: Explicit State
pagenum: 413; label: 6.1
title: What is state?
pagenum: 416; label: 6.2
title: State and system building
pagenum: 418; label: 6.3
title: The declarative model with explicit state
pagenum: 421; label: 6.4
title: Abstract data types
pagenum: 427; label: 6.5
title: Stateful collections
pagenum: 438; label: 6.6
title: Reasoning with state
pagenum: 444; label: 6.7
title: Program design in the large
pagenum: 453; label: 6.8
title: Case studies
pagenum: 467; label: 6.9
title: Advanced topics
pagenum: 484; label: 6.10
title: Exercises
pagenum: 487; label: 7
title: Object-Oriented Programming
pagenum: 493; label: 7.1
title: Motivations
pagenum: 495; label: 7.2
title: Classes as complete ADTs
pagenum: 498; label: 7.3
title: Classes as incremental ADTs
pagenum: 507; label: 7.4
title: Programming with inheritance
pagenum: 524; label: 7.5
title: Relation to other computation models
pagenum: 543; label: 7.6
title: Implementing the object system
pagenum: 552; label: 7.7
title: The Java language (sequential part)
pagenum: 556; label: 7.8
title: Active objects
pagenum: 563; label: 7.9
title: Exercises
pagenum: 574; label: 8
title: Shared-State Concurrency
pagenum: 577; label: 8.1
title: The shared-state concurrent model
pagenum: 581; label: 8.2
title: Programming with concurrency
pagenum: 581; label: 8.3
title: Locks
pagenum: 590; label: 8.4
title: Monitors
pagenum: 600; label: 8.5
title: Transactions
pagenum: 608; label: 8.6
title: The Java language (concurrent part)
pagenum: 625; label: 8.7
title: Exercises
pagenum: 626; label: 9
title: Relational Programming
pagenum: 633; label: 9.1
title: The relational computation model
pagenum: 635; label: 9.2
title: Further examples
pagenum: 639; label: 9.3
title: Relation to logic programming
pagenum: 644; label: 9.4
title: Natural language parsing
pagenum: 654; label: 9.5
title: A grammar interpreter
pagenum: 662; label: 9.6
title: Databases
pagenum: 667; label: 9.7
title: The Prolog language
pagenum: 673; label: 9.8
title: Exercises
pagenum: 684; label: III
title: Specialized Computation Models
pagenum: 687; label: 10
title: Graphical User Interface Programming
pagenum: 689; label: 10.1
title: Basic concepts
pagenum: 691; label: 10.2
title: Using the declarative/procedural approach
pagenum: 692; label: 10.3
title: Case studies
pagenum: 699; label: 10.4
title: Implementing the GUI tool
pagenum: 712; label: 10.5
title: Exercises
pagenum: 712; label: 11
title: Distributed Programming
pagenum: 713; label: 11.1
title: Taxonomy of distributed systems
pagenum: 716; label: 11.2
title: The distribution model
pagenum: 718; label: 11.3
title: Distribution of declarative data
pagenum: 720; label: 11.4
title: Distribution of state
pagenum: 726; label: 11.5
title: Network awareness
pagenum: 729; label: 11.6
title: Common distributed programming patterns
pagenum: 730; label: 11.7
title: Distribution protocols
pagenum: 738; label: 11.8
title: Partial failure
pagenum: 744; label: 11.9
title: Security
pagenum: 749; label: 11.10
title: Building applications
pagenum: 751; label: 11.11
title: Exercises
pagenum: 752; label: 12
title: Constraint Programming
pagenum: 755; label: 12.1
title: Propagate and search
pagenum: 756; label: 12.2
title: Programming techniques
pagenum: 761; label: 12.3
title: The constraint-based computation model
pagenum: 764; label: 12.4
title: Computation spaces
pagenum: 766; label: 12.5
title: Implementing the relational computation model
pagenum: 777; label: 12.6
title: Exercises
pagenum: 778; label: IV
title: Semantics
pagenum: 781; label: 13
title: Language Semantics
pagenum: 783; label: 13.1
title: The shared-state concurrent model
pagenum: 784; label: 13.2
title: Declarative concurrency
pagenum: 806; label: 13.3
title: Eight computation models
pagenum: 808; label: 13.4
title: Semantics of common abstractions
pagenum: 809; label: 13.5
title: Historical notes
pagenum: 810; label: 13.6
title: Exercises
pagenum: 811; label: V
title: Appendices
pagenum: 815; label: A
title: Mozart System Development Environment
pagenum: 817; label: A.1
title: Interactive interface
pagenum: 817; label: A.2
title: Batch interface
pagenum: 819; label: B
title: Basic Data Types
pagenum: 821; label: B.1
title: Numbers (integers, floats, and characters)
pagenum: 821; label: B.2
title: Literals (atoms and names)
pagenum: 825; label: B.3
title: Records and tuples
pagenum: 826; label: B.4
title: Chunks (limited records)
pagenum: 829; label: B.5
title: Lists
pagenum: 830; label: B.6
title: Strings
pagenum: 832; label: B.7
title: Virtual strings
pagenum: 833; label: C
title: Language Syntax
pagenum: 835; label: C.1
title: Interactive statements
pagenum: 836; label: C.2
title: Statements and expressions
pagenum: 836; label: C.3
title: Nonterminals for statements and expressions
pagenum: 838; label: C.4
title: Operators
pagenum: 838; label: C.5
title: Keywords
pagenum: 841; label: C.6
title: Lexical syntax
pagenum: 843; label: D
title: General Computation Model
pagenum: 845; label: D.1
title: Creative extension principle
pagenum: 846; label: D.2
title: Kernel language
pagenum: 847; label: D.3
title: Concepts
pagenum: 848; label: D.4
title: Different forms of state
pagenum: 850; label: D.5
title: Other concepts
pagenum: 851; label: D.6
title: Layered language design
pagenum: 852; title: Bibliography
pagenum: 853; title: Index
pagenum: 869