Object-oriented programming (OOP) Books

187 products


  • Independently Published Rust voor systeemprogrammeurs

    15 in stock

    15 in stock

    £14.83

  • Independently Published Programmeren voor prestaties

    15 in stock

    15 in stock

    £14.83

  • Independently Published Modern C Programming for Beginners

    15 in stock

    15 in stock

    £23.00

  • Amazon Digital Services LLC - Kdp La programmation fonctionnelle démystifiée

    15 in stock

    15 in stock

    £14.28

  • Independently Published Crystal Programming

    15 in stock

    15 in stock

    £16.47

  • Amazon Digital Services LLC - Kdp Chronicles of Google IO 2025

    15 in stock

    15 in stock

    £14.06

  • Amazon Digital Services LLC - Kdp Websites Tools Skills for .NET 8

    15 in stock

    15 in stock

    £22.32

  • Independently Published Rust Fundamentals

    15 in stock

    15 in stock

    £13.68

  • Amazon Digital Services LLC - Kdp The PICO VR Platform

    15 in stock

    15 in stock

    £14.99

  • Independently Published Entity Framework Core Design Patterns

    15 in stock

    15 in stock

    £23.14

  • Independently Published ASP.NET Core 8 and Entity Framework Core 8

    15 in stock

    15 in stock

    £29.63

  • Independently Published Mastering Java 25

    15 in stock

    15 in stock

    £23.82

  • Independently Published ObjectOriented Programming

    15 in stock

    15 in stock

    £20.92

  • Amazon Digital Services LLC - Kdp Rust for AI and Machine Learning

    15 in stock

    15 in stock

    £20.12

  • Amazon Digital Services LLC - Kdp Blazor Wasm Architecture Design Patterns

    15 in stock

    15 in stock

    £22.09

  • Amazon Digital Services LLC - Kdp The Modern C Handbook

    15 in stock

    15 in stock

    £13.44

  • Amazon Digital Services LLC - Kdp Der vollständige Leitfaden zu UXDesign für Anfänger

    15 in stock

    15 in stock

    £13.38

  • Independently Published LEssentiel de GO

    15 in stock

    15 in stock

    £19.84

  • Amazon Digital Services LLC - Kdp Top Tips

    15 in stock

    15 in stock

    £14.00

  • Amazon Digital Services LLC - Kdp The Complete Rust Developer

    15 in stock

    15 in stock

    £20.10

  • Amazon Digital Services LLC - Kdp Julia Programming For Beginners

    15 in stock

    15 in stock

    £20.87

  • Amazon Digital Services LLC - Kdp Julia Programming for Machine Learning

    15 in stock

    15 in stock

    £28.00

  • Amazon Digital Services LLC - Kdp Julia Programming for Web Development

    15 in stock

    15 in stock

    £24.67

  • Amazon Digital Services LLC - Kdp JavaScript Objectoriented Programming

    15 in stock

    15 in stock

    £15.41

  • Independently Published Chorus of Devoxx Poland 2022

    15 in stock

    15 in stock

    £14.04

  • Independently Published Objectoriented Programming For game development

    15 in stock

    15 in stock

    £11.92

  • Amazon Digital Services LLC - Kdp Asynchronous Programming With C 10

    15 in stock

    15 in stock

    £12.00

  • Amazon Digital Services LLC - Kdp Software Design Patterns

    15 in stock

    15 in stock

    £15.30

  • Amazon Digital Services LLC - Kdp Démystifier le code

    15 in stock

    15 in stock

    £10.31

  • Amazon Digital Services LLC - Kdp Foundations of Software Architecture

    15 in stock

    15 in stock

    £18.05

  • Java Software Structures

    Pearson Education Java Software Structures

    Book Synopsis

    £168.88

  • Agile Software Development

    Pearson Education (US) Agile Software Development

    1 in stock

    Book SynopsisDr. Alistair Cockburn is an internationally renowned expert on all aspects of software development, from object-oriented modeling and architecture, to methodology design, to project management and organizational alignment. One of the pioneers who coined the term agile software development, he co-authored the 2001 Agile Software Development Manifesto and the 2005 Declaration of Interdependence. Since 1975, he has led projects and taught in places from Oslo to Cape Town, from Vancouver to Beijing. His work has covered topics from design to management to testing, in research, in government, and in industry. His most recent book is Crystal Clear: A Human-Powered Methodology for Small Teams. His books Writing Effective Use Cases and Agile Software Development won back-to-back Jolt Productivity Awards in 2001 and 2002.Table of ContentsList of Figures xi List of Stories xvii Preface xxi Preface to Second Edition xxxi 0 Unknowable and Incommunicable 1 0.1 Unknowable and Incommunicable: Evolution 21 Chapter 1 A Cooperative Game of Invention and Communication 27 Chapter 1.1 A Cooperative Game of Invention and Communication: Evolution 47 Chapter 2 Individuals 65 Chapter 2.1 Individuals: Evolution 99 Chapter 3 Communication, Cooperating Teams 105 Chapter 3.1 Teams: Evolution 143 Chapter 4 Methodologies 147 Chapter 4.1 Methodologies: Evolution 207 Chapter 5 Agile and Self-Adapting 217 Chapter 5.1 Agile and Self-Adapting: Evolution 241 Chapter 6 The Crystal Methodologies 335 Chapter 6.1 The Crystal Methodologies: Evolution 351 Appendix A The Agile Software Development Manifesto 367 Appendix A.1 The Agile Software Development Manifesto and the Declaration of Interdependence 379 Appendix B Naur, Ehn, Musashi 391 Appendix B.1 Naur, Ehn, Musashi: Evolution 427 Appendix C Afterword 431 Appendix D Books and References 437 Index 453

    1 in stock

    £40.04

  • Parallel Science and Engineering Applications

    Taylor & Francis Inc Parallel Science and Engineering Applications

    1 in stock

    Book SynopsisDeveloped in the context of science and engineering applications, with each abstraction motivated by and further honed by specific application needs, Charm++ is a production-quality system that runs on almost all parallel computers available. Parallel Science and Engineering Applications: The Charm++ Approach surveys a diverse and scalable collection of science and engineering applications, most of which are used regularly on supercomputers by scientists to further their research.After a brief introduction to Charm++, the book presents several parallel CSE codes written in the Charm++ model, along with their underlying scientific and numerical formulations, explaining their parallelization strategies and parallel performance. These chapters demonstrate the versatility of Charm++ and its utility for a wide variety of applications, including molecular dynamics, cosmology, quantum chemistry, fracture simulations, agent-based simulations, and weather modeling. Trade Review"It succeeds perfectly and combines for the first time both Charm++ and significant application development in a single volume. It will provide a solid foundation for anyone who is considering using the most recent tools for developing applications for future ExascaIe platforms. I highly recommend this timely book for scientists and engineers." -Horst Simon, Lawrence Berkeley National Laboratory and University of California, BerkeleyTable of ContentsThe Charm++ Programming Model. Designing Charm++ Programs. Tools for Debugging and Performance Analysis. Scalable Molecular Dynamics with NAMD. OpenAtom: Ab initio Molecular Dynamics for Petascale Platforms. N-body Simulations with ChaNGa. Remote Visualization of Cosmological Data using Salsa. Improving Scalability of BRAMS: a Regional Weather Forecast Model. Crack Propagation Analysis with Automatic Load Balancing. Contagion Diffusion with EpiSimdemics.

    1 in stock

    £166.25

  • Data Structures and Algorithms in C

    John Wiley & Sons Inc Data Structures and Algorithms in C

    Book SynopsisThis second edition of Data Structures and Algorithms in C++ is designed to provide an introduction to data structures and algorithms, including their design, analysis, and implementation. The authors offer an introduction to object-oriented design with C++ and design patterns, including the use of class inheritance and generic programming through class and function templates, and retain a consistent object-oriented viewpoint throughout the book. This is a sister book to Goodrich & Tamassia's Data Structures and Algorithms in Java, but uses C++ as the basis language instead of Java. This C++ version retains the same pedagogical approach and general structure as the Java version so schools that teach data structures in both C++ and Java can share the same core syllabus. In terms of curricula based on the IEEE/ACM 2001 Computing Curriculum, this book is appropriate for use in the courses CS102 (I/O/B versions), CS103 (I/O/B versions), CS111 (A version), and CS112 (A/I/O/F/H veTable of Contents1 A C++ Primer 1 1.1 Basic C++ Programming Elements 2 1.1.1 A Simple C++ Program 2 1.1.2 Fundamental Types 4 1.1.3 Pointers, Arrays, and Structures 7 1.1.4 Named Constants, Scope, and Namespaces 13 1.2 Expressions 16 1.2.1 Changing Types through Casting 20 1.3 Control Flow 23 1.4 Functions 26 1.4.1 Argument Passing 28 1.4.2 Overloading and Inlining 30 1.5 Classes 32 1.5.1 Class Structure 33 1.5.2 Constructors and Destructors 37 1.5.3 Classes and Memory Allocation 40 1.5.4 Class Friends and Class Members 43 1.5.5 The Standard Template Library 45 1.6 C++ Program and File Organization 47 1.6.1 An Example Program 48 1.7 Writing a C++ Program53 1.7.1 Design 54 1.7.2 Pseudo-Code 54 1.7.3 Coding 55 1.7.4 Testing and Debugging 57 1.8 Exercises 60 2 Object-Oriented Design 65 2.1 Goals, Principles, and Patterns 66 2.1.1 Object-Oriented Design Goals 66 2.1.2 Object-Oriented Design Principles 67 2.1.3 Design Patterns 70 2.2 Inheritance and Polymorphism 71 2.2.1 Inheritance in C++ 71 2.2.2 Polymorphism 78 2.2.3 Examples of Inheritance in C++ 79 2.2.4 Multiple Inheritance and Class Casting 84 2.2.5 Interfaces and Abstract Classes 87 2.3 Templates 90 2.3.1 Function Templates 90 2.3.2 Class Templates 91 2.4 Exceptions 93 2.4.1 Exception Objects 93 2.4.2 Throwing and Catching Exceptions 94 2.4.3 Exception Specification 96 2.5 Exercises 98 3 Arrays, Linked Lists, and Recursion 103 3.1 Using Arrays 104 3.1.1 Storing Game Entries in an Array 104 3.1.2 Sorting an Array 109 3.1.3 Two-Dimensional Arrays and Positional Games 111 3.2 Singly Linked Lists 117 3.2.1 Implementing a Singly Linked List 117 3.2.2 Insertion to the Front of a Singly Linked List 119 3.2.3 Removal from the Front of a Singly Linked List 119 3.2.4 Implementing a Generic Singly Linked List 121 3.3 Doubly Linked Lists 123 3.3.1 Insertion into a Doubly Linked List 123 3.3.2 Removal from a Doubly Linked List 124 3.3.3 A C++ Implementation 125 3.4 Circularly Linked Lists and List Reversal 129 3.4.1 Circularly Linked Lists 129 3.4.2 Reversing a Linked List 133 3.5 Recursion 134 3.5.1 Linear Recursion 140 3.5.2 Binary Recursion 144 3.5.3 Multiple Recursion 147 3.6 Exercises 149 4 Analysis Tools 153 4.1 The Seven Functions Used in This Book 154 4.1.1 The Constant Function 154 4.1.2 The Logarithm Function 154 4.1.3 The Linear Function 156 4.1.4 The N-Log-N Function 156 4.1.5 The Quadratic Function 156 4.1.6 The Cubic Function and Other Polynomials 158 4.1.7 The Exponential Function 159 4.1.8 Comparing Growth Rates 161 4.2 Analysis of Algorithms 162 4.2.1 Experimental Studies 163 4.2.2 Primitive Operations 164 4.2.3 Asymptotic Notation 166 4.2.4 Asymptotic Analysis 170 4.2.5 Using the Big-Oh Notation 172 4.2.6 A Recursive Algorithm for Computing Powers 176 4.2.7 Some More Examples of Algorithm Analysis 177 4.3 Simple Justification Techniques 181 4.3.1 By Example 181 4.3.2 The “Contra” Attack 181 4.3.3 Induction and Loop Invariants 182 4.4 Exercises 185 5 Stacks, Queues, and Deques 193 5.1 Stacks 194 5.1.1 The Stack Abstract Data Type 195 5.1.2 The STL Stack 196 5.1.3 A C++ Stack Interface 196 5.1.4 A Simple Array-Based Stack Implementation 198 5.1.5 Implementing a Stack with a Generic Linked List 202 5.1.6 Reversing a Vector Using a Stack 203 5.1.7 Matching Parentheses and HTML Tags 204 5.2 Queues 208 5.2.1 The Queue Abstract Data Type 208 5.2.2 The STL Queue 209 5.2.3 A C++ Queue Interface 210 5.2.4 A Simple Array-Based Implementation 211 5.2.5 Implementing a Queue with a Circularly Linked List 213 5.3 Double-Ended Queues 217 5.3.1 The Deque Abstract Data Type 217 5.3.2 The STL Deque 218 5.3.3 Implementing a Deque with a Doubly Linked List 218 5.3.4 Adapters and the Adapter Design Pattern 220 5.4 Exercises 223 6 List and Iterator ADTs 227 6.1 Vectors 228 6.1.1 The Vector Abstract Data Type 228 6.1.2 A Simple Array-Based Implementation 229 6.1.3 An Extendable Array Implementation 231 6.1.4 STL Vectors 236 6.2 Lists 238 6.2.1 Node-Based Operations and Iterators 238 6.2.2 The List Abstract Data Type 240 6.2.3 Doubly Linked List Implementation 242 6.2.4 STL Lists 247 6.2.5 STL Containers and Iterators 248 6.3 Sequences 255 6.3.1 The Sequence Abstract Data Type 255 6.3.2 Implementing a Sequence with a Doubly Linked List .255 6.3.3 Implementing a Sequence with an Array 257 6.4 Case Study: Bubble-Sort on a Sequence 259 6.4.1 The Bubble-Sort Algorithm 259 6.4.2 A Sequence-Based Analysis of Bubble-Sort 260 6.5 Exercises 262 7 Trees 267 7.1 General Trees 268 7.1.1 Tree Definitions and Properties 269 7.1.2 Tree Functions 272 7.1.3 A C++ Tree Interface 273 7.1.4 A Linked Structure for General Trees 274 7.2 Tree Traversal Algorithms 275 7.2.1 Depth and Height 275 7.2.2 Preorder Traversal 278 7.2.3 Postorder Traversal 281 7.3 Binary Trees 284 7.3.1 The Binary Tree ADT 285 7.3.2 A C++ Binary Tree Interface 286 7.3.3 Properties of Binary Trees 287 7.3.4 A Linked Structure for Binary Trees 289 7.3.5 A Vector-Based Structure for Binary Trees 295 7.3.6 Traversals of a Binary Tree 297 7.3.7 The Template Function Pattern 303 7.3.8 Representing General Trees with Binary Trees 309 7.4 Exercises 310 8 Heaps and Priority Queues 321 8.1 The Priority Queue Abstract Data Type 322 8.1.1 Keys, Priorities, and Total Order Relations 322 8.1.2 Comparators 324 8.1.3 The Priority Queue ADT 327 8.1.4 A C++ Priority Queue Interface 328 8.1.5 Sorting with a Priority Queue 329 8.1.6 The STL priority queue Class 330 8.2 Implementing a Priority Queue with a List 331 8.2.1 A C++ Priority Queue Implementation using a List 333 8.2.2 Selection-Sort and Insertion-Sort 335 8.3 Heaps 337 8.3.1 The Heap Data Structure 337 8.3.2 Complete Binary Trees and Their Representation 340 8.3.3 Implementing a Priority Queue with a Heap 344 8.3.4 C++ Implementation 349 8.3.5 Heap-Sort 351 8.3.6 Bottom-Up Heap Construction ⋆ 353 8.4 Adaptable Priority Queues 357 8.4.1 A List-Based Implementation 358 8.4.2 Location-Aware Entries 360 8.5 Exercises 361 9 Hash Tables, Maps, and Skip Lists 367 9.1 Maps 368 9.1.1 The Map ADT 369 9.1.2 A C++ Map Interface 371 9.1.3 The STL map Class 372 9.1.4 A Simple List-Based Map Implementation 374 9.2 Hash Tables 375 9.2.1 Bucket Arrays 375 9.2.2 Hash Functions 376 9.2.3 Hash Codes 376 9.2.4 Compression Functions 380 9.2.5 Collision-Handling Schemes 382 9.2.6 Load Factors and Rehashing 386 9.2.7 A C++ Hash Table Implementation 387 9.3 Ordered Maps 394 9.3.1 Ordered Search Tables and Binary Search 395 9.3.2 Two Applications of Ordered Maps 399 9.4 Skip Lists 402 9.4.1 Search and Update Operations in a Skip List 404 9.4.2 A Probabilistic Analysis of Skip Lists ⋆ 408 9.5 Dictionaries 411 9.5.1 The Dictionary ADT 411 9.5.2 A C++ Dictionary Implementation 413 9.5.3 Implementations with Location-Aware Entries 415 9.6 Exercises 417 10 Search Trees 423 10.1 Binary Search Trees 424 10.1.1 Searching 426 10.1.2 Update Operations 428 10.1.3 C++ Implementation of a Binary Search Tree 432 10.2 AVL Trees438 10.2.1 Update Operations 440 10.2.2 C++ Implementation of an AVL Tree 446 10.3 Splay Trees 450 10.3.1 Splaying 450 10.3.2 When to Splay 454 10.3.3 Amortized Analysis of Splaying ⋆456 10.4 (2,4) Trees 461 10.4.1 Multi-Way Search Trees 461 10.4.2 Update Operations for (2,4) Trees 467 10.5 Red-Black Trees473 10.5.1 Update Operations 475 10.5.2 C++ Implementation of a Red-Black Tree 488 10.6 Exercises 492 11 Sorting, Sets, and Selection 499 11.1 Merge-Sort500 11.1.1 Divide-and-Conquer 500 11.1.2 Merging Arrays and Lists 505 11.1.3 The Running Time of Merge-Sort 508 11.1.4 C++ Implementations of Merge-Sort 509 11.1.5 Merge-Sort and Recurrence Equations ⋆ 511 11.2 Quick-Sort 513 11.2.1 Randomized Quick-Sort 521 11.2.2 C++ Implementations and Optimizations 523 11.3 Studying Sorting through an Algorithmic Lens 526 11.3.1 A Lower Bound for Sorting 526 11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528 11.3.3 Comparing Sorting Algorithms 531 11.4 Sets and Union/Find Structures 533 11.4.1 The Set ADT 533 11.4.2 Mergable Sets and the Template Method Pattern 534 11.4.3 Partitions with Union-Find Operations 538 11.5 Selection 542 11.5.1 Prune-and-Search 542 11.5.2 Randomized Quick-Select 543 11.5.3 Analyzing Randomized Quick-Select 544 11.6 Exercises 545 12 Strings and Dynamic Programming 553 12.1 String Operations 554 12.1.1 The STL String Class 555 12.2 Dynamic Programming 557 12.2.1 Matrix Chain-Product 557 12.2.2 DNA and Text Sequence Alignment 560 12.3 Pattern Matching Algorithms 564 12.3.1 Brute Force 564 12.3.2 The Boyer-Moore Algorithm 566 12.3.3 The Knuth-Morris-Pratt Algorithm 570 12.4 Text Compression and the Greedy Method 575 12.4.1 The Huffman-Coding Algorithm 576 12.4.2 The Greedy Method 577 12.5 Tries 578 12.5.1 Standard Tries 578 12.5.2 Compressed Tries 582 12.5.3 Suffix Tries 584 12.5.4 Search Engines 586 12.6 Exercises 587 13 Graph Algorithms 593 13.1 Graphs 594 13.1.1 The Graph ADT 599 13.2 Data Structures for Graphs 600 13.2.1 The Edge List Structure 600 13.2.2 The Adjacency List Structure 603 13.2.3 The Adjacency Matrix Structure 605 13.3 Graph Traversals 607 13.3.1 Depth-First Search 607 13.3.2 Implementing Depth-First Search 611 13.3.3 A Generic DFS Implementation in C++ 613 13.3.4 Polymorphic Objects and Decorator Values ⋆ 621 13.3.5 Breadth-First Search 623 13.4 Directed Graphs 626 13.4.1 Traversing a Digraph 628 13.4.2 Transitive Closure 630 13.4.3 Directed Acyclic Graphs 633 13.5 Shortest Paths 637 13.5.1 Weighted Graphs 637 13.5.2 Dijkstra’s Algorithm 639 13.6 Minimum Spanning Trees 645 13.6.1 Kruskal’s Algorithm 647 13.6.2 The Prim-Jarn´ık Algorithm 651 13.7 Exercises 654 14 Memory Management and B-Trees 665 14.1 Memory Management 666 14.1.1 Memory Allocation in C++ 669 14.1.2 Garbage Collection 671 14.2 External Memory and Caching 673 14.2.1 The Memory Hierarchy 673 14.2.2 Caching Strategies 674 14.3 External Searching and B-Trees679 14.3.1 (a,b) Trees 680 14.3.2 B-Trees 682 14.4 External-Memory Sorting 683 14.4.1 Multi-Way Merging 684 14.5 Exercises 685 A Useful Mathematical Facts 689 Bibliography 697 Index 702 1 A C++ Primer 1 1.1 Basic C++ Programming Elements 2 1.1.1 A Simple C++ Program 2 1.1.2 Fundamental Types 4 1.1.3 Pointers, Arrays, and Structures 7 1.1.4 Named Constants, Scope, and Namespaces 13 1.2 Expressions 16 1.2.1 Changing Types through Casting 20 1.3 Control Flow 23 1.4 Functions 26 1.4.1 Argument Passing 28 1.4.2 Overloading and Inlining 30 1.5 Classes 32 1.5.1 Class Structure 33 1.5.2 Constructors and Destructors 37 1.5.3 Classes and Memory Allocation 40 1.5.4 Class Friends and Class Members 43 1.5.5 The Standard Template Library 45 1.6 C++ Program and File Organization 47 1.6.1 An Example Program 48 1.7 Writing a C++ Program53 1.7.1 Design 54 1.7.2 Pseudo-Code 54 1.7.3 Coding 55 1.7.4 Testing and Debugging 57 1.8 Exercises 60 2 Object-Oriented Design 65 2.1 Goals, Principles, and Patterns 66 2.1.1 Object-Oriented Design Goals 66 2.1.2 Object-Oriented Design Principles 67 2.1.3 Design Patterns 70 2.2 Inheritance and Polymorphism 71 2.2.1 Inheritance in C++ 71 2.2.2 Polymorphism 78 2.2.3 Examples of Inheritance in C++ 79 2.2.4 Multiple Inheritance and Class Casting 84 2.2.5 Interfaces and Abstract Classes 87 2.3 Templates 90 2.3.1 Function Templates 90 2.3.2 Class Templates 91 2.4 Exceptions 93 2.4.1 Exception Objects 93 2.4.2 Throwing and Catching Exceptions 94 2.4.3 Exception Specification 96 2.5 Exercises 98 3 Arrays, Linked Lists, and Recursion 103 3.1 Using Arrays 104 3.1.1 Storing Game Entries in an Array 104 3.1.2 Sorting an Array 109 3.1.3 Two-Dimensional Arrays and Positional Games 111 3.2 Singly Linked Lists 117 3.2.1 Implementing a Singly Linked List 117 3.2.2 Insertion to the Front of a Singly Linked List 119 3.2.3 Removal from the Front of a Singly Linked List 119 3.2.4 Implementing a Generic Singly Linked List 121 3.3 Doubly Linked Lists 123 3.3.1 Insertion into a Doubly Linked List 123 3.3.2 Removal from a Doubly Linked List 124 3.3.3 A C++ Implementation 125 3.4 Circularly Linked Lists and List Reversal 129 3.4.1 Circularly Linked Lists 129 3.4.2 Reversing a Linked List 133 3.5 Recursion 134 3.5.1 Linear Recursion 140 3.5.2 Binary Recursion 144 3.5.3 Multiple Recursion 147 3.6 Exercises 149 4 Analysis Tools 153 4.1 The Seven Functions Used in This Book 154 4.1.1 The Constant Function 154 4.1.2 The Logarithm Function 154 4.1.3 The Linear Function 156 4.1.4 The N-Log-N Function 156 4.1.5 The Quadratic Function 156 4.1.6 The Cubic Function and Other Polynomials 158 4.1.7 The Exponential Function 159 4.1.8 Comparing Growth Rates 161 4.2 Analysis of Algorithms 162 4.2.1 Experimental Studies 163 4.2.2 Primitive Operations 164 4.2.3 Asymptotic Notation 166 4.2.4 Asymptotic Analysis 170 4.2.5 Using the Big-Oh Notation 172 4.2.6 A Recursive Algorithm for Computing Powers 176 4.2.7 Some More Examples of Algorithm Analysis 177 4.3 Simple Justification Techniques 181 4.3.1 By Example 181 4.3.2 The “Contra” Attack 181 4.3.3 Induction and Loop Invariants 182 4.4 Exercises 185 5 Stacks, Queues, and Deques 193 5.1 Stacks 194 5.1.1 The Stack Abstract Data Type 195 5.1.2 The STL Stack 196 5.1.3 A C++ Stack Interface 196 5.1.4 A Simple Array-Based Stack Implementation 198 5.1.5 Implementing a Stack with a Generic Linked List 202 5.1.6 Reversing a Vector Using a Stack 203 5.1.7 Matching Parentheses and HTML Tags 204 5.2 Queues 208 5.2.1 The Queue Abstract Data Type 208 5.2.2 The STL Queue 209 5.2.3 A C++ Queue Interface 210 5.2.4 A Simple Array-Based Implementation 211 5.2.5 Implementing a Queue with a Circularly Linked List 213 5.3 Double-Ended Queues 217 5.3.1 The Deque Abstract Data Type 217 5.3.2 The STL Deque 218 5.3.3 Implementing a Deque with a Doubly Linked List 218 5.3.4 Adapters and the Adapter Design Pattern 220 5.4 Exercises 223 6 List and Iterator ADTs 227 6.1 Vectors 228 6.1.1 The Vector Abstract Data Type 228 6.1.2 A Simple Array-Based Implementation 229 6.1.3 An Extendable Array Implementation 231 6.1.4 STL Vectors 236 6.2 Lists 238 6.2.1 Node-Based Operations and Iterators 238 6.2.2 The List Abstract Data Type 240 6.2.3 Doubly Linked List Implementation 242 6.2.4 STL Lists 247 6.2.5 STL Containers and Iterators 248 6.3 Sequences255 6.3.1 The Sequence Abstract Data Type 255 6.3.2 Implementing a Sequence with a Doubly Linked List .255 6.3.3 Implementing a Sequence with an Array 257 6.4 Case Study: Bubble-Sort on a Sequence 259 6.4.1 The Bubble-Sort Algorithm 259 6.4.2 A Sequence-Based Analysis of Bubble-Sort 260 6.5 Exercises 262 7 Trees 267 7.1 General Trees 268 7.1.1 Tree Definitions and Properties 269 7.1.2 Tree Functions 272 7.1.3 A C++ Tree Interface 273 7.1.4 A Linked Structure for General Trees 274 7.2 Tree Traversal Algorithms 275 7.2.1 Depth and Height 275 7.2.2 Preorder Traversal 278 7.2.3 Postorder Traversal 281 7.3 Binary Trees 284 7.3.1 The Binary Tree ADT 285 7.3.2 A C++ Binary Tree Interface 286 7.3.3 Properties of Binary Trees 287 7.3.4 A Linked Structure for Binary Trees 289 7.3.5 A Vector-Based Structure for Binary Trees 295 7.3.6 Traversals of a Binary Tree 297 7.3.7 The Template Function Pattern 303 7.3.8 Representing General Trees with Binary Trees 309 7.4 Exercises 310 8 Heaps and Priority Queues 321 8.1 The Priority Queue Abstract Data Type 322 8.1.1 Keys, Priorities, and Total Order Relations 322 8.1.2 Comparators 324 8.1.3 The Priority Queue ADT 327 8.1.4 A C++ Priority Queue Interface 328 8.1.5 Sorting with a Priority Queue 329 8.1.6 The STL priority queue Class 330 8.2 Implementing a Priority Queue with a List 331 8.2.1 A C++ Priority Queue Implementation using a List 333 8.2.2 Selection-Sort and Insertion-Sort 335 8.3 Heaps 337 8.3.1 The Heap Data Structure 337 8.3.2 Complete Binary Trees and Their Representation 340 8.3.3 Implementing a Priority Queue with a Heap 344 8.3.4 C++ Implementation 349 8.3.5 Heap-Sort 351 8.3.6 Bottom-Up Heap Construction ⋆353 8.4 Adaptable Priority Queues 357 8.4.1 A List-Based Implementation 358 8.4.2 Location-Aware Entries 360 8.5 Exercises 361 9 Hash Tables, Maps, and Skip Lists 367 9.1 Maps 368 9.1.1 The Map ADT 369 9.1.2 A C++ Map Interface 371 9.1.3 The STL map Class 372 9.1.4 A Simple List-Based Map Implementation 374 9.2 Hash Tables 375 9.2.1 Bucket Arrays 375 9.2.2 Hash Functions 376 9.2.3 Hash Codes 376 9.2.4 Compression Functions 380 9.2.5 Collision-Handling Schemes 382 9.2.6 Load Factors and Rehashing 386 9.2.7 A C++ Hash Table Implementation 387 9.3 Ordered Maps 394 9.3.1 Ordered Search Tables and Binary Search 395 9.3.2 Two Applications of Ordered Maps 399 9.4 Skip Lists 402 9.4.1 Search and Update Operations in a Skip List 404 9.4.2 A Probabilistic Analysis of Skip Lists ⋆408 9.5 Dictionaries 411 9.5.1 The Dictionary ADT 411 9.5.2 A C++ Dictionary Implementation 413 9.5.3 Implementations with Location-Aware Entries 415 9.6 Exercises 417 10 Search Trees 423 10.1 Binary Search Trees 424 10.1.1 Searching 426 10.1.2 Update Operations 428 10.1.3 C++ Implementation of a Binary Search Tree 432 10.2 AVL Trees438 10.2.1 Update Operations 440 10.2.2 C++ Implementation of an AVL Tree 446 10.3 Splay Trees 450 10.3.1 Splaying 450 10.3.2 When to Splay 454 10.3.3 Amortized Analysis of Splaying ⋆456 10.4 (2,4) Trees 461 10.4.1 Multi-Way Search Trees 461 10.4.2 Update Operations for (2,4) Trees 467 10.5 Red-Black Trees473 10.5.1 Update Operations 475 10.5.2 C++ Implementation of a Red-Black Tree 488 10.6 Exercises 492 11 Sorting, Sets, and Selection 499 11.1 Merge-Sort500 11.1.1 Divide-and-Conquer 500 11.1.2 Merging Arrays and Lists 505 11.1.3 The Running Time of Merge-Sort 508 11.1.4 C++ Implementations of Merge-Sort 509 11.1.5 Merge-Sort and Recurrence Equations ⋆511 11.2 Quick-Sort 513 11.2.1 Randomized Quick-Sort 521 11.2.2 C++ Implementations and Optimizations 523 11.3 Studying Sorting through an Algorithmic Lens 526 11.3.1 A Lower Bound for Sorting 526 11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528 11.3.3 Comparing Sorting Algorithms 531 11.4 Sets and Union/Find Structures 533 11.4.1 The Set ADT 533 11.4.2 Mergable Sets and the Template Method Pattern 534 11.4.3 Partitions with Union-Find Operations 538 11.5 Selection 542 11.5.1 Prune-and-Search 542 11.5.2 Randomized Quick-Select 543 11.5.3 Analyzing Randomized Quick-Select 544 11.6 Exercises 545 12 Strings and Dynamic Programming 553 12.1 String Operations 554 12.1.1 The STL String Class 555 12.2 Dynamic Programming 557 12.2.1 Matrix Chain-Product 557 12.2.2 DNA and Text Sequence Alignment 560 12.3 Pattern Matching Algorithms 564 12.3.1 Brute Force 564 12.3.2 The Boyer-Moore Algorithm 566 12.3.3 The Knuth-Morris-Pratt Algorithm 570 12.4 Text Compression and the Greedy Method 575 12.4.1 The Huffman-Coding Algorithm 576 12.4.2 The Greedy Method 577 12.5 Tries 578 12.5.1 Standard Tries 578 12.5.2 Compressed Tries 582 12.5.3 Suffix Tries 584 12.5.4 Search Engines 586 12.6 Exercises 587 13 Graph Algorithms 593 13.1 Graphs 594 13.1.1 The Graph ADT 599 13.2 Data Structures for Graphs 600 13.2.1 The Edge List Structure 600 13.2.2 The Adjacency List Structure 603 13.2.3 The Adjacency Matrix Structure 605 13.3 Graph Traversals 607 13.3.1 Depth-First Search 607 13.3.2 Implementing Depth-First Search 611 13.3.3 A Generic DFS Implementation in C++ 613 13.3.4 Polymorphic Objects and Decorator Values ⋆621 13.3.5 Breadth-First Search 623 13.4 Directed Graphs 626 13.4.1 Traversing a Digraph 628 13.4.2 Transitive Closure 630 13.4.3 Directed Acyclic Graphs 633 13.5 Shortest Paths 637 13.5.1 Weighted Graphs 637 13.5.2 Dijkstra’s Algorithm 639 13.6 Minimum Spanning Trees 645 13.6.1 Kruskal’s Algorithm 647 13.6.2 The Prim-Jarn´ık Algorithm 651 13.7 Exercises 654 14 Memory Management and B-Trees 665 14.1 Memory Management 666 14.1.1 Memory Allocation in C++ 669 14.1.2 Garbage Collection 671 14.2 External Memory and Caching 673 14.2.1 The Memory Hierarchy 673 14.2.2 Caching Strategies 674 14.3 External Searching and B-Trees679 14.3.1 (a,b) Trees 680 14.3.2 B-Trees 682 14.4 External-Memory Sorting 683 14.4.1 Multi-Way Merging 684 14.5 Exercises 685 A Useful Mathematical Facts 689 Bibliography 697 Index 702

    £159.55

  • UML in Practice

    John Wiley & Sons Inc UML in Practice

    Book SynopsisUML is the de facto industry standard modeling language for specifying, visualizing, constructing, and documenting aspects of the design of software systems. UML in Practice offers practical, clear guidance on the real--life usage of UML, mentoring software developers through every aspect of the modeling process.Table of ContentsForeword ix Introduction xi Acknowledgements xv PART 1 FUNCTIONAL VIEW 1 1 Case study: automatic teller machine 3 1.1 Step 1 – Identifying the actors of the ATM 5 1.2 Step 2 – Identifying use cases 8 1.3 Step 3 – Creating use case diagrams 10 1.4 Step 4 – Textual description of use cases 14 1.5 Step 5 – Graphical description of use cases 20 1.6 Step 6 – Organising the use cases 26 2 Complementary exercises 37 2.1 Step 1 – Business modelling 53 2.2 Step 2 – Defining system requirements 57 Appendix A: Glossary & tips 65 PART 2 STATIC VIEW 71 3 Case study: flight booking system 73 3.1 75 3.2 Step 2 – Modelling sentences 6, 7 and 10 77 3.3 Step 3 – Modelling sentences 8 and 9 82 3.4 Step 4 – Modelling sentences 3, 4 and 5 86 3.5 Step 5 – Adding attributes, constraints and qualifiers 89 3.6 Step 6 – Using analysis patterns 94 3.7 Step 7 – Structuring into packages 98 3.8 Step 8 – Generalisation and re-use 105 4 Complementary exercises 113 Appendix B: Glossary & tips 149 Step 1– Modelling sentences 1 and 2 PART 3 DYNAMIC VIEW 157 5 Case study: coin-operated pay phone 159 5.1 Step 1 – Identifying the actors and use cases 161 5.2 Step 2 – Realising the system sequence diagram 164 5.3 Step 3 – Representing the dynamic context 166 5.4 Step 4 – In-depth description using a state diagram 168 6 Complementary exercises 185 Apendix C: Glossary & tips 207 PART 4 DESIGN 213 7 Case study: training request 215 7.1 Step 1 – Defining iterations 217 7.2 Step 2 – Defining the system architecture 219 7.3 Step 3 – Defining system operations (iteration 1) 224 7.4 Step 4 – Operation contracts (iteration 1) 225 7.5 Step 5 – Interaction diagrams (iteration 1) 228 7.6 Step 6 – Design class diagrams (iteration 1) 237 7.7 Step 7 – Defining the system operations (iteration 2) 245 7.8 Step 8 – Operation contracts (iteration 2) 247 7.9 Step 9 – Interaction diagrams (iteration 2) 250 7.10 Step 10 – Design class diagrams (iteration 2) 252 7.11 Step 11 – Back to architecture 253 7.12 Step 12 – Transition to Java code 254 7.13 Step 13 – Putting the application into action 262 8 Complementary exercises 267 Appendix D: Glossary & tips 283 Index 293

    £28.90

  • Data Structures and Algorithms with

    John Wiley & Sons Inc Data Structures and Algorithms with

    Book SynopsisAn object-oriented learning framework for creating good software design. Bruno Preiss presents readers with a modern, object-oriented perspective for looking at data structures and algorithms, clearly showing how to use polymorphism and inheritance, and including fragments from working and tested programs.Table of ContentsAlgorithm Analysis. Asymptotic Notation. Foundational Data Structures. Data Types and Abstraction. Stacks, Queues and Deques. Ordered Lists and Sorted Lists. Hashing, Hash Tables and Scatter Tables. Trees. Search Trees. Heaps and Priority Queues. Sets, Multisets and Partitions. Dynamic Storage Allocation. Algorithmic Patterns and Problem Solvers. Sorting Algorithms and Sorters. Graphs and Graph Algorithms. Appendices. Index.

    £180.86

  • Programming with Objects

    John Wiley & Sons Inc Programming with Objects

    Book SynopsisPROGRAMMING WITH OBJECTS Your essential comparative approach to learning C++ and Java Programming with Objects: A Comparative Presentation of Object-Oriented Programming with C++ and Java, a comparative presentation of object-oriented programming with two of the most popular programming languages of today, teaches vital skills and techniques for the Internet age. Based on highly successful courses taught by the author, this book answers the need for a comprehensive educational program on the subject of object-oriented programming. In a clear and accessible format, the author compares and contrasts both languages, from basic language constructs to how both languages are used in application-level programming, such as graphics programming, network programming, and database programming. Since both C++ and Java were born out of the same language, C, learning these two languages together has several distinct advantages: Because they have much in common aTrade Review"...a wonderful volume...a very worthwhile read...essential..." (Choice, September 2003)Table of ContentsWhy OO Programming - Some Parallels with Things at Large. Baby Steps. The Notion of a Class and Some Other Key Ideas. Strings. Using the Container Classes. The Primitive Types and Their Input/Output. Declarations, Definitions, and Initializations. Object Reference and Memory Allocation. Functions and Methods. Handling Exceptions. Classes, The Rest of the Story. Overloading Operators in C++. Generics and Templates. Modeling Diagrams for OO Programs. Extending Classes. Multiple Inheritance in C++. OO for Graphical User Interfaces, A Tour of Three Toolkits. Multithreaded Object-Oriented Programming. Network Programming. Database Programming.

    £99.86

  • Engineering Distributed Objects

    John Wiley & Sons Engineering Distributed Objects

    Book SynopsisWolfgang Emmerich Engineering Distributed Objects The pay-offs for creating distributed applications are in achieving portability, scalability and fault-tolerance. In order to simplify building software that performs robustly regardless of platform or network infrastructure, a new strata of 'middleware' has been created.Trade Review"recommend..." --CVu, April 2001 "This remarkable book tackles distributed systems in relation to object-orientation and middle-ware. Anyone designing systems today should have a copy of this book on the shelf." --Computer Bulletin ...Book of the Month, May 2001Table of ContentsCONCEPTS. Distributed Systems. Designing Distributed Objects. MIDDLEWARE FOR DISTRIBUTED OBJECTS. Principles of Object-Oriented Middleware. CORBA, COM and Java/RMI. Resolving Heterogeneity. Dynamic Object Requests. COMMON DESIGN PROBLEMS. Advanced Communication between Distributed Objects. Locating Distributed Objects. Life Cycle of Distributed Objects. Object Persistence. Distributed Object Transactions. Security. A Full CORBA C++ Implementation of Soccer Example. Bibliography. Index.

    £51.25

  • ObjectOriented Simulation

    John Wiley & Sons Inc ObjectOriented Simulation

    Book SynopsisThe second part of a yearly series on simulation technology, OBJECT-ORIENTED SIMULATION presents an outstanding variety of the very latest advances in simulation techniques. This leading-edge volume contains a cohesive selection of presentations written by the world-renowned experts in a broad range of topics. OBJECT-ORIENTED SIMULATION is a key resource for anyone involved in computer simulator research and design as well as developers, producers, scholars, and managers. It is an excellent tool for preparing proposals for simulation in commercial and military fields.Table of ContentsPreface. Object-Oriented Simulation and Operas (G. Yeh, et al.). Object-Oriented Simulation Languages and Environments: AFour-Level Architecture (J. Miller, et al.). The Object Flow Model for Object-Oriented Simulation andDatabase Application Modeling (L. Pollacia and L. Delcambre). Reusable Simulation Models in an Object-Oriented Framework (T. Kim and M. Ahn). Object-Oriented Frameworks for Multilevel Simulation Modeling (D. Popken and A. Sinha). Design Strategies for Object-Oriented Simulation Testbeds that Support Software Integration (M. Hilton and C. Anken). Automation of Transformation Schemas for Object-OrientedSimulations (C. Coomber). Steps to an Ecology of Actor Simulation (A. Senteni). Key Words. About the Editors.

    £159.26

  • Literate Programming

    Centre for the Study of Language & Information Literate Programming

    Book SynopsisAn anthology of essays from the inventor of literate programming includes Knuth's early papers on related topics such as structured programming, as well as the Computer Journal article that launched literate programming itself.Table of Contents1. Computer programming as an art; 2. Structured programming with go to statements; 3. A structured program to generate all topological sorting arrangements; 4. Literate programming; 5. Programming pearls: sampling; 6. Programming pearls, continued: common words; 7. How to read a WEB; 8. Excerpts from the programs for TEX and METAFONT; 9. Mathematical writing; 10. The errors of TEX; 11. The error log of TEX; 12. An example of CWEB; Further reading; Index.

    £26.50

  • Modernizing Enterprise Java

    O'Reilly Media Modernizing Enterprise Java

    15 in stock

    Book SynopsisThis practical book helps developers examine these long established models and demonstrates how to bring monolithic applications successfully into the future. Relying on their years of modernization experience, authors Markus Eisele and Natale Vinto walk you through the steps necessary to update your application.

    15 in stock

    £39.74

  • How to Implement Market Models Using VBA

    John Wiley & Sons Inc How to Implement Market Models Using VBA

    Book SynopsisAccessible VBA coding for complex financial modelling How to Implement Market Models Using VBA makes solving complex valuation issues accessible to any financial professional with a taste for mathematics.Table of ContentsPreface ix Acknowledgements xi Abbreviations xiii About the Author xv CHAPTER 1 The Basics of VBA Programming 1 1.1 Getting started 1 1.2 VBA objects and syntax 2 1.2.1 The object-oriented basic syntax 3 1.2.2 Using objects 3 1.3 Variables 5 1.3.1 Variable declaration 5 1.3.2 Some usual objects 7 1.3.3 Arrays 9 1.4 Arithmetic 10 1.5 Subroutines and functions 13 1.5.1 Subroutines 14 1.5.2 Functions 15 1.5.3 Operations on one-dimensional arrays 16 1.5.4 Operations on two-dimensional arrays (matrices) 16 1.5.5 Operations with dates 19 1.6 Custom objects 21 1.6.1 Types 21 1.6.2 Classes 22 1.7 Debugging 24 1.7.1 Error handling 24 1.7.2 Tracking the code execution 25 CHAPTER 2 Mathematical Algorithms 29 2.1 Introduction 29 2.2 Sorting lists 29 2.2.1 Shell sort 29 2.2.2 Quick sort 32 2.3 Implicit equations 34 2.4 Search for extrema 36 2.4.1 The Nelder-Mead algorithm 36 2.4.2 The simulated annealing 40 2.5 Linear algebra 43 2.5.1 Matrix inversion 44 2.5.2 Cholesky decomposition 46 2.5.3 Interpolation 48 2.5.4 Integration 57 2.5.5 Principal Component Analysis 60 CHAPTER 3 Vanilla Instruments 67 3.1 Definitions 67 3.2 Fixed income 67 3.2.1 Bond market 68 3.2.2 Interbank market 72 3.3 Vanilla derivatives 75 3.3.1 Forward contracts 75 3.3.2 Swaps 77 3.3.3 Bond futures 81 3.4 Options basics 84 3.4.1 Brownian motion 84 3.4.2 Ito integral 85 3.4.3 Ito formula 86 3.4.4 Black–Scholes basic model 89 3.4.5 Risk-neutral probability 90 3.4.6 Change of probability 90 3.4.7 Martingale and numeraires 92 3.4.8 European-style options pricing 94 3.5 First generation exotic options 95 3.5.1 Barrier options 95 3.5.2 Quanto options 102 CHAPTER 4 Numerical Solutions 105 4.1 Finite differences 105 4.1.1 Generic equation 105 4.1.2 Implementation 106 4.2 Trees 112 4.2.1 Binomial trees 112 4.2.2 Trinomial trees 116 4.3 Monte-Carlo scenarios 116 4.3.1 Uniform number generator 117 4.3.2 From uniform to Gaussian numbers 127 4.4 Simulation and regression 129 4.5 Double-barrier analytical approximation 134 CHAPTER 5 Monte-Carlo Pricing Issues 139 5.1 Multi-asset simulation 139 5.1.1 The correlations issue 139 5.1.2 The Gaussian case 139 5.1.3 Exotics 143 5.2 Discretization schemes 146 5.3 Variance reduction techniques 147 5.3.1 Antithetic variates 147 5.3.2 Importance sampling 148 5.3.3 Control variates 153 CHAPTER 6 Yield Curve Models 163 6.1 Short rate models 163 6.1.1 Introduction 163 6.1.2 Hull and White one-factor model 164 6.1.3 Gaussian two-factor model 180 6.1.4 Hull and White two-factor model 203 6.2 Forward rate models 204 6.2.1 Generic Heath-Jarrow-Morton 205 6.2.2 LMM (LIBOR market model) 216 CHAPTER 7 Stochastic Volatilities 233 7.1 The Heston model 234 7.1.1 Code 234 7.1.2 A faster algorithm 239 7.1.3 Calibration 248 7.2 Barrier options 254 7.2.1 Numerical results 257 7.2.2 Code 257 7.3 Asian-style options 260 7.4 SABR model 264 7.4.1 Caplets 264 7.4.2 Code 265 CHAPTER 8 Interest Rate Exotics 267 8.1 CMS swaps 267 8.1.1 Code 269 8.2 Cancelable swaps 272 8.2.1 Code 272 8.2.2 Tree approximation 276 8.3 Target redemption note 281 8.3.1 Code 282 Bibliography 287 Index 289

    £57.00

  • Just Spring

    O'Reilly Media Just Spring

    2 in stock

    Book SynopsisThis example-driven introduction to the popular Spring Framework helps Java developers delve into its basic features, as well as advanced concepts such as containers. You'll learn how Spring makes Java Messaging Service easier to work with, and how its support for Hibernate helps you work with data persistence and retrieval.

    2 in stock

    £14.39

  • Using Databases with C

    O'Reilly Media Using Databases with C

    1 in stock

    Book SynopsisC# offers developers power, but sometimes getting started with basic tasks - like getting information in and out of databases - is harder than it should be. Using Databases with C# provides a gentle introduction to a common but critical task, helping developers moving from other languages build a firm foundation.

    1 in stock

    £14.39

  • Safe C

    O'Reilly Safe C

    1 in stock

    Book SynopsisThis book contains discussion of some of the most typical mistakes made by us, programmers, in C++ code and also some recipes how to avoid each of these mistakes.

    1 in stock

    £16.99

  • Just Hibernate

    O'Reilly Media Just Hibernate

    1 in stock

    Book SynopsisIf you're looking for a short, sweet, and simple introduction (or reintroduction) to Hibernate, this is the book you want. Through clear real-world examples, you'll learn Hibernate and object-relational mapping from the ground up, starting with the basics. Then you'll dive into the framework's moving parts to understand how they work in action.

    1 in stock

    £19.19

  • Lift Cookbook

    O'Reilly Media Lift Cookbook

    1 in stock

    Book SynopsisIf you need help building web applications with the Lift framework, this cookbook provides scores of concise, ready-to-use code solutions. You'll find recipes for everything from setting up a coding environment to creating REST web services and deploying your application to production.

    1 in stock

    £16.99

  • Learning Puppet 4

    O'Reilly Media Learning Puppet 4

    1 in stock

    Book SynopsisThis practical guide shows you what Puppet does, how it works, and how it can provide significant value to your organization. Through hands-on tutorials, DevOps engineer Jo Rhett demonstrates how Puppet manages complex and distributed components to ensure service availability.

    1 in stock

    £31.99

© 2026 Book Curl

    • American Express
    • Apple Pay
    • Diners Club
    • Discover
    • Google Pay
    • Maestro
    • Mastercard
    • PayPal
    • Shop Pay
    • Union Pay
    • Visa

    Login

    Forgot your password?

    Don't have an account yet?
    Create account