This 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) o
In this open book, the authors aim to study the fundamental concepts in programming languages, rather than teaching a range of specific languages. They posit that while languages are easy to learn, the concepts behind them are difficult. The basic features they examine in turn include higher-order functions, data structures in the form of records and variants, mutable state, exceptions,
OpenIntro Statistics provides a traditional college-level introduction to the field of statistics. This widely adopted textbook offers an exceptional and accessible foundation for a diverse range of students, from those at community colleges to attendees of Ivy League institutions. It is estimated that approximately 20,000 students use this thoroughly vetted textbook annually. The book c
Mobile devices such as smartphones and tablets are set to become the main computers that virtually all people will own and carry with them at all times. And yet,mobile devices are not yet used for all computing tasks. A project at Microsoft Research was created to answer a simple question: "It is possible to create interesting apps directly on a smartphone or tablet, without using a sepa
So someone has heard about graph databases and wants to understand what all the buzz is about. Are they just a passing trend - here today and gone tomorrow - or are they a rising tide that businesses and development teams can't afford to ignore? Whether they're a business executive or a seasoned developer, something - perhaps a pressing business challenge or a limitation of their current
Learn how to accelerate C++ programs using data parallelism. This open book enables C++ programmers to be at the forefront of this exciting and important new development that is helping to push computing to new levels. It is full of practical advice, detailed explanations, and code examples to illustrate key topics. Data parallelism in C++ enables access to parallel resources in a modern
This book, The Crystal Ball Instruction Manual: Volume Two, Foundations for Data Science, continues the series. The author, Stephen Davies, explains that the first volume was titled "Introduction to Data Science" because it provided an initial, broad tour of the field. He notes that the reader's continued interest indicates a readiness to explore the next level. In Foundations, the text
A modern practical book about cryptography for developers with code examples, covering core concepts like: hashes (like SHA-3 and BLAKE2), MAC codes (like HMAC and GMAC), key derivation functions (like Scrypt, Argon2), key agreement protocols (like DHKE, ECDH), symmetric ciphers (like AES and ChaCha20, cipher block modes, authenticated encryption, AEAD, AES-GCM, ChaCha20-Poly1305), asymm
Object-oriented Programming in C# is a practical guide to OOP concepts using C#, designed for programmers with experience in imperative languages like C or Java. Originally created in 2006, it takes an "object-later" approach, first reinforcing foundational programming skills before introducing object-oriented principles. The material combines annotated slides with textbook-style explana
Network and System Administration usually refers only to the traditional skills and recipes for keeping computers and networks running properly. But, in truth, this view omits the most important part of the system: humans. The skill needed to comprehend and tame systems comprising both humans and machines is that of managing complexity. In this book, first written in 2002 and updated now