Write Great Code: Volume 1, 2nd EditionThis, the first volume in Randall Hyde's Write Great Code series, dives into machine organization without the extra overhead of learning assembly language programming. Written for high-level language programmers, Understanding the Machine fills in the low-level details of machine organization that are often left out of computer science and engineering courses.
Learn: How the machine represents numbers, strings, and high-level data structures, so you'll know the inherent cost of using them; How to organize your data, so the machine can access it efficiently; How the CPU operates, so you can write code that works the way the machine does; How I/O devices operate, so you can maximize your application's performance when accessing those devices; How to best use the memory hierarchy to produce the fastest possible programs.
Great code is efficient code. But before you can write truly efficient code, you must understand how computer systems execute programs and how abstractions in prog ...
Write Great Code: Volume 3The field of software engineering may value team productivity over individual growth, but legendary computer scientist Randall Hyde wants to make promising programmers into masters of their craft. To that end, Engineering Software - the latest volume in Hyde's highly regarded Write Great Code series - offers his signature in-depth coverage of everything from development methodologies and strategic productivity to object-oriented design requirements and system documentation.
You'll learn: Why following the software craftsmanship model can lead you to do your best work; How to utilize traceability to enforce consistency within your documentation; The steps for creating your own UML requirements with use-case analysis; How to leverage the IEEE documentation standards to create better software.
This advanced apprenticeship in the skills, attitudes, and ethics of quality software development reveals the right way to apply engineering principles to programming. Hyde will teach you the ...
Effective CThe world runs on code written in the C programming language, yet most schools begin the curriculum with Python or Java. Effective C bridges this gap and brings C into the modern era - covering the modern C17 Standard as well as potential C2x features. With the aid of this instant classic, you'll soon be writing professional, portable, and secure C programs to power robust systems and solve real-world problems.
Robert C. Seacord introduces C and the C Standard Library while addressing best practices, common errors, and open debates in the C community. Developed together with other C Standards committee experts, Effective C will teach you how to debug, test, and analyze C programs. You'll benefit from Seacord's concise explanations of C language constructs and behaviors, and from his 40 years of coding experience.
You'll learn: How to identify and handle undefined behavior in a C program; The range and representations of integers and floating-point values; How dynamic memory alloc ...
Building Secure FirmwareAs operating systems and hypervisors have become successively more hardened, malware has moved further down the stack and into firmware. Firmware represents the boundary between hardware and software, and given its persistence, mutability, and opaqueness to today's antivirus scanning technology, it represents an interesting target for attackers.
As platforms are universally network-connected and can contain multiple devices with firmware, and a global supply chain feeds into platform firmware, assurance is critical for consumers, IT enterprises, and governments. This importance is highlighted by emergent requirements such as NIST SP800-193 for firmware resilience and NIST SP800-155 for firmware measurement.
This book covers the secure implementation of various aspects of firmware, including standards-based firmware - such as support of the Trusted Computing Group (TCG), Desktop Management Task Force (DMTF), and Unified Extensible Firmware Interface (UEFI) specifications - and als ...
Refactoring at ScaleMaking significant changes to large, complex codebases is a daunting task-one that's nearly impossible to do successfully unless you have the right team, tools, and mindset. If your application is in need of a substantial overhaul and you're unsure how to go about implementing those changes in a sustainable way, then this book is for you.
Software engineer Maude Lemaire walks you through the entire refactoring process from start to finish. You'll learn from her experience driving performance and refactoring efforts at Slack during a period of critical growth, including two case studies illustrating the impact these techniques can have in the real world. This book will help you achieve a newfound ability to productively introduce important changes in your codebase.
Understand how code degrades and why some degradation is inevitable; Quantify and qualify the state of your codebase before refactoring; Draft a well-scoped execution plan with strategic milestones; Win support from eng ...
Head First Design Patterns, 2nd EditionYou know you don't want to reinvent the wheel, so you look to Design Patterns: the lessons learned by those who've faced the same software design problems. With Design Patterns, you get to take advantage of the best practices and experience of others so you can spend your time on something more challenging. Something more fun. This book shows you the patterns that matter, when to use them and why, how to apply them to your own designs, and the object-oriented design principles on which they're based. Join hundreds of thousands of developers who've improved their object-oriented design skills through Head First Design Patterns.
If you've read a Head First book, you know what to expect: a visually rich format designed for the way your brain works. With Head First Design Patterns, 2nd Edition you'll learn design principles and patterns in a way that won't put you to sleep, so you can get out there to solve software design problems and speak the language of patterns with others on your ...
Learn ProgrammingThis book is aimed at readers who are interested in software development but have very little to no prior experience. The book focuses on teaching the core principles around software development. It uses several technologies to this goal (e.g. C, Python, JavaScript, HTML, etc.) but is not a book about the technologies themselves. The reader will learn the basics (or in some cases more) of various technologies along the way, but the focus is on building a foundation for software development. The book is your guided tour through the programming jungle, aiming to provide some clarity and build the foundation for software development skills. ...
The Common Lisp Condition SystemDiscover the functioning and example uses of the Common Lisp condition system. This book supplements already existing material for studying Common Lisp as a language by providing detailed information about the Lisp condition system and its control flow mechanisms; it also describes an example ANSI-conformant implementation of the condition system.
In part 1 of The Common Lisp Condition System, the author introduces the condition system using a bottom-up approach, constructing it piece by piece. He uses a storytelling approach to convey the foundation of the condition system, dynamically providing code to alter the behavior of an existing program. Later, in part 2, you'll implement a full and complete ANSI-conformant condition system while examining and testing each piece of code that you write.
Throughout, the author demonstrates how to extend Lisp using Lisp itself by using the condition system as an example. This is done while paying proper attention to the CL restart subsyst ...
OpenIntro Statistics, 4th EditionOpenIntro Statistics offers a traditional introduction to statistics at the college level. This textbook is widely used at the college level and offers an exceptional and accessible introduction for students from community colleges to the Ivy League. The textbook has been thoroughly vetted with an estimated 20,000 students using it annually.
Self-study learners will be excited to find that: The textbook is well-maintained and is now in its 4th Edition; OpenIntro is heavily used in industry since it focuses on applied statistics; Additional resources on openintro.org, including videos and labs, help learners of all types. ...
The Unix WorkbenchLearning the command line can be a difficult and intimidating task, but this book is designed to be your lighthouse in the modern computational storm. Unix is a 40 year old operating system that powers the internet, your phone, and the latest scientific research. This book aims to be a gateway to the world of computer programming, providing you with a set of tools that will allow you to scale your ideas. Even if you have no prior programming experience The Unix Workbench can help you build a solid foundation which you can use to build the next great business, discover a new innovation, or choreograph a ovation-inducing ballet.
This book begins by helping you get access to Unix, followed by an introduction to how you can use the command line to navigate your computer just like you normally would with your mouse and keyboard. We will then discuss more advanced topics including how to do complex searches with regular expressions, how to configure your programming environment, and how t ...