Introduction |
|
xxviii | |
|
Part I Software Development and Design |
|
|
|
Chapter 1 Software Development Essentials |
|
|
2 | (24) |
|
"Do I Know This Already?" Quiz |
|
|
2 | (2) |
|
|
4 | (1) |
|
A Brief History of the Future |
|
|
4 | (5) |
|
|
5 | (1) |
|
Automation, Orchestration, and DevOps |
|
|
6 | (3) |
|
Software Architecture and Design |
|
|
9 | (1) |
|
Architecture Requirements |
|
|
10 | (4) |
|
|
13 | (1) |
|
Nonfunctional Requirements |
|
|
13 | (1) |
|
|
14 | (1) |
|
Software Development Lifecycle (SDLC) Approach |
|
|
15 | (2) |
|
Software Development Models |
|
|
17 | (4) |
|
|
17 | (1) |
|
Agile Software Development |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
Architecture and Code Reviews |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
24 | (1) |
|
Complete Tables and Lists from Memory |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
24 | (2) |
|
Chapter 2 Software Quality Attributes |
|
|
26 | (30) |
|
"Do I Know This Already?" Quiz |
|
|
26 | (3) |
|
|
29 | (1) |
|
Quality Attributes and Nonfunctional Requirements |
|
|
29 | (7) |
|
Brief Overview of the Most Common Quality Attributes |
|
|
29 | (6) |
|
Measuring Quality Attributes |
|
|
35 | (1) |
|
Modularity in Application Design |
|
|
36 | (5) |
|
|
36 | (1) |
|
Modularity Coding Best Practices |
|
|
37 | (3) |
|
Microservices and Modular Design |
|
|
40 | (1) |
|
Scalability in Application Design |
|
|
41 | (3) |
|
|
41 | (1) |
|
|
42 | (1) |
|
Practical Scalability in Application Design |
|
|
43 | (1) |
|
High Availability and Resiliency in Application Design |
|
|
44 | (9) |
|
Failure or Fault Detection |
|
|
46 | (1) |
|
Recovery: High Availability in Practice |
|
|
47 | (3) |
|
|
50 | (1) |
|
High Availability Planning and the Responsibilities of the Developer |
|
|
50 | (1) |
|
High Availability Deployment Models |
|
|
51 | (2) |
|
|
53 | (1) |
|
|
53 | (1) |
|
Complete Tables and Lists from Memory |
|
|
53 | (1) |
|
|
53 | (1) |
|
|
54 | (2) |
|
Chapter 3 Architectural Considerations and Performance Management |
|
|
56 | (30) |
|
"Do I Know This Already?" Quiz |
|
|
57 | (2) |
|
|
59 | (1) |
|
Maintainable Design and Implementation |
|
|
59 | (7) |
|
Maintaining a SOLID Design |
|
|
60 | (1) |
|
Single Responsibility Principle (SRP) |
|
|
61 | (1) |
|
Open-Closed Principle (OCP) |
|
|
62 | (1) |
|
Liskov's Substitution Principle (LSP) |
|
|
63 | (1) |
|
Interface Segregation Principle (ISP) |
|
|
64 | (1) |
|
Dependency Inversion Principle (DIP) |
|
|
65 | (1) |
|
Latency and Rate Limiting in Application Design and Performance |
|
|
66 | (7) |
|
Designing for Application Low Latency and High Performance |
|
|
69 | (1) |
|
|
69 | (1) |
|
|
69 | (4) |
|
Design and Implementation for Observability |
|
|
73 | (6) |
|
|
74 | (2) |
|
|
76 | (1) |
|
|
77 | (1) |
|
Good Documentation Practices: An Observability Reminder |
|
|
78 | (1) |
|
Database Selection Criteria |
|
|
79 | (4) |
|
Database Requirements Gathering |
|
|
80 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
83 | (1) |
|
|
83 | (1) |
|
Complete Tables and Lists from Memory |
|
|
83 | (1) |
|
|
84 | (1) |
|
|
84 | (2) |
|
Chapter 4 Version Control and Release Management with Git |
|
|
86 | (44) |
|
"Do I Know This Already?" Quiz |
|
|
86 | (2) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
88 | (33) |
|
|
89 | (1) |
|
|
89 | (1) |
|
|
89 | (1) |
|
|
90 | (1) |
|
Sample Branch and Pull Workflow |
|
|
90 | (14) |
|
|
104 | (1) |
|
|
105 | (1) |
|
|
105 | (1) |
|
|
105 | (1) |
|
Sample Fork and Pull Workflow |
|
|
106 | (15) |
|
|
121 | (6) |
|
What Is a Branching Strategy? |
|
|
121 | (1) |
|
The Most Important Factor When Selecting a Git Branching Strategy |
|
|
122 | (1) |
|
Popular Git Branching Strategies |
|
|
122 | (1) |
|
|
122 | (1) |
|
|
123 | (1) |
|
|
123 | (2) |
|
Recommended GitHub Settings |
|
|
125 | (1) |
|
Configuring the PR Merge Button |
|
|
125 | (1) |
|
Configuring a Branch Protection Rule to Require Code Reviews |
|
|
125 | (2) |
|
|
127 | (1) |
|
|
128 | (1) |
|
Complete Tables and Lists from Memory |
|
|
128 | (1) |
|
|
128 | (1) |
|
|
128 | (2) |
|
|
|
|
130 | (32) |
|
"Do I Know This Already?" Quiz |
|
|
130 | (2) |
|
|
132 | (1) |
|
|
132 | (6) |
|
|
133 | (1) |
|
|
134 | (1) |
|
|
134 | (1) |
|
|
135 | (1) |
|
|
135 | (1) |
|
Jeff Bezos's API Mandate: How the AWS API-Driven Cloud Was Born |
|
|
136 | (2) |
|
|
138 | (9) |
|
|
144 | (2) |
|
|
146 | (1) |
|
|
147 | (10) |
|
|
149 | (1) |
|
|
150 | (1) |
|
|
151 | (1) |
|
|
152 | (2) |
|
|
154 | (1) |
|
|
155 | (2) |
|
|
157 | (3) |
|
|
158 | (2) |
|
|
160 | (1) |
|
|
160 | (1) |
|
Complete Tables and Lists from Memory |
|
|
160 | (1) |
|
|
160 | (1) |
|
|
161 | (1) |
|
Chapter 6 API Development |
|
|
162 | (30) |
|
"Do I Know This Already?" Quiz |
|
|
163 | (2) |
|
|
165 | (1) |
|
|
165 | (12) |
|
Code Generation Client API Libraries for IMDb |
|
|
165 | (9) |
|
|
174 | (1) |
|
Making Calls to IMDb Using a CLI Program |
|
|
174 | (3) |
|
API Design Considerations |
|
|
177 | (12) |
|
API Authentication Models |
|
|
179 | (2) |
|
Flow Control (Pagination vs. Streaming) |
|
|
181 | (3) |
|
Error Handling, Timeouts, and Rate Limiting |
|
|
184 | (4) |
|
|
188 | (1) |
|
|
189 | (1) |
|
|
189 | (1) |
|
Complete Tables and Lists from Memory |
|
|
189 | (1) |
|
|
189 | (1) |
|
|
189 | (3) |
|
Part III Application Development, Deployment, and Security |
|
|
|
Chapter 7 Application Deployment |
|
|
192 | (54) |
|
"Do I Know This Already?" Quiz |
|
|
193 | (1) |
|
|
194 | (1) |
|
The Evolution of Application Responsibilities |
|
|
194 | (7) |
|
The Hybridization of Development and Operations |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
196 | (1) |
|
The Emergence of the Site Reliability Engineer(ing) |
|
|
196 | (1) |
|
SRE Responsibilities and Tenets |
|
|
197 | (1) |
|
|
198 | (1) |
|
Continuous Integration/Continuous Delivery (Deployment) |
|
|
198 | (1) |
|
Continuous Integration (CI) |
|
|
199 | (1) |
|
Continuous Delivery: One of the CDs |
|
|
200 | (1) |
|
Continuous Deployment: The Other CD |
|
|
200 | (1) |
|
CI/CD Pipeline Implementation |
|
|
201 | (17) |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
205 | (1) |
|
|
205 | (1) |
|
|
205 | (2) |
|
Adding Deployment to Integration |
|
|
207 | (1) |
|
Deploying to Infrastructure (Terraform + Atlantis) |
|
|
207 | (6) |
|
Deploying Applications (Flux + Kubernetes) |
|
|
213 | (5) |
|
Application Deployment Methods over Time |
|
|
218 | (20) |
|
The 2000s: Sysadmins, Terminals, and SSH |
|
|
218 | (2) |
|
The 2010s: Automated Configuration Management |
|
|
220 | (4) |
|
The 2020s: The Clouds Never Looked So Bright |
|
|
224 | (1) |
|
Managed Kubernetes (e.g., GKE) |
|
|
224 | (3) |
|
Containers on Serverless Clouds (e.g., AWS ECS on Fargate) |
|
|
227 | (7) |
|
Serverless Functions (e.g., AWS Lambda) |
|
|
234 | (4) |
|
Software Practices for Operability: The 12-Factor App |
|
|
238 | (5) |
|
|
239 | (1) |
|
|
239 | (1) |
|
|
239 | (1) |
|
Factor 4 Backing Services |
|
|
240 | (1) |
|
Factor 5 Build, Release, Run |
|
|
240 | (1) |
|
|
240 | (1) |
|
|
241 | (1) |
|
|
241 | (1) |
|
|
241 | (1) |
|
Factor 10 Dev/Prod Parity |
|
|
241 | (1) |
|
|
242 | (1) |
|
Factor 12 Admin Processes |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
Complete Tables and Lists from Memory |
|
|
244 | (1) |
|
|
244 | (1) |
|
|
244 | (2) |
|
Chapter 8 Security in Application Design |
|
|
246 | (40) |
|
"Do I Know This Already?" Quiz |
|
|
247 | (1) |
|
|
248 | (2) |
|
|
250 | (2) |
|
Personally Identifiable Information |
|
|
250 | (1) |
|
|
250 | (1) |
|
Laws, Regulations, and Standards for Protecting Privacy |
|
|
251 | (1) |
|
|
252 | (2) |
|
Public Key Infrastructure (PKI) |
|
|
254 | (8) |
|
|
256 | (1) |
|
Hierarchical Multiple CA Infrastructure |
|
|
257 | (1) |
|
TLS, PKI, and Web Applications Security |
|
|
257 | (4) |
|
|
261 | (1) |
|
Securing Web and Mobile Applications |
|
|
262 | (4) |
|
|
263 | (1) |
|
|
264 | (2) |
|
OAuth Authorization Framework |
|
|
266 | (17) |
|
|
266 | (2) |
|
OAuth 2.0 Two-Legged Authorization |
|
|
268 | (1) |
|
OAuth 2.0 Three-Legged Authorization |
|
|
269 | (2) |
|
Additional OAuth Authorization Code Grant Types |
|
|
271 | (1) |
|
OAuth 2.0 Client Credentials |
|
|
271 | (1) |
|
Resource Owner Password Credential Flow |
|
|
272 | (3) |
|
|
275 | (1) |
|
OAuth 2.0 Authorization Code Flow |
|
|
276 | (2) |
|
|
278 | (2) |
|
|
280 | (1) |
|
OAuth 2.0 Device Code Flow |
|
|
281 | (2) |
|
|
283 | (1) |
|
|
283 | (1) |
|
Complete Tables and Lists from Memory |
|
|
284 | (1) |
|
|
284 | (1) |
|
|
284 | (2) |
|
Part IV Infrastructure and Automation |
|
|
|
|
286 | (24) |
|
"Do I Know This Already?" Quiz |
|
|
286 | (2) |
|
|
288 | (1) |
|
|
288 | (2) |
|
Methods of Network Provisioning |
|
|
290 | (7) |
|
|
291 | (3) |
|
|
294 | (3) |
|
|
297 | (1) |
|
Element Management Systems |
|
|
297 | (3) |
|
|
299 | (1) |
|
Zero-Touch Provisioning (ZTP) |
|
|
300 | (3) |
|
Atomic or SDN-Like/Controller-Based Networking |
|
|
303 | (2) |
|
Advanced Concepts--Intent-Based Networking |
|
|
305 | (2) |
|
|
307 | (1) |
|
|
307 | (1) |
|
|
307 | (1) |
|
Complete Tables and Lists from Memory |
|
|
307 | (1) |
|
|
307 | (1) |
|
|
308 | (2) |
|
|
310 | (36) |
|
"Do I Know This Already?" Quiz |
|
|
311 | (2) |
|
|
313 | (1) |
|
Challenges Being Addressed |
|
|
313 | (16) |
|
Differences of Equipment and Functionality |
|
|
314 | (2) |
|
Proximity of Management Tools and Support Staff |
|
|
316 | (1) |
|
Speed of Service Provisioning |
|
|
317 | (2) |
|
Accuracy of Service Provisioning |
|
|
319 | (4) |
|
|
323 | (6) |
|
|
329 | (1) |
|
Software-Defined Networking (SDN) |
|
|
329 | (6) |
|
What Is SDN and Network Programmability? |
|
|
329 | (1) |
|
|
330 | (1) |
|
|
331 | (1) |
|
|
331 | (1) |
|
|
331 | (1) |
|
|
332 | (1) |
|
|
332 | (1) |
|
|
332 | (1) |
|
Use Cases and Problems Solved with SDN |
|
|
332 | (2) |
|
Overview of Network Controllers |
|
|
334 | (1) |
|
|
335 | (1) |
|
Application Programming Interfaces (APIs) |
|
|
335 | (1) |
|
|
336 | (6) |
|
|
337 | (1) |
|
|
337 | (1) |
|
|
337 | (1) |
|
Payload Data Formats JSON XML |
|
|
338 | (1) |
|
|
338 | (2) |
|
|
340 | (2) |
|
Cross-Domain, Technology-Agnostic Orchestration (CDTAO) |
|
|
342 | (1) |
|
Impact to IT Service Management and Security |
|
|
343 | (1) |
|
|
344 | (1) |
|
|
344 | (1) |
|
Complete Tables and Lists from Memory |
|
|
345 | (1) |
|
|
345 | (1) |
|
|
345 | (1) |
|
Chapter 11 Netconf And Restconf |
|
|
346 | (40) |
|
"Do I Know This Already?" Quiz |
|
|
346 | (2) |
|
|
348 | (1) |
|
|
348 | (3) |
|
|
349 | (1) |
|
|
350 | (1) |
|
|
350 | (1) |
|
|
351 | (1) |
|
Atomic and Model-Driven Configuration Management |
|
|
351 | (3) |
|
|
354 | (11) |
|
Enabling NETCONF on IOS XE |
|
|
355 | (1) |
|
Enabling NETCONF on IOS XR |
|
|
356 | (1) |
|
Enabling NETCONF on NX-OS |
|
|
357 | (1) |
|
Basic Manual Use of NETCONF |
|
|
358 | (7) |
|
|
365 | (6) |
|
The Evolution with RESTCONF |
|
|
371 | (1) |
|
The RESTCONF Protocol Stack |
|
|
372 | (1) |
|
|
372 | (1) |
|
RESTCONF and Authentication |
|
|
373 | (1) |
|
|
373 | (2) |
|
Performing a RESTCONF GET Operation with cURL |
|
|
375 | (2) |
|
Performing RESTCONF GET Operations with the Postman Utility |
|
|
377 | (5) |
|
Management Solutions Using NETCONF and RESTCONF |
|
|
382 | (1) |
|
|
383 | (1) |
|
|
383 | (1) |
|
Complete Tables and Lists from Memory |
|
|
383 | (1) |
|
|
383 | (1) |
|
|
384 | (2) |
|
Chapter 12 Model-Driven Telemetry |
|
|
386 | (58) |
|
"Do I Know This Already?" Quiz |
|
|
387 | (2) |
|
|
389 | (1) |
|
Transformation of Inventory, Status, Performance, and Fault Monitoring |
|
|
389 | (2) |
|
Scaling with the Push Model |
|
|
391 | (2) |
|
How to Implement Model-Driven Telemetry |
|
|
393 | (14) |
|
Dial-In and Dial-Out Mode |
|
|
395 | (1) |
|
|
395 | (1) |
|
|
396 | (2) |
|
Configuring MDT in IOS-XR |
|
|
398 | (1) |
|
Configuring Dial-Out Mode |
|
|
398 | (1) |
|
Step 1 Create a Destination Group |
|
|
398 | (2) |
|
Step 2 Create a Sensor Group |
|
|
400 | (1) |
|
Step 3 Create a Subscription |
|
|
400 | (1) |
|
Step 4 Verify the Dial-Out Configuration |
|
|
401 | (1) |
|
|
402 | (1) |
|
|
402 | (2) |
|
Step 2 Create a Sensor Group |
|
|
404 | (1) |
|
Step 3 Create a Subscription |
|
|
405 | (1) |
|
Step 4 Validate the Configuration |
|
|
405 | (2) |
|
Picking Sensor Paths and Metrics |
|
|
407 | (16) |
|
Researching Public Documentation |
|
|
407 | (1) |
|
Extracting Model Support from the Device--NETCONF Manually |
|
|
408 | (2) |
|
Extracting Model Support from the Device--Python and NETCONF |
|
|
410 | (4) |
|
Digging into the YANG Models |
|
|
414 | (1) |
|
Installing Docker to the Linux VM |
|
|
414 | (1) |
|
Installing the YANG Suite Docker Image to the Linux VM |
|
|
415 | (8) |
|
Practical Application of Streaming Telemetry |
|
|
423 | (11) |
|
Using Telegraph, InfluxDB, and Grafana |
|
|
426 | (1) |
|
|
426 | (2) |
|
|
428 | (6) |
|
Beyond MDT--Event-Driven Telemetry |
|
|
434 | (7) |
|
Other Considerations--Disk Usage |
|
|
440 | (1) |
|
Frequency of Telemetry Push |
|
|
441 | (1) |
|
|
441 | (1) |
|
|
441 | (1) |
|
Complete Tables and Lists from Memory |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
442 | (2) |
|
Chapter 13 Open-Source Solutions |
|
|
444 | (64) |
|
"Do I Know This Already?" Quiz |
|
|
445 | (2) |
|
|
447 | (1) |
|
Infrastructure-as-Code (IaC) Concepts |
|
|
447 | (2) |
|
Imperative and Declarative Models |
|
|
448 | (1) |
|
Provisioning or Configuration Management |
|
|
449 | (1) |
|
Differences Between Agent and Agentless Solutions |
|
|
450 | (1) |
|
Agent-Based Solutions--Puppet and Chef |
|
|
450 | (24) |
|
Agentless Solutions--Ansible and Terraform |
|
|
474 | (27) |
|
Installing Ansible from the Package Manager |
|
|
474 | (2) |
|
Installing the Latest Ansible from a Virtual Python Environment with pip |
|
|
476 | (5) |
|
Configuring Ansible Inventory |
|
|
481 | (1) |
|
Creating a Project-Level Inventory File |
|
|
482 | (1) |
|
Creating an Ansible Playbook to Obtain show Command Results |
|
|
483 | (4) |
|
Filtering, Templating, and Jinja2 |
|
|
487 | (1) |
|
Using Ansible to Modify Device Configurations |
|
|
488 | (5) |
|
|
493 | (1) |
|
|
494 | (2) |
|
|
496 | (5) |
|
Cisco Solutions Enabled for IaC |
|
|
501 | (1) |
|
|
502 | (1) |
|
|
502 | (1) |
|
Complete Tables and Lists from Memory |
|
|
503 | (1) |
|
|
503 | (1) |
|
|
503 | (5) |
|
Chapter 14 Software Configuration Management |
|
|
508 | (16) |
|
"Do I Know This Already?" Quiz |
|
|
508 | (2) |
|
|
510 | (1) |
|
Software Configuration Management (SCM) |
|
|
510 | (9) |
|
SCM Definitions and Standards |
|
|
510 | (1) |
|
|
511 | (1) |
|
Which SCM Process Is Best for You? |
|
|
512 | (1) |
|
|
512 | (3) |
|
|
515 | (3) |
|
Terraform or Ansible: A High-Level Comparison |
|
|
518 | (1) |
|
Business and Technical Requirements |
|
|
519 | (2) |
|
|
519 | (1) |
|
|
520 | (1) |
|
|
521 | (1) |
|
|
521 | (1) |
|
Complete Tables and Lists from Memory |
|
|
522 | (1) |
|
|
522 | (1) |
|
|
522 | (2) |
|
Chapter 15 Hosting an Application on a Network Device |
|
|
524 | (44) |
|
"Do I Know This Already?" Quiz |
|
|
524 | (3) |
|
|
527 | (1) |
|
Benefits of Edge Computing |
|
|
527 | (5) |
|
Virtualization Technologies |
|
|
527 | (1) |
|
|
528 | (1) |
|
|
528 | (1) |
|
|
529 | (1) |
|
|
530 | (2) |
|
Application Container Ideas |
|
|
532 | (1) |
|
Platforms Supporting Application Containers |
|
|
533 | (1) |
|
How to Implement Application Containers |
|
|
534 | (29) |
|
|
534 | (2) |
|
Enabling Application Hosting Framework |
|
|
536 | (2) |
|
Using Cisco DNA Center for App Hosting |
|
|
538 | (9) |
|
Using Cisco IOx Local Manager for App Hosting |
|
|
547 | (6) |
|
Using the Command-Line Interface for App Hosting |
|
|
553 | (3) |
|
Interacting with App Hosted iPerf3 |
|
|
556 | (7) |
|
Best Practices for Managing Application Containers |
|
|
563 | (2) |
|
|
565 | (1) |
|
|
565 | (1) |
|
Complete Tables and Lists from Memory |
|
|
565 | (1) |
|
|
565 | (1) |
|
|
566 | (2) |
|
|
|
Chapter 16 Cisco Platforms |
|
|
568 | (80) |
|
"Do I Know This Already?" Quiz |
|
|
568 | (3) |
|
|
571 | (1) |
|
|
571 | (11) |
|
Enabling the Webex REST API/SDK Access |
|
|
572 | (1) |
|
|
573 | (2) |
|
|
575 | (2) |
|
|
577 | (5) |
|
|
582 | (10) |
|
Enabling API/SDK Access to Firepower |
|
|
582 | (1) |
|
Firepower API Documentation |
|
|
583 | (9) |
|
|
592 | (9) |
|
Enabling API/SDK Access to Meraki |
|
|
592 | (1) |
|
|
593 | (1) |
|
|
594 | (2) |
|
|
596 | (5) |
|
|
601 | (10) |
|
Enabling API Access to Intersight |
|
|
601 | (2) |
|
Intersight API Documentation |
|
|
603 | (2) |
|
Intersight SDK Documentation |
|
|
605 | (1) |
|
|
606 | (5) |
|
|
611 | (17) |
|
Enabling API Access to UCS Manager |
|
|
611 | (1) |
|
UCS Manager API Documentation |
|
|
611 | (6) |
|
|
617 | (5) |
|
PowerShell SDK Documentation |
|
|
622 | (6) |
|
Additional UCS Manager Programmability Resources |
|
|
628 | (1) |
|
|
628 | (11) |
|
Enabling API/SDK Access to DNA Center |
|
|
630 | (1) |
|
DNA Center API Documentation |
|
|
631 | (4) |
|
DNA Center SDK Documentation |
|
|
635 | (2) |
|
|
637 | (2) |
|
|
639 | (7) |
|
|
646 | (1) |
|
|
646 | (2) |
|
Chapter 17 Final Preparation |
|
|
648 | (6) |
|
|
648 | (1) |
|
Tools for Final Preparation |
|
|
649 | (3) |
|
Pearson Cert Practice Test Engine and Questions on the Website |
|
|
649 | (1) |
|
Accessing the Pearson Test Prep Software Online |
|
|
649 | (1) |
|
Accessing the Pearson Test Prep Software Offline |
|
|
649 | (1) |
|
|
650 | (1) |
|
|
651 | (1) |
|
|
651 | (1) |
|
Chapter-Ending Review Tools |
|
|
652 | (1) |
|
Suggested Plan for Final Review/Study |
|
|
652 | (1) |
|
|
652 | (2) |
Appendix A Answers to the "Do I Know This Already?" Questions |
|
654 | (18) |
Appendix B Cisco DevNet Professional DEVCOR 350-901 Exam Updates |
|
672 | (3) |
Glossary |
|
675 | (9) |
Index |
|
684 | |
Online Elements |
|
Appendix C Memory Tables |
|
Appendix D Memory Tables Answer Key Appendix E Dashboard Basics Glossary |
|