Systems Programming. List a directory. Callback functions. Anonymous functions. Select a set of files. Copying a set of files.
Asynchronous Programming. Manage async executions. How promises work. Chain operations. How real promises are different. Build tools with promises. Readability. Handle errors with async code.
Unit Testing. Structure unit testing. Separate registration, execution, and reporting. Structure test registration. Build a command-line interface for testing.
File Backup. Uniquely identify files. Back up files. Track which files have already been backed up. Test code that modifies files.
Data Tables. Implement data tables. Test the performance of the implementations. Efficient ways to save a table. Binary storage and effect on performance.
Pattern Matching. Match query selectors. Implement a simple regular expression matcher. Implement an extensible matcher.
Parsing Expressions. Break text into tokens. Turn a list of tokens into a tree.
Page Templates. Define the system. Keep track of values. Handle nodes. Implement control flow. How to know how to do all of the above.
Build Manager. Contents of a build manager. Specify that a file is out of date. Update out-of-date files. Add generic build rules. Next steps.
Layout Engine. Size rows and columns. Position rows and columns. Render elements. Wrap elements to fit. Support a subset of CSS.
File Interpolator. Evaluate JavaScript dynamically. Manage files. Find files. Interpolate pieces of code. Alternatives.
Module Loader. Implement namespaces. Load a module. Handle circular dependencies. Have a module load another module.
Style Checker. Parse JavaScript to create an AST. Find things in an AST. Apply checks. How the AST walker works and alternatives. Other kinds of possible analyses.
Code Generator. Replace a function with another function. Generate JS. Count how often functions are executed. Time function execution.
Documentation Generator. Extract documentation comments. Which input to handle. Avoid duplicating names. Code is Data.
Module Bundler. Create test cases. Find dependencies. Safely combine several files into one. Files accessing each other.
Package Manager. Semantic versioning. Find a consistent set of packages. Satisfy constraints. Do less work.
Virtual Machine. Architecture. Execute instructions. Assembly programs. How to store data.
Debugger. Starting point. Make a tracing debugger. Make the debugger interactive. Test and interactive application.
Also contains exercises at the end of each chapter.