Preface
- Chapter 1. Introducing ... the Universal Machine!
- 1.1 Connotations of "universal machine"
- 1.2 The Very Idea of the Universal Machine
- 1.3 Anatomy of the Machine
- 1.4 Faces of the Machine
|
|
- Chapter 2. Problem solving before programming
- 2.1 Problem solving strategies
- 2.2 Algorithms: paths through "problem space"
- 2.3 From blind search to informed hacking
- 2.4 Analytical reasoning
- 2.4.1 Outlining as top-down decomposition
- 2.4.2 An Automatic Teller Machine (ATM) problem
- 2.4.3 Bottom-up composition
- 2.5 The analogical approach
- 2.5.1 Copy and paste
- 2.5.2 Object-orientation
- 2.5.3 An object-oriented analysis of the ATM problem
- 2.6 Programming in Knobby's World (optional)
|
|
- Chapter 3. A Taste of C++
- 3.1 "Hello, universe!"
- 3.2 Arithmetic in C++
- 3.3 A change machine
- 3.4 The char data type
- 3.5 Programming as problem solving: making ATM deposits
- 3.6 Beyond C++--: more types and operators (optional)
|
` |
- Chapter 4. Programming languages and their translators
- 4.1 Interpreters vs. compilers
- 4.2 How compilers produce actual machine code
- 4.3 Lookout for C++--
- 4.4 Inside Knobby's programming language translator
- 4.5 A brief history of programming languages
|
|
- Chapter 5. Classes: an outside look
- 5.1 Abstract data types
- 5.2 Constructors and members
- 5.3 The LOOKOUT class library
- 5.4 Beyond C++--: browsing C++ header files (optional)
|
|
- Chapter 6. Software development life cycle
- 6.1 Programming-in-the large
- 6.2 The "waterfall" life cycle
- 6.3 Analysis of requirements
- 6.4 Design
- 6.5 Coding
- 6.6 Testing and debugging
- 6.7 Delivery and maintenance
|
|
- Chapter 7. Structured programming with control structures
- 7.1 Conditionals
- 7.2 Using conditionals--interactive and menu-driven programs
- 7.3 Repetitions
- 7.4 Common loop idioms
- 7.5 Preventing and removing bugs in loops
- 7.6 Programming as problem solving: ATM interface
- 7.7 Beyond C++--: more types, operators and control structures (optional)
|
|
- Chapter 8. Peeling the onion: computer architecture
- 8.1 The register machine
- 8.2 Boolean circuits
|
|
- Chapter 9. Functions and decomposition
- 9.1 Flow of control through function calls
- 9.2 Local and global variables
- 9.3 Return values
- 9.4 Functional decomposition
- 9.5 Parameters
- 9.6 Function prototypes
- 9.7 Preconditions and postconditions
- 9.8 Recursion (optional)
- 9.9 Programming as problem solving: the ATM by decomposition
|
|
- Chapter 10. Operating systems and networks
- 10.1 A brief history of operating systems
- 10.2 Booting an operating system
- 10.3 Operating system architecture
- 10.4 Networks
- 10.5 Protection and security
|
|
- Chapter 11. Strings and arrays
- 11.1 Subscripts in Lstrings.
- 11.2 Arrays of homogeneous elements
- 11.3 Searching and sorting
- 11.4 Two-dimensional arrays
- 11.5 Beyond C++--: inside arrays (optional)
|
|
- Chapter 12. Computing theory
- 12.1 Complexity and efficiency
- 12.2 Abstract "computing machines"
|
|
- Chapter 13. Object-oriented software
- 13.1 Object-oriented problem solving
- 13.2 Responsibility-driven design
- 13.3 Generalizing through inheritance
- 13.4 Designing Abstract Data Types (optional)
|
|
- Chapter 14. Classes: an inside look
- 14.1 Classes create types
- 14.2 Inheritance via class derivation
- 14.3 The Automatic Teller Machine, one more time!
- 14.4 Another example: Files
- 14.4 Beyond C++--: inline functions and dynamic binding (opt.)
|
|
- Chapter 15. Social and ethical issues
- 15.1 Computers and society
- 15.2 Computers and social change
- 15.3 Computers and privacy
- 15.4 Computers and legal issues
- 15.5 Professional ethics
|
|
- Chapter 16. Artificial intelligence
- 16.1 Big questions
- 16.2 AI algorithms and engines
- 16.3 AI engines and AI technology
- 16.4 Neural networks
- 16.5 Agents and robots
- Appendix: C++ language structures
- Index
|
|