Author: Gary McLean Hall
Publisher: Microsoft Press
ISBN: 1509302611
Category : Computers
Languages : en
Pages : 854
Book Description
Write code that can adapt to changes. By applying this book’s principles, you can create code that accommodates new requirements and unforeseen scenarios without significant rewrites. Gary McLean Hall describes Agile best practices, principles, and patterns for designing and writing code that can evolve more quickly and easily, with fewer errors, because it doesn’t impede change. Now revised, updated, and expanded, Adaptive Code, Second Edition adds indispensable practical insights on Kanban, dependency inversion, and creating reusable abstractions. Drawing on over a decade of Agile consulting and development experience, McLean Hall has updated his best-seller with deeper coverage of unit testing, refactoring, pure dependency injection, and more. Master powerful new ways to: • Write code that enables and complements Scrum, Kanban, or any other Agile framework • Develop code that can survive major changes in requirements • Plan for adaptability by using dependencies, layering, interfaces, and design patterns • Perform unit testing and refactoring in tandem, gaining more value from both • Use the “golden master” technique to make legacy code adaptive • Build SOLID code with single-responsibility, open/closed, and Liskov substitution principles • Create smaller interfaces to support more-diverse client and architectural needs • Leverage dependency injection best practices to improve code adaptability • Apply dependency inversion with the Stairway pattern, and avoid related anti-patterns About You This book is for programmers of all skill levels seeking more-practical insight into design patterns, SOLID principles, unit testing, refactoring, and related topics. Most readers will have programmed in C#, Java, C++, or similar object-oriented languages, and will be familiar with core procedural programming techniques.
Adaptive Code
Author: Gary McLean Hall
Publisher: Microsoft Press
ISBN: 1509302611
Category : Computers
Languages : en
Pages : 854
Book Description
Write code that can adapt to changes. By applying this book’s principles, you can create code that accommodates new requirements and unforeseen scenarios without significant rewrites. Gary McLean Hall describes Agile best practices, principles, and patterns for designing and writing code that can evolve more quickly and easily, with fewer errors, because it doesn’t impede change. Now revised, updated, and expanded, Adaptive Code, Second Edition adds indispensable practical insights on Kanban, dependency inversion, and creating reusable abstractions. Drawing on over a decade of Agile consulting and development experience, McLean Hall has updated his best-seller with deeper coverage of unit testing, refactoring, pure dependency injection, and more. Master powerful new ways to: • Write code that enables and complements Scrum, Kanban, or any other Agile framework • Develop code that can survive major changes in requirements • Plan for adaptability by using dependencies, layering, interfaces, and design patterns • Perform unit testing and refactoring in tandem, gaining more value from both • Use the “golden master” technique to make legacy code adaptive • Build SOLID code with single-responsibility, open/closed, and Liskov substitution principles • Create smaller interfaces to support more-diverse client and architectural needs • Leverage dependency injection best practices to improve code adaptability • Apply dependency inversion with the Stairway pattern, and avoid related anti-patterns About You This book is for programmers of all skill levels seeking more-practical insight into design patterns, SOLID principles, unit testing, refactoring, and related topics. Most readers will have programmed in C#, Java, C++, or similar object-oriented languages, and will be familiar with core procedural programming techniques.
Publisher: Microsoft Press
ISBN: 1509302611
Category : Computers
Languages : en
Pages : 854
Book Description
Write code that can adapt to changes. By applying this book’s principles, you can create code that accommodates new requirements and unforeseen scenarios without significant rewrites. Gary McLean Hall describes Agile best practices, principles, and patterns for designing and writing code that can evolve more quickly and easily, with fewer errors, because it doesn’t impede change. Now revised, updated, and expanded, Adaptive Code, Second Edition adds indispensable practical insights on Kanban, dependency inversion, and creating reusable abstractions. Drawing on over a decade of Agile consulting and development experience, McLean Hall has updated his best-seller with deeper coverage of unit testing, refactoring, pure dependency injection, and more. Master powerful new ways to: • Write code that enables and complements Scrum, Kanban, or any other Agile framework • Develop code that can survive major changes in requirements • Plan for adaptability by using dependencies, layering, interfaces, and design patterns • Perform unit testing and refactoring in tandem, gaining more value from both • Use the “golden master” technique to make legacy code adaptive • Build SOLID code with single-responsibility, open/closed, and Liskov substitution principles • Create smaller interfaces to support more-diverse client and architectural needs • Leverage dependency injection best practices to improve code adaptability • Apply dependency inversion with the Stairway pattern, and avoid related anti-patterns About You This book is for programmers of all skill levels seeking more-practical insight into design patterns, SOLID principles, unit testing, refactoring, and related topics. Most readers will have programmed in C#, Java, C++, or similar object-oriented languages, and will be familiar with core procedural programming techniques.
Adaptive Code Via C#
Author: Gary McLean Hall
Publisher: Pearson Education
ISBN: 0735683204
Category : Computers
Languages : en
Pages : 433
Book Description
"Your process may be agile, but are you building agility directly into the code base? This book teaches .NET programmers how to give code the flexibility to adapt to changing requirements and customer demands by applying cutting-edge techniques, including SOLID principles, design patterns, and other industry best practices. Understand why composition is preferable to inheritance and how flexible the interface really can be; gain deep knowledge of key design patterns and anti-patterns, when to apply them, and how to give their code agility; bridge the gap between the theory behind SOLID principles, design patterns, and industry best practices by pragmatically solving real-world problems; get code samples written in upcoming version of Microsoft Visual C#. Topics include: Agile with Scrum process; dependencies and layering; the interface; patterns and anti-patterns; introduction to SOLID principles, including open/closed and dependency interjection; and using application templates"--Publisher's description.
Publisher: Pearson Education
ISBN: 0735683204
Category : Computers
Languages : en
Pages : 433
Book Description
"Your process may be agile, but are you building agility directly into the code base? This book teaches .NET programmers how to give code the flexibility to adapt to changing requirements and customer demands by applying cutting-edge techniques, including SOLID principles, design patterns, and other industry best practices. Understand why composition is preferable to inheritance and how flexible the interface really can be; gain deep knowledge of key design patterns and anti-patterns, when to apply them, and how to give their code agility; bridge the gap between the theory behind SOLID principles, design patterns, and industry best practices by pragmatically solving real-world problems; get code samples written in upcoming version of Microsoft Visual C#. Topics include: Agile with Scrum process; dependencies and layering; the interface; patterns and anti-patterns; introduction to SOLID principles, including open/closed and dependency interjection; and using application templates"--Publisher's description.
Adaptive Web Design
Author: Aaron Gustafson
Publisher: New Riders
ISBN: 0134216202
Category : Computers
Languages : en
Pages : 385
Book Description
Building an elegant, functional website requires more than just knowing how to code. In Adaptive Web Design, Second Edition, you’ll learn how to use progressive enhancement to build websites that work anywhere, won’t break, are accessible by anyone—on any device—and are designed to work well into the future. This new edition of Adaptive Web Design frames even more of the web design process in the lens of progressive enhancement. You will learn how content strategy, UX, HTML, CSS, responsive web design, JavaScript, server-side programming, and performance optimization all come together in the service of users on whatever device they happen to use to access the web. Understanding progressive enhancement will make you a better web professional, whether you’re a content strategist, information architect, UX designer, visual designer, front-end developer, back-end developer, or project manager. It will enable you to visualize experience as a continuum and craft interfaces that are capable of reaching more users while simultaneously costing less money to develop. When you’ve mastered the tenets and concepts of this book, you will see the web in a whole new way and gain web design superpowers that will make you invaluable to your employer, clients, and the web as a whole. Visit http://adaptivewebdesign.info to learn more.
Publisher: New Riders
ISBN: 0134216202
Category : Computers
Languages : en
Pages : 385
Book Description
Building an elegant, functional website requires more than just knowing how to code. In Adaptive Web Design, Second Edition, you’ll learn how to use progressive enhancement to build websites that work anywhere, won’t break, are accessible by anyone—on any device—and are designed to work well into the future. This new edition of Adaptive Web Design frames even more of the web design process in the lens of progressive enhancement. You will learn how content strategy, UX, HTML, CSS, responsive web design, JavaScript, server-side programming, and performance optimization all come together in the service of users on whatever device they happen to use to access the web. Understanding progressive enhancement will make you a better web professional, whether you’re a content strategist, information architect, UX designer, visual designer, front-end developer, back-end developer, or project manager. It will enable you to visualize experience as a continuum and craft interfaces that are capable of reaching more users while simultaneously costing less money to develop. When you’ve mastered the tenets and concepts of this book, you will see the web in a whole new way and gain web design superpowers that will make you invaluable to your employer, clients, and the web as a whole. Visit http://adaptivewebdesign.info to learn more.
Learning for Adaptive and Reactive Robot Control
Author: Aude Billard
Publisher: MIT Press
ISBN: 0262367017
Category : Technology & Engineering
Languages : en
Pages : 425
Book Description
Methods by which robots can learn control laws that enable real-time reactivity using dynamical systems; with applications and exercises. This book presents a wealth of machine learning techniques to make the control of robots more flexible and safe when interacting with humans. It introduces a set of control laws that enable reactivity using dynamical systems, a widely used method for solving motion-planning problems in robotics. These control approaches can replan in milliseconds to adapt to new environmental constraints and offer safe and compliant control of forces in contact. The techniques offer theoretical advantages, including convergence to a goal, non-penetration of obstacles, and passivity. The coverage of learning begins with low-level control parameters and progresses to higher-level competencies composed of combinations of skills. Learning for Adaptive and Reactive Robot Control is designed for graduate-level courses in robotics, with chapters that proceed from fundamentals to more advanced content. Techniques covered include learning from demonstration, optimization, and reinforcement learning, and using dynamical systems in learning control laws, trajectory planning, and methods for compliant and force control . Features for teaching in each chapter: applications, which range from arm manipulators to whole-body control of humanoid robots; pencil-and-paper and programming exercises; lecture videos, slides, and MATLAB code examples available on the author’s website . an eTextbook platform website offering protected material[EPS2] for instructors including solutions.
Publisher: MIT Press
ISBN: 0262367017
Category : Technology & Engineering
Languages : en
Pages : 425
Book Description
Methods by which robots can learn control laws that enable real-time reactivity using dynamical systems; with applications and exercises. This book presents a wealth of machine learning techniques to make the control of robots more flexible and safe when interacting with humans. It introduces a set of control laws that enable reactivity using dynamical systems, a widely used method for solving motion-planning problems in robotics. These control approaches can replan in milliseconds to adapt to new environmental constraints and offer safe and compliant control of forces in contact. The techniques offer theoretical advantages, including convergence to a goal, non-penetration of obstacles, and passivity. The coverage of learning begins with low-level control parameters and progresses to higher-level competencies composed of combinations of skills. Learning for Adaptive and Reactive Robot Control is designed for graduate-level courses in robotics, with chapters that proceed from fundamentals to more advanced content. Techniques covered include learning from demonstration, optimization, and reinforcement learning, and using dynamical systems in learning control laws, trajectory planning, and methods for compliant and force control . Features for teaching in each chapter: applications, which range from arm manipulators to whole-body control of humanoid robots; pencil-and-paper and programming exercises; lecture videos, slides, and MATLAB code examples available on the author’s website . an eTextbook platform website offering protected material[EPS2] for instructors including solutions.
Adaptive Code via C#
Author: Gary McLean Hall
Publisher: Microsoft Press
ISBN: 0133979733
Category : Computers
Languages : en
Pages : 433
Book Description
Agile coding with design patterns and SOLID principles As every developer knows, requirements are subject to change. But when you build adaptability into your code, you can respond to change more easily and avoid disruptive rework. Focusing on Agile programming, this book describes the best practices, principles, and patterns that enable you to create flexible, adaptive code--and deliver better business value. Expert guidance to bridge the gap between theory and practice Get grounded in Scrum: artifacts, roles, metrics, phases Organize and manage architectural dependencies Review best practices for patterns and anti-patterns Master SOLID principles: single-responsibility, open/closed, Liskov substitution Manage the versatility of interfaces for adaptive code Perform unit testing and refactoring in tandem See how delegation and abstraction impact code adaptability Learn best ways to implement dependency interjection Apply what you learn to a pragmatic, agile coding project Get code samples at: http://github.com/garymclean/AdaptiveCode
Publisher: Microsoft Press
ISBN: 0133979733
Category : Computers
Languages : en
Pages : 433
Book Description
Agile coding with design patterns and SOLID principles As every developer knows, requirements are subject to change. But when you build adaptability into your code, you can respond to change more easily and avoid disruptive rework. Focusing on Agile programming, this book describes the best practices, principles, and patterns that enable you to create flexible, adaptive code--and deliver better business value. Expert guidance to bridge the gap between theory and practice Get grounded in Scrum: artifacts, roles, metrics, phases Organize and manage architectural dependencies Review best practices for patterns and anti-patterns Master SOLID principles: single-responsibility, open/closed, Liskov substitution Manage the versatility of interfaces for adaptive code Perform unit testing and refactoring in tandem See how delegation and abstraction impact code adaptability Learn best ways to implement dependency interjection Apply what you learn to a pragmatic, agile coding project Get code samples at: http://github.com/garymclean/AdaptiveCode
Writing Secure Code
Author: Michael Howard
Publisher: Pearson Education
ISBN: 0735617228
Category : Computers
Languages : en
Pages : 800
Book Description
Howard and LeBlanc (both are security experts with Microsoft) discuss the need for security and outline its general principles before outlining secure coding techniques. Testing, installation, documentation, and error messages are also covered. Appendices discuss dangerous APIs, dismiss pathetic excuses, and provide security checklists. The book explains how systems can be attacked, uses anecdotes to illustrate common mistakes, and offers advice on making systems secure. Annotation copyrighted by Book News, Inc., Portland, OR.
Publisher: Pearson Education
ISBN: 0735617228
Category : Computers
Languages : en
Pages : 800
Book Description
Howard and LeBlanc (both are security experts with Microsoft) discuss the need for security and outline its general principles before outlining secure coding techniques. Testing, installation, documentation, and error messages are also covered. Appendices discuss dangerous APIs, dismiss pathetic excuses, and provide security checklists. The book explains how systems can be attacked, uses anecdotes to illustrate common mistakes, and offers advice on making systems secure. Annotation copyrighted by Book News, Inc., Portland, OR.
Solid Code
Author: Donis Marshall
Publisher: Microsoft Press
ISBN: 0735638519
Category : Computers
Languages : en
Pages : 453
Book Description
Get best-in-class engineering practices to help you write more-robust, bug-free code. Two Microsoft .NET development experts share real-world examples and proven methods for optimizing the software development life cycle—from avoiding costly programming pitfalls to making your development team more efficient. Managed code developers at all levels will find design, prototyping, implementation, debugging, and testing tips to boost the quality of their code—today. Optimize each stage of the development process—from design to testing—and produce higher-quality applications. Use metaprogramming to reduce code complexity, while increasing flexibility and maintainability Treat performance as a feature—and manage it throughout the development life cycle Apply best practices for application scalability Employ preventative security measures to ward off malicious attacks Practice defensive programming to catch bugs before run time Incorporate automated builds, code analysis, and testing into the daily engineering process Implement better source-control management and check-in procedures Establish a quality-driven, milestone-based project rhythm—and improve your results!
Publisher: Microsoft Press
ISBN: 0735638519
Category : Computers
Languages : en
Pages : 453
Book Description
Get best-in-class engineering practices to help you write more-robust, bug-free code. Two Microsoft .NET development experts share real-world examples and proven methods for optimizing the software development life cycle—from avoiding costly programming pitfalls to making your development team more efficient. Managed code developers at all levels will find design, prototyping, implementation, debugging, and testing tips to boost the quality of their code—today. Optimize each stage of the development process—from design to testing—and produce higher-quality applications. Use metaprogramming to reduce code complexity, while increasing flexibility and maintainability Treat performance as a feature—and manage it throughout the development life cycle Apply best practices for application scalability Employ preventative security measures to ward off malicious attacks Practice defensive programming to catch bugs before run time Incorporate automated builds, code analysis, and testing into the daily engineering process Implement better source-control management and check-in procedures Establish a quality-driven, milestone-based project rhythm—and improve your results!
Machine Learning for Future Wireless Communications
Author: Fa-Long Luo
Publisher: John Wiley & Sons
ISBN: 1119562252
Category : Technology & Engineering
Languages : en
Pages : 490
Book Description
A comprehensive review to the theory, application and research of machine learning for future wireless communications In one single volume, Machine Learning for Future Wireless Communications provides a comprehensive and highly accessible treatment to the theory, applications and current research developments to the technology aspects related to machine learning for wireless communications and networks. The technology development of machine learning for wireless communications has grown explosively and is one of the biggest trends in related academic, research and industry communities. Deep neural networks-based machine learning technology is a promising tool to attack the big challenge in wireless communications and networks imposed by the increasing demands in terms of capacity, coverage, latency, efficiency flexibility, compatibility, quality of experience and silicon convergence. The author – a noted expert on the topic – covers a wide range of topics including system architecture and optimization, physical-layer and cross-layer processing, air interface and protocol design, beamforming and antenna configuration, network coding and slicing, cell acquisition and handover, scheduling and rate adaption, radio access control, smart proactive caching and adaptive resource allocations. Uniquely organized into three categories: Spectrum Intelligence, Transmission Intelligence and Network Intelligence, this important resource: Offers a comprehensive review of the theory, applications and current developments of machine learning for wireless communications and networks Covers a range of topics from architecture and optimization to adaptive resource allocations Reviews state-of-the-art machine learning based solutions for network coverage Includes an overview of the applications of machine learning algorithms in future wireless networks Explores flexible backhaul and front-haul, cross-layer optimization and coding, full-duplex radio, digital front-end (DFE) and radio-frequency (RF) processing Written for professional engineers, researchers, scientists, manufacturers, network operators, software developers and graduate students, Machine Learning for Future Wireless Communications presents in 21 chapters a comprehensive review of the topic authored by an expert in the field.
Publisher: John Wiley & Sons
ISBN: 1119562252
Category : Technology & Engineering
Languages : en
Pages : 490
Book Description
A comprehensive review to the theory, application and research of machine learning for future wireless communications In one single volume, Machine Learning for Future Wireless Communications provides a comprehensive and highly accessible treatment to the theory, applications and current research developments to the technology aspects related to machine learning for wireless communications and networks. The technology development of machine learning for wireless communications has grown explosively and is one of the biggest trends in related academic, research and industry communities. Deep neural networks-based machine learning technology is a promising tool to attack the big challenge in wireless communications and networks imposed by the increasing demands in terms of capacity, coverage, latency, efficiency flexibility, compatibility, quality of experience and silicon convergence. The author – a noted expert on the topic – covers a wide range of topics including system architecture and optimization, physical-layer and cross-layer processing, air interface and protocol design, beamforming and antenna configuration, network coding and slicing, cell acquisition and handover, scheduling and rate adaption, radio access control, smart proactive caching and adaptive resource allocations. Uniquely organized into three categories: Spectrum Intelligence, Transmission Intelligence and Network Intelligence, this important resource: Offers a comprehensive review of the theory, applications and current developments of machine learning for wireless communications and networks Covers a range of topics from architecture and optimization to adaptive resource allocations Reviews state-of-the-art machine learning based solutions for network coverage Includes an overview of the applications of machine learning algorithms in future wireless networks Explores flexible backhaul and front-haul, cross-layer optimization and coding, full-duplex radio, digital front-end (DFE) and radio-frequency (RF) processing Written for professional engineers, researchers, scientists, manufacturers, network operators, software developers and graduate students, Machine Learning for Future Wireless Communications presents in 21 chapters a comprehensive review of the topic authored by an expert in the field.
Adaptive Filters
Author: Behrouz Farhang-Boroujeny
Publisher: John Wiley & Sons
ISBN: 111859133X
Category : Technology & Engineering
Languages : en
Pages : 800
Book Description
This second edition of Adaptive Filters: Theory and Applications has been updated throughout to reflect the latest developments in this field; notably an increased coverage given to the practical applications of the theory to illustrate the much broader range of adaptive filters applications developed in recent years. The book offers an easy to understand approach to the theory and application of adaptive filters by clearly illustrating how the theory explained in the early chapters of the book is modified for the various applications discussed in detail in later chapters. This integrated approach makes the book a valuable resource for graduate students; and the inclusion of more advanced applications including antenna arrays and wireless communications makes it a suitable technical reference for engineers, practitioners and researchers. Key features: • Offers a thorough treatment of the theory of adaptive signal processing; incorporating new material on transform domain, frequency domain, subband adaptive filters, acoustic echo cancellation and active noise control. • Provides an in-depth study of applications which now includes extensive coverage of OFDM, MIMO and smart antennas. • Contains exercises and computer simulation problems at the end of each chapter. • Includes a new companion website hosting MATLAB® simulation programs which complement the theoretical analyses, enabling the reader to gain an in-depth understanding of the behaviours and properties of the various adaptive algorithms.
Publisher: John Wiley & Sons
ISBN: 111859133X
Category : Technology & Engineering
Languages : en
Pages : 800
Book Description
This second edition of Adaptive Filters: Theory and Applications has been updated throughout to reflect the latest developments in this field; notably an increased coverage given to the practical applications of the theory to illustrate the much broader range of adaptive filters applications developed in recent years. The book offers an easy to understand approach to the theory and application of adaptive filters by clearly illustrating how the theory explained in the early chapters of the book is modified for the various applications discussed in detail in later chapters. This integrated approach makes the book a valuable resource for graduate students; and the inclusion of more advanced applications including antenna arrays and wireless communications makes it a suitable technical reference for engineers, practitioners and researchers. Key features: • Offers a thorough treatment of the theory of adaptive signal processing; incorporating new material on transform domain, frequency domain, subband adaptive filters, acoustic echo cancellation and active noise control. • Provides an in-depth study of applications which now includes extensive coverage of OFDM, MIMO and smart antennas. • Contains exercises and computer simulation problems at the end of each chapter. • Includes a new companion website hosting MATLAB® simulation programs which complement the theoretical analyses, enabling the reader to gain an in-depth understanding of the behaviours and properties of the various adaptive algorithms.
Deep Learning
Author: Ian Goodfellow
Publisher: MIT Press
ISBN: 0262337371
Category : Computers
Languages : en
Pages : 801
Book Description
An introduction to a broad range of topics in deep learning, covering mathematical and conceptual background, deep learning techniques used in industry, and research perspectives. “Written by three experts in the field, Deep Learning is the only comprehensive book on the subject.” —Elon Musk, cochair of OpenAI; cofounder and CEO of Tesla and SpaceX Deep learning is a form of machine learning that enables computers to learn from experience and understand the world in terms of a hierarchy of concepts. Because the computer gathers knowledge from experience, there is no need for a human computer operator to formally specify all the knowledge that the computer needs. The hierarchy of concepts allows the computer to learn complicated concepts by building them out of simpler ones; a graph of these hierarchies would be many layers deep. This book introduces a broad range of topics in deep learning. The text offers mathematical and conceptual background, covering relevant concepts in linear algebra, probability theory and information theory, numerical computation, and machine learning. It describes deep learning techniques used by practitioners in industry, including deep feedforward networks, regularization, optimization algorithms, convolutional networks, sequence modeling, and practical methodology; and it surveys such applications as natural language processing, speech recognition, computer vision, online recommendation systems, bioinformatics, and videogames. Finally, the book offers research perspectives, covering such theoretical topics as linear factor models, autoencoders, representation learning, structured probabilistic models, Monte Carlo methods, the partition function, approximate inference, and deep generative models. Deep Learning can be used by undergraduate or graduate students planning careers in either industry or research, and by software engineers who want to begin using deep learning in their products or platforms. A website offers supplementary material for both readers and instructors.
Publisher: MIT Press
ISBN: 0262337371
Category : Computers
Languages : en
Pages : 801
Book Description
An introduction to a broad range of topics in deep learning, covering mathematical and conceptual background, deep learning techniques used in industry, and research perspectives. “Written by three experts in the field, Deep Learning is the only comprehensive book on the subject.” —Elon Musk, cochair of OpenAI; cofounder and CEO of Tesla and SpaceX Deep learning is a form of machine learning that enables computers to learn from experience and understand the world in terms of a hierarchy of concepts. Because the computer gathers knowledge from experience, there is no need for a human computer operator to formally specify all the knowledge that the computer needs. The hierarchy of concepts allows the computer to learn complicated concepts by building them out of simpler ones; a graph of these hierarchies would be many layers deep. This book introduces a broad range of topics in deep learning. The text offers mathematical and conceptual background, covering relevant concepts in linear algebra, probability theory and information theory, numerical computation, and machine learning. It describes deep learning techniques used by practitioners in industry, including deep feedforward networks, regularization, optimization algorithms, convolutional networks, sequence modeling, and practical methodology; and it surveys such applications as natural language processing, speech recognition, computer vision, online recommendation systems, bioinformatics, and videogames. Finally, the book offers research perspectives, covering such theoretical topics as linear factor models, autoencoders, representation learning, structured probabilistic models, Monte Carlo methods, the partition function, approximate inference, and deep generative models. Deep Learning can be used by undergraduate or graduate students planning careers in either industry or research, and by software engineers who want to begin using deep learning in their products or platforms. A website offers supplementary material for both readers and instructors.