Object Orientation Abstraction and Data Structures Using Scala 2nd Edition by Mark C. Lewis, Lisa L. Lacher – Ebook PDF Instant Download/DeliveryISBN: 1498732178, 9781498732178
Full download Object Orientation Abstraction and Data Structures Using Scala 2nd Edition after payment

Product details:
ISBN 10: 1498732178
ISBN 13: 9781498732178
Author: Mark C. Lewis, Lisa L. Lacher
Praise for the first edition: “The well-written, comprehensive book…[is] aiming to become a de facto reference for the language and its features and capabilities. The pace is appropriate for beginners; programming concepts are introduced progressively through a range of examples and then used as tools for building applications in various domains, including sophisticated data structures and algorithms…Highly recommended. Students of all levels, faculty, and professionals/practitioners. —D. Papamichail, University of Miami in CHOICE Magazine Mark Lewis’ Introduction to the Art of Programming Using Scala was the first textbook to use Scala for introductory CS courses. Fully revised and expanded, the new edition of this popular text has been divided into two books. Object-Orientation, Abstraction, and Data Structures Using Scala, Second Edition is intended to be used as a textbook for a second or third semester course in Computer Science.
Object Orientation Abstraction and Data Structures Using Scala 2nd Table of contents:
1 Scala Language Basics
1.1 First Application
1.2 Comments
1.3 Variables and Types
1.4 Statements and Expressions
1.4.1 Lambda Expressions/Closures
1.5 Control Structures
1.5.1 Conditionals
1.5.2 Loops
1.5.3 Error Handling
1.6 Declarations and Scope
1.7 Essential Libraries
1.7.1 Standard Input and import Statements
1.7.2 Basic Collections
1.7.2.1 Array and List
1.7.2.2 Creating Collections Using fill
1.7.2.3 Creating Collections Using tabulate
1.7.2.4 Creating Arrays Using new
1.7.2.5 Creating Lists Using Cons
1.7.2.6 Range
1.7.2.7 Methods
1.7.2.8 Higher-Order Methods
1.7.3 The Option Type
1.7.4 Text Files
1.8 Other Language Features
1.8.1 Unfinished Code
1.8.2 Named Arguments
1.8.3 Default Parameter Values
1.8.4 Curried Functions/Methods
1.8.5 Pass-by-Name
1.9 The Read, Evaluate, Print Loop (REPL)
1.10 Putting It Together
1.11 End of Chapter Material
1.11.1 Summary of Concepts
1.11.2 Exercises
2 Basics of Object-Orientation and Software Development
2.1 The Meaning of Object-Orientation
2.2 What Are classes?
2.3 Software Development Stages
2.4 Analysis
2.5 Design
2.6 Bank Example
2.6.1 Bank Analysis
2.6.2 Bank Design
2.6.3 Bank Implementation
2.6.4 Making an Application
2.7 Making Packages
2.8 End of Chapter Material
2.8.1 Summary of Concepts
2.8.2 Exercises
2.8.3 Projects
3 Details of Object-Orientation in Scala
3.1 The 2D Vector classes
3.1.1 this Keyword
3.2 Special Methods and Symbolic Names
3.2.1 Scala Naming Rules/Symbolic Names
3.2.1.1 Precedence and Associativity
3.2.2 Unary Operators
3.2.3 Property Assignment Methods
3.2.4 The apply Method
3.2.5 The update Method
3.3 object Declarations
3.3.1 Companion Objects
3.4 Final Versions of 2D Vectors
3.5 case classes
3.6 Encapsulation/Separating Interface from Implementation
3.7 Revisiting the API
3.8 import Options
3.9 End of Chapter Material
3.9.1 Summary of Concepts
3.9.2 Exercises
3.9.3 Projects
4 Abstraction and Polymorphism
4.1 Polymorphism
4.2 Inclusion Polymorphism (Inheritance and Subtyping)
4.2.1 Inheritance in the Scala Type System
4.2.2 Inheritance in Scala Code
4.2.3 private Visibility and Inheritance
4.2.4 protected Visibility
4.2.5 Calling Methods on the Supertype
4.2.6 Abstract Classes
4.2.7 traits
4.2.8 final
4.2.9 Method Resolution
4.2.10 Inheriting from Function Types
4.2.11 Enumerations
4.3 Parametric Polymorphism
4.3.1 Parametric Types
4.3.2 Parametric Functions and Methods
4.3.2.1 Parametric Sorts
4.3.3 Type Bounds
4.3.3.1 Type Bounds and Sorting
4.4 End of Chapter Material
4.4.1 Summary of Concepts
4.4.2 Exercises
4.4.3 Projects
5 GUIs and Graphics
5.1 Project Analysis
5.2 ScalaFX
5.3 Drawing Program Layout
5.3.1 Menus
5.3.2 Panes
5.3.3 Controls
5.4 Drawing Program Design
5.5 Interactivity
5.5.1 Properties, Observables, and Bindings
5.6 Graphics
5.6.1 Shapes and Scene Graph
5.6.2 Canvas
5.7 Keyboard and Mouse Input
5.8 Animation
5.9 Other Elements of ScalaFX
5.10 End of Chapter Material
5.10.1 Summary of Concepts
5.10.2 Exercises
5.10.3 Projects
6 Other Collection Types
6.1 The scala.collection Packages
6.1.1 scala.collection.immutable
6.1.2 scala.collection.mutable
6.2 Sets
6.2.1 Running through Sets
6.2.2 Mutable vs. Immutable
6.2.3 Using a Set
6.3 Maps
6.3.1 Looping through a Map
6.3.2 Using Maps
6.4 Buffers
6.5 Collections as Functions
6.6 Project Integration
6.6.1 Commands
6.6.2 Adding Drawables
6.7 End of Chapter Material
6.7.1 Summary of Concepts
6.7.2 Exercises
6.7.3 Projects
7 Stacks and Queues
7.1 Abstract Data Types (ADTs)
7.2 Operations on Stacks and Queues
7.3 Real Meaning of O
7.4 O(1) Requirement
7.5 Array-Based Stack
7.6 Array-Based Queue
7.7 Unit Tests
7.7.1 Setup
7.7.2 Writing Tests
7.7.3 Test Suites
7.7.4 Test-Driven Development
7.8 RPN Calculator
7.9 Breadth-First Search
7.10 End of Chapter Material
7.10.1 Summary of Concepts
7.10.2 Exercises
7.10.3 Projects
8 Multithreading and Concurrency
8.1 The Multicore and Manycore Future
8.2 Threads (Conceptual)
8.3 Futures
8.3.1 Using foreach, map, and flatMap
8.3.2 Working in Parallel
8.3.3 Futures with for Loops
8.3.4 Getting a Result
8.4 Parallel Collections
8.4.1 Parallel for Loops
8.4.2 Parallel reduce, fold, and aggregate
8.4.3 When to Use Parallel Collections
8.5 Race Conditions
8.6 Synchronization
8.7 Deadlock
8.8 Multithreading in GUIs
8.9 Multithreaded Mandelbrot (Project Integration)
8.10 Actors and Akka
8.10.1 Akka
8.10.2 Actors Communicating
8.10.3 The Ask Pattern
8.10.4 Be Careful with sender and this
8.10.5 The Actor Hierarchy
8.10.6 Error Handling and the Actor Lifecycle
8.10.7 Routers (Project Integration)
8.10.8 More to Akka
8.11 End of Chapter Material
8.11.1 Summary of Concepts
8.11.2 Exercises
8.11.3 Projects
9 Low-Level Multithreading and Java Libraries
9.1 Basic Threads
9.1.1 Wait/Notify
9.1.2 Other Thread Methods
9.2 Concurrency Library
9.2.1 Executors and Executor Services
9.2.2 Callable and Java Futures
9.2.3 Parallel Data Structures
9.2.3.1 Shared Barriers
9.2.3.2 The Exchange
9.2.3.3 Assembly Line
9.2.3.4 Ticketed Passengers
9.2.3.5 Other Threadsafe Types
9.2.4 Atomic (java.util.concurrent.atomic)
9.2.5 Locks (java.util.concurrent.locks)
9.3 End of Chapter Material
9.3.1 Summary of Concepts
9.3.2 Exercises
9.3.3 Projects
10 Stream I/O and XML
10.1 The java.io Package
10.2 Streams for Files
10.3 Exceptions
10.3.1 try-catch-finally Revisited
10.3.2 Effect of Exceptions
10.3.3 Loan Pattern
10.4 Decorating Streams
10.4.1 Buffering
10.4.2 Binary Data
10.5 Serialization
10.5.1 Binary Serialization
10.5.2 XML Serialization
10.5.2.1 Nature of XML
10.5.2.2 XML in Scala Code
10.5.2.3 Serializing to XML
10.6 Saving Drawings (Project Integration)
10.7 End of Chapter Material
10.7.1 Summary of Concepts
10.7.2 Exercises
10.7.3 Projects
11 Networking
11.1 TCP and UDP
11.2 Sockets
11.2.1 TCP Sockets
11.2.2 UDP Sockets
11.2.3 Streams from Sockets
11.3 URLs
11.4 Remote Method Invocation (RMI)
11.5 Collaborative Drawing (Project Integration)
11.6 End of Chapter Material
11.6.1 Summary of Concepts
11.6.2 Exercises
11.6.3 Projects
12 Linked Lists
12.1 The List/Seq ADT
12.2 Nature of Arrays
12.3 Nature of Linked Lists
12.4 Mutable Singly Linked List
12.4.1 Implementing mutable.Buffer
12.4.2 Iterators
12.5 Mutable Doubly Linked List
12.6 Immutable Singly Linked List
12.7 Linked List-Based Stacks and Queues
12.7.1 Linked List-Based Stack
12.7.2 Linked List-Based Queue
12.8 Project Integration
12.9 End of Chapter Material
12.9.1 Summary of Concepts
12.9.2 Exercises
12.9.3 Projects
13 Priority Queues
13.1 Two Approaches
13.1.1 Searching by Priority
13.1.2 Sorted Linked List
13.1.3 Problems with Arrays
13.2 Project Integration: Discrete Event Simulation
13.2.1 Cell Splitting
13.2.2 Collision Handling
13.3 End of Chapter Material
13.3.1 Summary of Concepts
13.3.2 Exercises
13.3.3 Projects
14 Refactoring
14.1 Smells
14.2 Refactorings
14.2.1 Built-in Refactoring Methods
14.2.2 Introduce Null Object
14.2.3 Add and Remove Parameter
14.2.4 Cures for Switch Statements
14.2.5 Consolidate Conditional Expression
14.2.6 Convert Procedural Design to Objects
14.2.7 Encapsulate Collection
14.2.8 Push Down or Pull Up Field or Method
14.2.9 Substitute Algorithm
14.3 End of Chapter Material
14.3.1 Summary of Concepts
14.3.2 Exercises
14.3.3 Projects
15 Recursion
15.1 Refresher
15.2 Project Integration: A Maze
15.2.1 The Recursive Approach
15.2.2 Graphical Editing
15.2.3 Longest Path
15.2.4 Optimizing the Maze
15.3 Graph Traversals
15.4 Divide and Conquer
15.4.1 Merge Sort
15.4.2 Quicksort
15.4.3 Formula Parser
15.5 End of Chapter Material
15.5.1 Summary of Concepts
15.5.2 Exercises
15.5.3 Projects
16 Trees
16.1 General Trees
16.1.1 Implementations
16.1.2 Traversals
16.2 Project Integration: Formula Parsing
16.2.1 Formula Tree Traversals and In-Order Traversal
16.3 Binary Search Trees: Binary Trees as Maps
16.3.1 Order Analysis
16.3.2 Immutable BSTs
16.4 End of Chapter Material
16.4.1 Summary of Concepts
16.4.2 Exercises
16.4.3 Projects
17 Regular Expressions and Context-Free Parsers
17.1 Chomsky Grammars
17.1.1 Regular Grammars
17.1.2 Context-Free Grammars
17.1.3 Context-Sensitive Grammars
17.1.4 Recursively Enumerable Grammars
17.2 Regular Expressions
17.2.1 Characters and Character Classes
17.2.2 Logical Operators and Capturing Groups
17.2.3 Greedy Quantifiers
17.2.4 Boundary Requirements
17.2.5 Using Regular Expressions in Code
17.2.6 Drawback of Regular Expressions
17.3 Context-Free Parsers
17.3.1 Default Output
17.3.2 Specified Output
17.4 Project Integration
17.5 End of Chapter Material
17.5.1 Summary of Concepts
17.5.2 Exercises
17.5.3 Projects
18 Binary Heaps
18.1 Binary Heaps
18.1.1 Binary Heaps as Arrays
18.2 Heaps as Priority Queues
18.3 Heapsort
18.4 End of Chapter Material
18.4.1 Summary of Concepts
18.4.2 Exercises
18.4.3 Projects
19 Direct Access Binary Files
19.1 Random Access Files
19.1.1 Fixed Record Length
19.1.2 Indexed Variable Record Length
19.2 Linked Structures in Files
19.3 End of Chapter Material
19.3.1 Summary of Concepts
19.3.2 Exercises
19.3.3 Projects
20 Spatial Trees
20.1 Spatial Data and Grids
20.2 Quadtrees and Octrees
20.3 kD-Trees
20.4 Efficient Bouncing Balls
20.5 End of Chapter Material
20.5.1 Summary of Concepts
20.5.2 Exercises
20.5.3 Projects
21 Augmenting Trees
21.1 Augmentation of Trees
21.2 Balanced BSTs
21.2.1 Rotations
21.2.2 Implementation
21.3 Order-Statistic Trees: Trees as Sequences
21.4 Augmented Spatial Trees
21.5 End of Chapter Material
21.5.1 Summary of Concepts
21.5.2 Exercises
21.5.3 Projects
22 Hash Tables
22.1 Basics of Hash Tables
22.1.1 Hashing Functions
22.1.2 Hashing Methods
22.2 Chaining
22.3 Open Addressing
22.3.1 Probing Methods
22.3.2 Removing with Open Addressing
22.3.3 Open Addressing Implementation
22.4 End of Chapter Material
22.4.1 Summary of Concepts
22.4.2 Exercises
22.4.3 Projects
People also search for Object Orientation Abstraction and Data Structures Using Scala 2nd:
what is object oriented system design
what is object orientation in ooad
what is object oriented design
object oriented abstraction
object oriented programming and data structures
Tags: Object Orientation, Abstraction, Data Structures, Mark Lewis, Lisa Lacher


