The Haskell Road to Logic, Maths and Programming


Kees Doets - 2004
    Haskell emerged in the last decade as a standard for lazy functional programming, a programming style where arguments are evaluated only when the value is actually needed. Haskell is a marvellous demonstration tool for logic and maths because its functional character allows implementations to remain very close to the concepts that get implemented, while the laziness permits smooth handling of infinite data structures.This book does not assume the reader to have previous experience with either programming or construction of formal proofs, but acquaintance with mathematical notation, at the level of secondary school mathematics is presumed. Everything one needs to know about mathematical reasoning or programming is explained as we go along. After proper digestion of the material in this book the reader will be able to write interesting programs, reason about their correctness, and document them in a clear fashion. The reader will also have learned how to set up mathematical proofs in a structured way, and how to read and digest mathematical proofs written by others.

Microsoft Windows Internals: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000 (Pro-Developer)


Mark E. Russinovich - 2004
    This classic guide—fully updated for Windows Server 2003, Windows XP, and Windows 2000, including 64-bit extensions—describes the architecture and internals of the Windows operating system. You’ll find hands-on experiments you can use to experience Windows internal behavior firsthand, along with advanced troubleshooting information to help you keep your systems running smoothly and efficiently. Whether you’re a developer or a system administrator, you’ll find critical architectural insights that you can quickly apply for better design, debugging, performance, and support.Get in-depth, inside knowledge of the Windows operating system: Understand the key mechanisms that configure and control Windows, including dispatching, startup and shutdown, and the registry Explore the Windows security model, including access, privileges, and auditing Investigate internal system architecture using the kernel debugger and other tools Examine the data structures and algorithms that deal with processes, threads, and jobs Observe how Windows manages virtual and physical memory Understand the operation and format of NTFS, and troubleshoot file system access problems View the Windows networking stack from top to bottom, including mapping, APIs, name resolution, and protocol drivers Troubleshoot boot problems and perform crash analysis

Cryptography and Network Security


Behrouz A. Forouzan - 2007
    In this new first edition, well-known author Behrouz Forouzan uses his accessible writing style and visual approach to simplify the difficult concepts of cryptography and network security. This edition also provides a website that includes Powerpoint files as well as instructor and students solutions manuals. Forouzan presents difficult security topics from the ground up. A gentle introduction to the fundamentals of number theory is provided in the opening chapters, paving the way for the student to move on to more complex security and cryptography topics. Difficult math concepts are organized in appendices at the end of each chapter so that students can first learn the principles, then apply the technical background. Hundreds of examples, as well as fully coded programs, round out a practical, hands-on approach which encourages students to test the material they are learning.

Cracking the Coding Interview: 150 Programming Questions and Solutions


Gayle Laakmann McDowell - 2008
    This is a deeply technical book and focuses on the software engineering skills to ace your interview. The book is over 500 pages and includes 150 programming interview questions and answers, as well as other advice.The full list of topics are as follows:The Interview ProcessThis section offers an overview on questions are selected and how you will be evaluated. What happens when you get a question wrong? When should you start preparing, and how? What language should you use? All these questions and more are answered.Behind the ScenesLearn what happens behind the scenes during your interview, how decisions really get made, who you interview with, and what they ask you. Companies covered include Google, Amazon, Yahoo, Microsoft, Apple and Facebook.Special SituationsThis section explains the process for experience candidates, Program Managers, Dev Managers, Testers / SDETs, and more. Learn what your interviewers are looking for and how much code you need to know.Before the InterviewIn order to ace the interview, you first need to get an interview. This section describes what a software engineer's resume should look like and what you should be doing well before your interview.Behavioral PreparationAlthough most of a software engineering interview will be technical, behavioral questions matter too. This section covers how to prepare for behavioral questions and how to give strong, structured responses.Technical Questions (+ 5 Algorithm Approaches)This section covers how to prepare for technical questions (without wasting your time) and teaches actionable ways to solve the trickiest algorithm problems. It also teaches you what exactly "good coding" is when it comes to an interview.150 Programming Questions and AnswersThis section forms the bulk of the book. Each section opens with a discussion of the core knowledge and strategies to tackle this type of question, diving into exactly how you break down and solve it. Topics covered include• Arrays and Strings• Linked Lists• Stacks and Queues• Trees and Graphs• Bit Manipulation• Brain Teasers• Mathematics and Probability• Object-Oriented Design• Recursion and Dynamic Programming• Sorting and Searching• Scalability and Memory Limits• Testing• C and C++• Java• Databases• Threads and LocksFor the widest degree of readability, the solutions are almost entirely written with Java (with the exception of C / C++ questions). A link is provided with the book so that you can download, compile, and play with the solutions yourself.Changes from the Fourth Edition: The fifth edition includes over 200 pages of new content, bringing the book from 300 pages to over 500 pages. Major revisions were done to almost every solution, including a number of alternate solutions added. The introductory chapters were massively expanded, as were the opening of each of the chapters under Technical Questions. In addition, 24 new questions were added.Cracking the Coding Interview, Fifth Edition is the most expansive, detailed guide on how to ace your software development / programming interviews.

Hacking: The Art of Exploitation


Jon Erickson - 2003
    This book explains the technical aspects of hacking, including stack based overflows, heap based overflows, string exploits, return-into-libc, shellcode, and cryptographic attacks on 802.11b.

Types and Programming Languages


Benjamin C. Pierce - 2002
    The study of type systems--and of programming languages from a type-theoretic perspective--has important applications in software engineering, language design, high-performance compilers, and security.This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections are driven by the needs of implementations. Each chapter is accompanied by numerous exercises and solutions, as well as a running implementation, available via the Web. Dependencies between chapters are explicitly identified, allowing readers to choose a variety of paths through the material.The core topics include the untyped lambda-calculus, simple type systems, type reconstruction, universal and existential polymorphism, subtyping, bounded quantification, recursive types, kinds, and type operators. Extended case studies develop a variety of approaches to modeling the features of object-oriented languages.

Pro Git


Scott Chacon - 2009
    It took the open source world by storm since its inception in 2005, and is used by small development shops and giants like Google, Red Hat, and IBM, and of course many open source projects.A book by Git experts to turn you into a Git expert. Introduces the world of distributed version control Shows how to build a Git development workflow.

Learn You a Haskell for Great Good!


Miran Lipovača - 2011
    Learn You a Haskell for Great Good! introduces programmers familiar with imperative languages (such as C++, Java, or Python) to the unique aspects of functional programming. Packed with jokes, pop culture references, and the author's own hilarious artwork, Learn You a Haskell for Great Good! eases the learning curve of this complex language, and is a perfect starting point for any programmer looking to expand his or her horizons. The well-known web tutorial on which this book is based is widely regarded as the best way for beginners to learn Haskell, and receives over 30,000 unique visitors monthly.

Hands-On Machine Learning with Scikit-Learn and TensorFlow


Aurélien Géron - 2017
    Now that machine learning is thriving, even programmers who know close to nothing about this technology can use simple, efficient tools to implement programs capable of learning from data. This practical book shows you how.By using concrete examples, minimal theory, and two production-ready Python frameworks—Scikit-Learn and TensorFlow—author Aurélien Géron helps you gain an intuitive understanding of the concepts and tools for building intelligent systems. You’ll learn how to use a range of techniques, starting with simple Linear Regression and progressing to Deep Neural Networks. If you have some programming experience and you’re ready to code a machine learning project, this guide is for you.This hands-on book shows you how to use:Scikit-Learn, an accessible framework that implements many algorithms efficiently and serves as a great machine learning entry pointTensorFlow, a more complex library for distributed numerical computation, ideal for training and running very large neural networksPractical code examples that you can apply without learning excessive machine learning theory or algorithm details

Object-Oriented Modeling and Design with UML


James Rumbaugh - 1990
    Two of the leading authorities in the field, Mike Blaha, and Jim Rumbaugh, have thoroughly revised the book to provide a quintessential reference to UML 2.0 and its application for practical, usable state of the art Object-Oriented strategies in the design and implementation of complex object-oriented software systems.

Amazon Elastic Compute Cloud (EC2) User Guide


Amazon Web Services - 2012
    This is official Amazon Web Services (AWS) documentation for Amazon Compute Cloud (Amazon EC2).This guide explains the infrastructure provided by the Amazon EC2 web service, and steps you through how to configure and manage your virtual servers using the AWS Management Console (an easy-to-use graphical interface), the Amazon EC2 API, or web tools and utilities.Amazon EC2 provides resizable computing capacity—literally, server instances in Amazon's data centers—that you use to build and host your software systems.

The Art of Multiprocessor Programming


Maurice Herlihy - 2008
    To leverage the performance and power of multiprocessor programming, also known as multicore programming, programmers need to learn the new principles, algorithms, and tools.The book will be of immediate use to programmers working with the new architectures. For example, the next generation of computer game consoles will all be multiprocessor-based, and the game industry is currently struggling to understand how to address the programming challenges presented by these machines. This change in the industry is so fundamental that it is certain to require a significant response by universities, and courses on multicore programming will become a staple of computer science curriculums.This book includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.Students in multiprocessor and multicore programming courses and engineers working with multiprocessor and multicore systems will find this book quite useful.

The Art of Computer Programming, Volume 1: Fundamental Algorithms


Donald Ervin Knuth - 1973
     -Byte, September 1995 I can't begin to tell you how many pleasurable hours of study and recreation they have afforded me! I have pored over them in cars, restaurants, at work, at home... and even at a Little League game when my son wasn't in the line-up. -Charles Long If you think you're a really good programmer... read [Knuth's] Art of Computer Programming... You should definitely send me a resume if you can read the whole thing. -Bill Gates It's always a pleasure when a problem is hard enough that you have to get the Knuths off the shelf. I find that merely opening one has a very useful terrorizing effect on computers. -Jonathan Laventhol This first volume in the series begins with basic programming concepts and techniques, then focuses more particularly on information structures-the representation of information inside a computer, the structural relationships between data elements and how to deal with them efficiently. Elementary applications are given to simulation, numerical methods, symbolic computing, software and system design. Dozens of simple and important algorithms and techniques have been added to those of the previous edition. The section on mathematical preliminaries has been extensively revised to match present trends in research. Ebook (PDF version) produced by Mathematical Sciences Publishers (MSP), http: //msp.org

But How Do It Know? - The Basic Principles of Computers for Everyone


J. Clark Scott - 2009
    Its humorous title begins with the punch line of a classic joke about someone who is baffled by technology. It was written by a 40-year computer veteran who wants to take the mystery out of computers and allow everyone to gain a true understanding of exactly what computers are, and also what they are not. Years of writing, diagramming, piloting and editing have culminated in one easy to read volume that contains all of the basic principles of computers written so that everyone can understand them. There used to be only two types of book that delved into the insides of computers. The simple ones point out the major parts and describe their functions in broad general terms. Computer Science textbooks eventually tell the whole story, but along the way, they include every detail that an engineer could conceivably ever need to know. Like Momma Bear's porridge, But How Do It Know? is just right, but it is much more than just a happy medium. For the first time, this book thoroughly demonstrates each of the basic principles that have been used in every computer ever built, while at the same time showing the integral role that codes play in everything that computers are able to do. It cuts through all of the electronics and mathematics, and gets right to practical matters. Here is a simple part, see what it does. Connect a few of these together and you get a new part that does another simple thing. After just a few iterations of connecting up simple parts - voilà! - it's a computer. And it is much simpler than anyone ever imagined. But How Do It Know? really explains how computers work. They are far simpler than anyone has ever permitted you to believe. It contains everything you need to know, and nothing you don't need to know. No technical background of any kind is required. The basic principles of computers have not changed one iota since they were invented in the mid 20th century. "Since the day I learned how computers work, it always felt like I knew a giant secret, but couldn't tell anyone," says the author. Now he's taken the time to explain it in such a manner that anyone can have that same moment of enlightenment and thereafter see computers in an entirely new light.

Computer Organization


V. Carl Hamacher - 1978
    *A comprehensive overview of hardware and software issues make this a "must-have" for electrical and computer engineers*Contains new material on RISC processors, performance analysis, multiprocessors and memory systems*New two-color design and illustrations illuminate the text