Code Complete


Steve McConnell - 1993
    Now this classic book has been fully updated and revised with leading-edge practices--and hundreds of new code samples--illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking--and help you build the highest quality code. Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity Reap the benefits of collaborative development Apply defensive programming techniques to reduce and flush out errors Exploit opportunities to refactor--or evolve--code, and do it safely Use construction practices that are right-weight for your project Debug problems quickly and effectively Resolve critical construction issues early and correctly Build quality into the beginning, middle, and end of your project

An Introduction to General Systems Thinking


Gerald M. Weinberg - 1975
    Used in university courses and professional seminars all over the world, the text has proven its ability to open minds and sharpen thinking.Originally published in 1975 and reprinted more than twenty times over a quarter century -- and now available for the first time from Dorset House Publishing -- the text uses clear writing and basic algebraic principles to explore new approaches to projects, products, organizations, and virtually any kind of system.Scientists, engineers, organization leaders, managers, doctors, students, and thinkers of all disciplines can use this book to dispel the mental fog that clouds problem-solving. As author Gerald M. Weinberg writes in the new preface to the Silver Anniversary Edition, "I haven’t changed my conviction that most people don’t think nearly as well as they could had they been taught some principles of thinking.”Now an award-winning author of nearly forty books spanning the entire software development life cycle, Weinberg had already acquired extensive experience as a programmer, manager, university professor, and consultant when this book was originally published.With helpful illustrations, numerous end-of-chapter exercises, and an appendix on a mathematical notation used in problem-solving, An Introduction to General Systems Thinking may be your most powerful tool in working with problems, systems, and solutions.

Head First Design Patterns


Eric Freeman - 2004
     At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them, how to use them (and when NOT to use them). But you don't just want to see how patterns look in a book, you want to know how they look "in the wild". In their native environment. In other words, in real world applications. You also want to learn how patterns are used in the Java API, and how to exploit Java's built-in pattern support in your own code. You want to learn the real OO design principles and why everything your boss told you about inheritance might be wrong (and what to do instead). You want to learn how those principles will help the next time you're up a creek without a design pattern. Most importantly, you want to learn the "secret language" of Design Patterns so that you can hold your own with your co-worker (and impress cocktail party guests) when he casually mentions his stunningly clever use of Command, Facade, Proxy, and Factory in between sips of a martini. You'll easily counter with your deep understanding of why Singleton isn't as simple as it sounds, how the Factory is so often misunderstood, or on the real relationship between Decorator, Facade and Adapter. With Head First Design Patterns, you'll avoid the embarrassment of thinking Decorator is something from the "Trading Spaces" show. Best of all, in a way that won't put you to sleep! We think your time is too important (and too short) to spend it struggling with academic texts. If you've read a Head First book, you know what to expect--a visually rich format designed for the way your brain works. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.

Coding the Matrix: Linear Algebra through Computer Science Applications


Philip N. Klein - 2013
    Mathematical concepts and computational problems are motivated by applications in computer science. The reader learns by "doing," writing programs to implement the mathematical concepts and using them to carry out tasks and explore the applications. Examples include: error-correcting codes, transformations in graphics, face detection, encryption and secret-sharing, integer factoring, removing perspective from an image, PageRank (Google's ranking algorithm), and cancer detection from cell features. A companion web site, codingthematrix.com provides data and support code. Most of the assignments can be auto-graded online. Over two hundred illustrations, including a selection of relevant "xkcd" comics. Chapters: "The Function," "The Field," "The Vector," "The Vector Space," "The Matrix," "The Basis," "Dimension," "Gaussian Elimination," "The Inner Product," "Special Bases," "The Singular Value Decomposition," "The Eigenvector," "The Linear Program"

From Mathematics to Generic Programming


Alexander A. Stepanov - 2014
    If you're a reasonably proficient programmer who can think logically, you have all the background you'll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem. As you read this book, you'll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. You'll also gain deep insight into the value of mathematics to programming--insight that will prove invaluable no matter what programming languages and paradigms you use. You will learn aboutHow to generalize a four thousand-year-old algorithm, demonstrating indispensable lessons about clarity and efficiencyAncient paradoxes, beautiful theorems, and the productive tension between continuous and discreteA simple algorithm for finding greatest common divisor (GCD) and modern abstractions that build on itPowerful mathematical approaches to abstractionHow abstract algebra provides the idea at the heart of generic programmingAxioms, proofs, theories, and models: using mathematical techniques to organize knowledge about your algorithms and data structuresSurprising subtleties of simple programming tasks and what you can learn from themHow practical implementations can exploit theoretical knowledge

Introduction to Linear Algebra


Gilbert Strang - 1993
    Topics covered include matrix multiplication, row reduction, matrix inverse, orthogonality and computation. The self-teaching book is loaded with examples and graphics and provides a wide array of probing problems, accompanying solutions, and a glossary. Chapter 1: Introduction to Vectors; Chapter 2: Solving Linear Equations; Chapter 3: Vector Spaces and Subspaces; Chapter 4: Orthogonality; Chapter 5: Determinants; Chapter 6: Eigenvalues and Eigenvectors; Chapter 7: Linear Transformations; Chapter 8: Applications; Chapter 9: Numerical Linear Algebra; Chapter 10: Complex Vectors and Matrices; Solutions to Selected Exercises; Final Exam. Matrix Factorizations. Conceptual Questions for Review. Glossary: A Dictionary for Linear Algebra Index Teaching Codes Linear Algebra in a Nutshell.

Schaum's Outline of Linear Algebra


Seymour Lipschutz - 1968
    This guide provides explanations of eigenvalues, eigenvectors, linear transformations, linear equations, vectors, and matrices.

Deep Learning with Python


François Chollet - 2017
    It is the technology behind photo tagging systems at Facebook and Google, self-driving cars, speech recognition systems on your smartphone, and much more.In particular, Deep learning excels at solving machine perception problems: understanding the content of image data, video data, or sound data. Here's a simple example: say you have a large collection of images, and that you want tags associated with each image, for example, "dog," "cat," etc. Deep learning can allow you to create a system that understands how to map such tags to images, learning only from examples. This system can then be applied to new images, automating the task of photo tagging. A deep learning model only has to be fed examples of a task to start generating useful results on new data.

Introduction to Probability


Dimitri P. Bertsekas - 2002
    This is the currently used textbook for "Probabilistic Systems Analysis," an introductory probability course at the Massachusetts Institute of Technology, attended by a large number of undergraduate and graduate students. The book covers the fundamentals of probability theory (probabilistic models, discrete and continuous random variables, multiple random variables, and limit theorems), which are typically part of a first course on the subject. It also contains, a number of more advanced topics, from which an instructor can choose to match the goals of a particular course. These topics include transforms, sums of random variables, least squares estimation, the bivariate normal distribution, and a fairly detailed introduction to Bernoulli, Poisson, and Markov processes. The book strikes a balance between simplicity in exposition and sophistication in analytical reasoning. Some of the more mathematically rigorous analysis has been just intuitively explained in the text, but is developed in detail (at the level of advanced calculus) in the numerous solved theoretical problems. The book has been widely adopted for classroom use in introductory probability courses within the USA and abroad.

The Emperor's New Mind: Concerning Computers, Minds and the Laws of Physics


Roger Penrose - 1989
    Admittedly, computers now play chess at the grandmaster level, but do they understand the game as we do? Can a computer eventually do everything a human mind can do? In this absorbing and frequently contentious book, Roger Penrose--eminent physicist and winner, with Stephen Hawking, of the prestigious Wolf prize--puts forward his view that there are some facets of human thinking that can never be emulated by a machine. Penrose examines what physics and mathematics can tell us about how the mind works, what they can't, and what we need to know to understand the physical processes of consciousness. He is among a growing number of physicists who think Einstein wasn't being stubborn when he said his little finger told him that quantum mechanics is incomplete, and he concludes that laws even deeper than quantum mechanics are essential for the operation of a mind. To support this contention, Penrose takes the reader on a dazzling tour that covers such topics as complex numbers, Turing machines, complexity theory, quantum mechanics, formal systems, Godel undecidability, phase spaces, Hilbert spaces, black holes, white holes, Hawking radiation, entropy, quasicrystals, the structure of the brain, and scores of other subjects. The Emperor's New Mind will appeal to anyone with a serious interest in modern physics and its relation to philosophical issues, as well as to physicists, mathematicians, philosophers and those on either side of the AI debate.

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2


Dave Shreiner - 1999
    The OpenGL Programming Guide provides definitive and comprehensive information on OpenGL and the OpenGL Utility Library. It is far and away the most important book on OpenGL, and is commonly referred to by programmers simply as the Red book. Last summer the OpenGL Architectural Review Board (ARB) announced the release of the version 2.0 standard, incorporating the OpenGL Shader Language (GLSL) officially into the spec. This is the biggest change in OpenGL since its inception. This new edition will provide basic information about GLSL itself, as well as all the other changes to the 1.5 and 1.0 versions. the official, comprehensive guide to GLSL itself. A few years ago, pundits were predicting the imminent demise of OpenGL. Far from expiring, however, OpenGL has had a resurgence in the last couple years, and has solidified its position as the defacto standard for high-quality computer graphics. This book remains the necessary guide for any developer doing graphics programming. The sample source code in the book will be available on the book's web site.

HTML and CSS: Design and Build Websites


Jon Duckett - 2011
    Joining the professional web designers and programmers are new audiences who need to know a little bit of code at work (update a content management system or e-commerce store) and those who want to make their personal blogs more attractive. Many books teaching HTML and CSS are dry and only written for those who want to become programmers, which is why this book takes an entirely new approach. • Introduces HTML and CSS in a way that makes them accessible to everyone—hobbyists, students, and professionals—and it’s full-color throughout • Utilizes information graphics and lifestyle photography to explain the topics in a simple way that is engaging • Boasts a unique structure that allows you to progress through the chapters from beginning to end or just dip into topics of particular interest at your leisureThis educational book is one that you will enjoy picking up, reading, then referring back to. It will make you wish other technical topics were presented in such a simple, attractive and engaging way!

Introductory Circuit Analysis


Robert L. Boylestad - 1968
    Features exceptionally clear explanations and descriptions, step-by-step examples, more than 50 practical applications, over 2000 easy-to-challenging practice problems, and comprehensive coverage of essentials. PSpice, OrCAd version 9.2 Lite Edition, Multisims 2001 version of Electronics Workbench, and MathCad software references and examples are used throughout. Computer programs (C++, BASIC and PSpice) are printed in color, as they run, at the point in the book where they are discussed. Current and Voltage. Resistance. Ohm's Law, Power, and Energy. Series Circuits. Parallel Circuits. Series-Parallel Networks. Methods of Analysis & Selected Topics. Network Theorems. Capacitors. Magnetic Circuits. Inductors. Sinusodial Alternating Waveforms. The Basic Elements and Phasors. Series and Parallel ac Circuits. Series-Parallel ac Networks. Methods of Analysis and Related Topics. Network Theorems (ac). Power (ac). Resonance. Transformers. Polyphase Systems. Decibels, Filters, and Bode Points. Pulse Waveforms and the R-C Response. Nonsinusodial Circuits. System Analysis: An Introduction. For those working in electronic technology.

The Heart of Mathematics: An Invitation to Effective Thinking


Edward B. Burger - 1999
    In this new, innovative overview textbook, the authors put special emphasis on the deep ideas of mathematics, and present the subject through lively and entertaining examples, anecdotes, challenges and illustrations, all of which are designed to excite the student's interest. The underlying ideas include topics from number theory, infinity, geometry, topology, probability and chaos theory. Throughout the text, the authors stress that mathematics is an analytical way of thinking, one that can be brought to bear on problem solving and effective thinking in any field of study.

Algorithms


Sanjoy Dasgupta - 2006
    Emphasis is placed on understanding the crisp mathematical idea behind each algorithm, in a manner that is intuitive and rigorous without being unduly formal. Features include: The use of boxes to strengthen the narrative: pieces that provide historical context, descriptions of how the algorithms are used in practice, and excursions for the mathematically sophisticated.Carefully chosen advanced topics that can be skipped in a standard one-semester course, but can be covered in an advanced algorithms course or in a more leisurely two-semester sequence.An accessible treatment of linear programming introduces students to one of the greatest achievements in algorithms. An optional chapter on the quantum algorithm for factoring provides a unique peephole into this exciting topic. In addition to the text, DasGupta also offers a Solutions Manual, which is available on the Online Learning Center.Algorithms is an outstanding undergraduate text, equally informed by the historical roots and contemporary applications of its subject. Like a captivating novel, it is a joy to read. Tim Roughgarden Stanford University