Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Book 1: Getting Started with Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
CHAPTER 1: What Is Coding? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHAPTER 2: Programming for the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
CHAPTER 3: Becoming a Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Book 2: Basic Web Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
CHAPTER 1: Exploring Basic HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
CHAPTER 2: Getting More Out of HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
CHAPTER 3: Getting Stylish with CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
CHAPTER 4: Next Steps with CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
CHAPTER 5: Responsive Layouts with Flexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
CHAPTER 6: Styling with Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Book 3: Advanced Web Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
CHAPTER 1: What Is JavaScript? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
CHAPTER 2: Writing Your First JavaScript Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
CHAPTER 3: Working with Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
CHAPTER 4: Understanding Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
CHAPTER 5: Working with Operators, Expressions, and Statements . . . . . . . . . . . . 225
CHAPTER 6: Getting into the Flow with Loops and Branches . . . . . . . . . . . . . . . . . . . 241
CHAPTER 7: Getting Functional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
CHAPTER 8: Making and Using Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
CHAPTER 9: Controlling the Browser with the Window Object . . . . . . . . . . . . . . . . . 291
CHAPTER 10: Manipulating Documents with the DOM . . . . . . . . . . . . . . . . . . . . . . . . . 307
CHAPTER 11: Using Events in JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
CHAPTER 12: Integrating Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
CHAPTER 13: Understanding Callbacks and Closures . . . . . . . . . . . . . . . . . . . . . . . . . . 355
CHAPTER 14: Embracing AJAX and JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Book 4: Creating Mobile Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
CHAPTER 1: What Is Flutter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
CHAPTER 2: Setting Up Your Computer for Mobile App Development . . . . . . . . . . . 401
CHAPTER 3: “Hello” from Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
CHAPTER 4: Hello Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
CHAPTER 5: Making Things Happen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
,CHAPTER 6: Laying Things Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
CHAPTER 7: Interacting with the User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
CHAPTER 8: Navigation, Lists, and Other Goodies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
CHAPTER 9: Moving Right Along . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
Book 5: Getting Started with Python . . . . . . . . . . . . . . . . . . . . . . . . . 675
CHAPTER 1: Wrapping Your Head around Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
CHAPTER 2: Installing a Python Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
CHAPTER 3: Working with Real Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Book 6: Data Analysis with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
CHAPTER 1: Conditioning Your Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
CHAPTER 2: Shaping Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
CHAPTER 3: Getting a Crash Course in MatPlotLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
CHAPTER 4: Visualizing the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
Book 7: Career Building with Coding . . . . . . . . . . . . . . . . . . . . . . . . . 813
CHAPTER 1: Exploring Coding Career Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
CHAPTER 2: Exploring Undergraduate and Graduate Degrees . . . . . . . . . . . . . . . . . 829
CHAPTER 3: Training on the Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
CHAPTER 4: Coding Career Myths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
, Table of Contents
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Foolish Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Icons Used in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Beyond the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Where to Go from Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
BOOK 1: GETTING STARTED WITH CODING . . . . . . . . . . . . . . . . . . 5
CHAPTER 1: What Is Coding? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Defining What Code Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Following instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Writing code with some Angry Birds . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Understanding What Coding Can Do for You . . . . . . . . . . . . . . . . . . . . .10
Eating the world with software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Coding on the job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Scratching your own itch (and becoming rich and famous) . . . . . .13
Surveying the Types of Programming Languages . . . . . . . . . . . . . . . . .13
Comparing low-level and high-level programming languages . . . .14
Contrasting compiled code and interpreted code . . . . . . . . . . . . . .15
Programming for the web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Taking a Tour of a Web App Built with Code . . . . . . . . . . . . . . . . . . . . . .16
Defining the app’s purpose and scope . . . . . . . . . . . . . . . . . . . . . . . .16
Standing on the shoulders of giants . . . . . . . . . . . . . . . . . . . . . . . . . .17
CHAPTER 2: Programming for the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Displaying Web Pages on Your Desktop and Mobile Device . . . . . . . . .20
Hacking your favorite news website . . . . . . . . . . . . . . . . . . . . . . . . . .20
Understanding how the World Wide Web works . . . . . . . . . . . . . . .23
Watching out for your frontend and backend . . . . . . . . . . . . . . . . . .24
Defining web and mobile applications . . . . . . . . . . . . . . . . . . . . . . . .25
Coding Web Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Starting with HTML, CSS, and JavaScript . . . . . . . . . . . . . . . . . . . . . .26
Adding logic with Python, Ruby, or PHP . . . . . . . . . . . . . . . . . . . . . . .27
Coding Mobile Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Building mobile web apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Building native mobile apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
Deploying Web Applications in the Cloud . . . . . . . . . . . . . . . . . . . . . . . .31
Table of Contents vii