Free books on technology subjects

The books that did not fit the categories are all here (Page 2) Click here for previous page. Also the books that fit in several categories (for example, Linux and C++) are here as well. Please send me a link in case something is missing.

Project Management - (pdf) - 43 page primer on how to make projects work.

Dive into Greasemonkey - Getting to grips with greasemonkey scripts, answering common questions, debugging, case studies, common questions and Greasemonkey API references.
Numerical Recipes with Fortran 90 - Note that Numerical Recipes in Fortran 90 is considered to be Volume 2 of the Numerical Recipes in Fortran series. Its chapter and page numbering continue where Volume 1 (Numerical Recipes in Fortran 77) leaves off. The material in Volume 1 is not repeated in Volume 2.
Numerical Recipes with Fortran 77 - PDF files of 20-chapter title on Fortran 77
Structure and Interpretation of Computer Programs - The material in this book has been the basis of MIT's entry-level computer science subject since 1980. We had been teaching this material for four years when the first edition was published, and twelve more years have elapsed until the appearance of this second edition. We are pleased that our work has been widely adopted and incorporated into other texts. We have seen our students take the ideas and programs in this book and build them in as the core of new computer systems and languages. In literal realization of an ancient Talmudic pun, our students have become our builders. We are lucky to have such capable students and such accomplished builders.
An Introduction to Programming in Emacs Lisp - Most of the GNU Emacs integrated environment is written in the programming language called Emacs Lisp. The code written in this programming language is the software--the sets of instructions--that tell the computer what to do when you give it commands. Emacs is designed so that you can write new code in Emacs Lisp and easily install it as an extension to the editor. GNU Emacs is sometimes called an "extensible editor", but it does much more than provide editing capabilities. It is better to refer to Emacs as an "extensible computing environment". However, that phrase is quite a mouthful. It is easier to refer to Emacs simply as an editor.
Open Source Development with CVS - If you've never used CVS (or any version control system) before, it's easy to get tripped up by some of its underlying assumptions. What seems to cause the most initial confusion about CVS is that it is used for two apparently unrelated purposes: record keeping and collaboration. It turns out, however, that these two functions are closely connected. Record keeping became necessary because people wanted to compare a program's current state with how it was at some point in the past. For example, in the normal course of implementing a new feature, a developer may bring the program into a thoroughly broken state, where it will probably remain until the feature is mostly finished. Unfortunately, this is just the time when someone usually calls to report a bug in the last publicly released version. To debug the problem (which may also exist in the current version of the sources), the program has to be brought back to a useable state.
Programming Languages: Application and Interpretation - This book is the primary text for Brown University’s course cs173. This course is intended for junior and senior (3rd and 4th year) undergraduates, as well as beginning graduate students. In practice, the course enrollment includes some outstanding sophomores as well as advanced graduate students. The course and book are my attempt to synthesize two conflicting traditions of teaching programming languages: through interpreters and by survey.
FreeBSD system programming - In summary, the BSD family of operating systems dates back to the late 1970s, when AT&T owned Unix. Although Unix was proprietary, source code was available, which encouraged customers to make modifications to their systems. One such customer was the University of California at Berkeley's Computer Systems Research Group. Their version of Unix was known as the Berkeley System Distribution (BSD). BSD tapes were available for a nominal fee to anyone with a Unix source license. BSD received a big boost from the United States Department of Defense, who selected BSD as the base system for implementing TCP/IP and what became the Internet. The TCP/IP code was made freely redistributable via Networking Release 1 (Net/1) in 1989.
The Mono Handbook - The Mono Handbook is a collection of guides and tutorials, that might help you to get started with mono. It covers the mono runtime, the C# language, tools like the debugger, certain parts of the class library, the Database layer ADO.NET, and the WebSite Framework ASP.NET, as well as GTK#.
Programming in Lua - Currently, many programming languages are concerned with how to help you write programs with hundreds of thousands of lines. For that, they offer you packages, namespaces, complex type systems, a myriad of constructions, and thousands of documentation pages to be studied. Lua does not try to help you write programs with hundreds of thousands of lines. Instead, Lua tries to help you solve your problem with only hundreds of lines, or even less. To achieve this aim, Lua relies on extensibility, like many other languages. Unlike most other languages, however, Lua is easily extended not only with software written in Lua itself, but also with software written in other languages, such as C and C++. Lua was designed, from the beginning, to be integrated with software written in C and other conventional languages. This duality of languages brings many benefits. Lua is a tiny and simple language, partly because it does not try to do what C is already good for, such as sheer performance, low-level operations, or interface with third-party software. Lua relies on C for those tasks. What Lua does offer is what C is not good for: a good distance from the hardware, dynamic structures, no redundancies, ease of testing and debugging. For that, Lua has a safe environment, automatic memory management, and great facility to handle strings and other kinds of data with dynamic size.
The Programmers' Stone - The purpose of this site is to recapture, explore and celebrate the Art of Computer Programming. By so doing we hope to help the reader either become a better programmer, understand what less experienced programmers are struggling with, or communicate more effectively with other experienced programmers.
PLT Scheme Cookbook - The Scheme Cookbook provides short "recipes" using PLT Scheme to solve common programming problems. The Cookbook is a collaborative document and contributions are actively sought from all users of PLT Scheme. For consistency with the industry standard Perl Cookbook, and the offshoot PLEAC Project, we will adopt the order and topics in its table of contents and show how these common tasks might be solved using Scheme, in particular the PLT Scheme dialect of the language. Although we draw some inspiration from Perl Cookbook we will not limit our exposition to its contents, and will take great pleasure in highlighting tasks that Scheme makes easy that Perl can not yet make possible.
Integration Patterns - This document provides a brief overview of the Preview Release of Integration Patterns, which embraces existing work in the patterns community, contributes new patterns, and shows how to use the Microsoft platform to implement them. This release includes 10 patterns and an example scenario that illustrates the use of the patterns in the context of a representative project.
The Scheme Programming Language - This book is intended to provide an introduction to the Scheme language but not an introduction to programming in general. The reader is expected to have had some experience programming and to be familiar with terms commonly associated with computers and programming languages.
Practical Theory of Programming - You can download the book in four parts, in your choice of pdf or ps format. Software Engineering for Internet Applications - This is the textbook for the MIT course "Software Engineering for Internet Applications". The course is intended for juniors and seniors in computer science. We assume that they know how to write a computer program and debug it. We do not assume knowledge of any particular programming languages, standards, or protocols. The most concise statement of the course goal is that "The student finishes knowing how to build by him or herself."
How to be a Programmer - A Short, Comprehensive, and Personal Summary
Information Theory, Inference, and Learning Algorithms - PDFs and PSs available
Poignant guide to Ruby - This is just a small Ruby book. It won't crush you. Itos light as a feather (because I haven't finished it yet). And there's a reason this book will stay light: because Ruby is simple to learn.
Application Interoperability: Microsoft .NET and J2EE - Application Interoperability: Microsoft .NET and J2EE presents interoperability best practices, and illustrates these approaches with a functional sample application. It shows how to link Microsoft .NET and J2EE, using Web services, runtime bridges, and asynchronous techniques.
On Search - This series of essays on the construction, deployment and use of search technology (by which I mean primarily “full-text” search) was written between June and December of 2003. It has fifteen instalments not including this table of contents.
Free as in Freedom - Richard Stallman's Crusade for Free Software
Creating Applications with Mozilla - Mozilla is not just a web browser. It is also a framework for building cross-platform applications using standards such as Cascading Style Sheets (CSS), XML languages such as the XML-based User-interface Language (XUL), eXtensible Binding Language (XBL), and Resource Description Framework (RDF). Gecko, Mozilla's rendering engine, is used as part of the framework, along with other technologies such as XPConnect and XPCOM, Mozilla's component model. The Mozilla development framework also uses programming languages such as JavaScript, C++, C, Python, and Interface Definition Language (IDL). The Mozilla framework is used to create Netscape's Mozilla-based browsers (Netscape 6.x and 7.x), other browsers such as Galeon and Camino, and chat clients like ChatZilla and JabberZilla. Developers also use Mozilla to create development tools, browser enhancements, games, and other types of add-ons and applications. This book explains how applications are created with Mozilla and provides step-by-step information that shows how to create your own programs using Mozilla's powerful cross-platform development framework. It also includes examples of different existing applications to demonstrate the possibilities of Mozilla development.
XForms Essentials - The book in your hands introduces you to XForms, a combination of two of the most successful experiments ever performed on the Web: XML and forms. 2003 marks the 10-year anniversary of forms on the Web. During that time, the Web grew from a loose collection of technical research sites to the livelihood of millions; browser empires have risen and fallen; and the tech economy went through an inflationary period of cosmic proportions only to collapse back in upon itself. The addition of forms to the otherwise static HTML language in 1993 was a revolutionary step forward, making possible Yahoo!, Google, Amazon, Hotmail, and countless other interactive sites. During the mid-nineties, the World Wide Web Consortium (W3C), began work on XML, a uniform way to represent structured text and data, in an attempt to simplify an earlier language called SGML. XML became a W3C Recommendation in 1998, and has since gained momentum, becoming the foundation for XHTML, SVG, the Universal Business Language (UBL), syndication formats like RSS, and DocBook (which was used to write this book). Nearly every data format that consists primarily of human-readable data has been influenced by XML.
Embedded Software Development with eCos (pdf) - Embedded Software Development with eCos shows developers and managers the advantages of using the eCos — Embedded Configurable Operating System from Red Hat — over proprietary or commercial embedded operating systems. In this start-to-finish guide to eCos solution building, Anthony Massa covers eCos architecture, installation, configuration, coding, deployment, and the entire eCos open source development system.
User Interface Design for Programmers - selected chapters by renowned guru Joel Spolsky
The UNIX-HATERS Handbook - Modern Unix is a catastrophe. It's the "Un-Operating System": unreliable, unintuitive, unforgiving, unhelpful, and underpowered. Little is more frustrating than trying to force Unix to do something useful and nontrivial. Modern Unix impedes progress in computer science, wastes billions of dollars, and destroys the common sense of many who seriously use it. An exaggeration? You won't think so after reading this book.
Knowledge-based systems in Japan - This is the final report of the JTEC Panel on Knowledge-Based Systems in Japan, sponsored by the National Science Foundation and the Advanced Research Projects Agency. It examines Japanese expert systems applications and advanced knowledge-based (KB) systems R&D, and compares progress and trends with similar developments in the United States. The report includes an executive summary, an introductory chapter, and chapters on: applications; tools and infrastructure; advanced research; national projects; integration with conventional data processing systems; and business perspectives. Site reports on the visits made to Japanese corporate, government and university facilities are included as appendices. The panel observed some contrasts between U.S. and Japanese KB research and applications: (1) Japanese computer manufacturers play a dominant role in the technology and business of expert systems. These large companies have mastered this technology as a core competence, and tend to use systems engineers rather than knowledge engineers to build systems. Consequently, integration with conventional information technology is handled routinely and smoothly. (2) Japanese companies have more experience in applications of KB systems technology to heavy industry, particularly in steel and construction. (3) Products based on the use of fuzzy control logic have had a big impact in Japanese consumer products. (4) Japanese companies are continuing their substantial investments in KB systems technology and business. (5) Compared to the U.S., the quantity of Japanese university research is considerably smaller, but the quality of the best work is as high.
Телекоммуникационные технологии - Данный сервер частично создан на средства, выделенные по проектам РФФИ (99-07-90102 и 01-07-90069). В основу материалов легли тексты книг автора "Протоколы и ресурсы Интернет" (Радио и связь, М. 1996) и "Сети Интернет. Архитектура и протоколы" (Сиринъ, М. 1998), а также "Протоколы Интернет. Энциклопедия" ("Горячая линия - Телеком", М. 2001), которые базировались на двух курсах, читаемых студентам кафедры "Телекоммуникационные сети и системы" МФТИ (факультет ФПФЭ) - "Каналы и сети передачи данных", "Протоколы Интернет".
Let's Build a Compiler - This fifteen-part series, written from 1988 to 1995, is a non-technical introduction to compiler construction. You can read the parts on-line or download them in a ZIP file.
Compilers and Compiler Generators - This site provides an on-line edition of the text and other material from my book "Compilers and Compiler Generators - an introduction with C++", published in 1997 by International Thomson Computer Press. The original edition is now out of print, and the copyright has reverted to me.
Logic, Programming and Prolog - by Ulf Nilsson and Jan Maluszynski
How to Design Programs - An Introduction to Computing and Programming
The Inner Light Theory - Look around and concentrate on what you experience. Perhaps it is a warm summer day and you are sitting on an outdoor patio. You see a deep blue sky and smell the fragrance of the flowers in bloom. Wind blowing through the branches of a nearby tree provides a soothing melody. You feel the texture of these papers in your hands, and can still taste the last sip of your beverage. Of course, your experience will be different; you may be in a university library, at your desk at work, or relaxing on the couch in your home. You may be smelling the fragrance of flowers, the sweetness of newly baked cookies, or the lingering odor of disinfectant. You undoubtedly will be experiencing many things from your five senses, plus an introspective view of your mind's operation. These are the things you perceive, and are therefore the things that define your reality. But now imagine that you suddenly awake and realize it was only a dream. The things you had been experiencing can now be seen from an enlightened perspective. Before you awoke, you justifiably believed that the sights and sounds you experienced were genuine, originating in an external physical universe. The tree, papers, and patio seemed more that just your perception of them; they were real objects with an independent existence. Or so you thought. But now that you are awake you have gained a greater knowledge, the knowledge that your previous reality was not genuine. The things that you had been perceiving exist only in your mind, and nowhere else.
Designing and Building Parallel Programs - The content available here may be accessed freely via Web browsers but may not be archived or reproduced without written permission.
Compiler Construction using Flex and Bison - HTML book by Anthony Aaby
Programming Ruby -pragmatic programmer's guide. The link goes to the first edition of the book, the second edition is available only in excerpts.
Common Lisp the Language - In this greatly expanded edition of the defacto standard, you'll learn about the nearly 200 changes already made since original publication - and find out about gray areas likely to be revised later. Written by the Vice-Chairman of X3J13 (the ANSI committee responsible for the standardization of Common Lisp) and co-developer of the language itself, the new edition contains the entire text of the first edition plus six completely new chapters.
How We Got Here: A Slightly Irreverent History of Technology and Markets. This is a Silicon Valley and Wall Street primer, it connects the dots through history to how we got to where we are today and covers which new technologies develop from unprofitable curiosities to essential investments. Free PDF download. 
Thinking in PostScript - The book is a result of Glenn Reid's years trying to teach people to write PostScript programs, during which he discovered that people tended to try to make PostScript "look like" other programming languages they already knew. There is even a chapter in this book entitled "PostScript Is Not Like C", because it is really a very different language, and one must learn to "think" in PostScript in order to be a good programmer.
The Autodesk File - Too many business books, like histories of science, tend to tell the story as a straightforward progression from start to finish. Reality is never that easy. Decisions are made in the face of incomplete and unreliable information because they must be made. There's no way to tell a promising avenue of success from a blind alley when you turn onto it--you only find out much later. As you read through these documents, you'll be seeing it all, and if it seems tedious and repetitious, it's because the process of building a company is often tedious and repetitious. But it's also rewarding, and I hope that these documents also convey the feeling of exhilaration, challenge, and accomplishment that everybody felt as we built this company into what it is today.
Designing and building parallel programs - Designing and Building Parallel Programs promotes a view of parallel programming as an engineering discipline, in which programs are developed in a methodical fashion and both cost and performance are considered in a design. This view is reflected in the structure of the book, which is divided into three parts. The first part, Concepts, provides a thorough discussion of parallel algorithm design, performance analysis, and program construction, with numerous examples to illustrate fundamental principles. The second part, Tools, provides an in-depth treatment of four parallel programming tools: the parallel languages Compositional C++ (CC++ ), Fortran M (FM), and High Performance Fortran (HPF), and the Message Passing Interface (MPI) library. HPF and MPI are standard parallel programming systems, and CC++ and FM are modern languages particularly well-suited for parallel software engineering. Part II also describes tools for collecting and analyzing performance data. The third part, Resources surveys some fundamental parallel algorithms and provides many pointers to other sources of information.
Version control with Subversion - This is the online home of Version Control with Subversion, a free book about Subversion, a new version control system designed to supplant CVS. As you may have guessed from the layout of this page. this book is published by O'Reilly Media. This is a place to read HTML and PDF versions of the book (although you can certainly buy a copy if you'd like to). We'll do our best to keep the site up-to-date. As Subversion development continues, the product will continue to grow new features, and we plan to continue documenting those changes.
Introduction to machine learning - Machine learning is usually associated with artificial intelligence. This book provides introduction into the topic in 12 PDF chapters.
Introduction to source control - Our universities don't teach people how to do source control. Our employers don't teach people how to do source control. SCM tool vendors don't teach people how to do source control. We need some materials that explain how source control is done. My goal for this series of articles is to create a comprehensive guide to help meet this need.
Programmer's Introduction to PHP 4.0 - This book from APress is available for sale, but the author and the publisher decided to post the contents online as well. Look for the sidebar on the right for freely available chapters in PDF format.
Two XView books - XView programming manual and XView reference manual from O'Reilly
Programming the Be Operating System - Writing Programs for the Be Operating System - a 1999 title available for free from O'Reilly Publishing.
Object-oriented system development - This book is intended to help the reader better understand the role of analysis and design in the object-oriented software development process. Experiments to use structured analysis and design as precursors to an object-oriented implementation have failed. The descriptions produced by the structured methods partition reality along the wrong dimensions. Classes are not recognized and inheritance as an abstraction mechanism is not exploited. However, we are fortunate that a multitude of object-oriented analysis and design methods have emerged and are still under development. Core OO notions have found their home place in the analysis phase. Abstraction and specialization via inheritance, originally advertised as key ingredients of OO programming, have been abstracted into key ingredients of OO analysis (OOA). Analysis-level property inheritance maps smoothly on the behavior inheritance of the programming realm.
How to Build a Successful Website - Due to the many news stories in recent years about big corporate websites going bankrupt it is a common misconception today that all or most websites are unprofitable and will not make their owners money. This assumption is based on the idea that if big corporations like Disney fail at making a website then your average guy on the street must fail horribly, of course that assumption is wrong. In the case of content driven websites the smaller independent operation often has the advantage over large corporate entities. While an individual or a small group does not have the resources of the large corporation, they also do not have the overhead. If you run a website out of your basement or your bedroom your overhead is already significantly smaller than that of a major corporation because you're not running your website out of a brand new state-of-the-art office building. Additionally if you only have one employee, yourself, you're also reducing your overhead compared to corporations who have to pay for workers who do the same things you do, but also management, building management, building security, maintenance, marketing consultants, development consultants, secretaries, and a myriad of other positions that by keeping your operation small you don't need. The only advantage a corporation has over an individual is that they can afford to pay for gross amounts of advertising both online and off, whereas the typical individual cannot.
PNG: The Definitive Guide - Targeted at graphic designers and programmers, PNG: The Definitive Guide is the first book devoted exclusively to teaching and documenting this important new and free image format. It is an indispensable compendium for Web content developers and programmers and is chock full of examples, sample code, and practical hands-on advice.
Machine Learning, Neural and Statistical Classification - This book is based on the EC (ESPRIT) project StatLog which compare and evaluated a range of classification techniques, with an assessment of their merits, disadvantages and range of application. This integrated volume provides a concise introduction to each method, and reviews comparative trials in large-scale commercial and industrial problems. It makes accessible to a wide range of workers the complex issue of classification as approached through machine learning, statistics and neural networks, encouraging a cross-fertilization between these disciplines.
Learning OCaml, for C, C++, Perl and Java programmers - This is a practical, detailed tutorial for people who already know an imperative or OO-language and wish to learn OCaml. OCaml is a fast, concise and powerful language for application development - but I assume you already knew that, and I also assume you've managed to install it.
Developing Applications With Objective CAML - The desire to write a book on Objective CAML sprang from the authors' pedagogical experience in teaching programming concepts through the Objective CAML language. The students in various majors and the engineers in continuing education at Pierre and Marie Curie University have, through their dynamism and their critiques, caused our presentation of the Objective CAML language to evolve greatly. Several examples in this book are directly inspired by their projects. The implementation of the Caml language has been ongoing for fifteen years. Its development comes from the Formel and then Cristal projects at INRIA, in collaboration with Denis Diderot University and the École Normale Supérieure. The continuous efforts of the researchers on these teams, as much to develop the theoretical underpinnings as the implementation itself, have produced over the span of years a language of very high quality. They have been able to keep pace with the constant evolution of the field while integrating new programming paradigms into a formal framework. We hope through this exposition to contribute to the widespread diffusion which this work deserves. Slashdot review of the book.
Practical Common Lisp - This page, and the pages linked to by it, contains the work-in-progress of Practical Common Lisp which will be published by Apress some time in late 2004 or early 2005. I'm putting this on the web in order to allow folks to give me feedback while there's still a chance for me to do something about it. Please keep in mind, however, that this is not a finished book. I will add some indication on this page as particular chapters reach various stages of completion—you may want to wait until chapters are marked as ready for various kinds of review before spending too much time with them. Or dive right in now if you really want.
Learning to Program Web Tutor - Have you become a computer expert, yet don’t have the foggiest idea how the programs you use everyday are constructed? The “Learning to Program Web Tutor” is designed to introduce the experienced computer user to the world of programming through simple explanations grounded in terms the new programmer can understand. It includes a general introduction to computer programming, its varied history , basic problem solving techniques, and the reasoning behind different types of computer programming concepts.
Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani Algorithms are one of the more challenging aspects of programming. Simply titled “Algorithms,” this text provides a no-nonsense discussion of creating and deploying efficient algorithms. Starting with the conversion of roman numerals to decimals and proceeding to Quantum algorithms, the authors pull no punches as each chapter plods through every type of algorithm structure. The decomposition of graphs and their paths are covered, along with dynamic and linear techniques for developing more efficient devices for sorting, searching, and manipulating data.
Programmed Introduction to MIPS Assembly Language by Bradley Kjell Assembly language remains the fastest way for a human to program a computer outside of pure binary code. With so many scripting languages and layers of libraries, it can be easy to forget the one language that stands above the fray by working at the lowest level possible. If you’re tasked with programming the MIPS processor for lightning fast performance, this guide is a resource that will introduce you to the world of MIPS assembly language. It emphasizes the topics needed to understand the architecture, including bits, bit patterns, operations on bit patterns and how bit patterns represent instructions and data.
How to Design Programs - An Introduction to Computing and Programming - For beginners, this tech book is directed to those who have never learnt any computer programming and need to know the concept of programming. Book doesn’t use any computer language, but explains the concept with easily comprehensible pseudo-code. Divided into 2 parts – simple programming concepts illustrating variables, program constructs, data structures, etc and then complex programming like object oriented concept (abstraction), memory utilization, complex data-structures, etc. Good insight on designing computer programs used universally by all the programs.
Tricks of the Java Programming Gurus By Glenn L. Vanderburg, Free Java book for programmers to expand their knowledge and learn new capabilities of the Java language. Ways to code Java in an optimized way and get the product into production asap. Find ways to make programs fun faster and tighter ... variables, multimedia, image rendering and data retrieval Java topics covered in this Java download book.
PHP Manual: PHP Editors! Programming Tools for Editors: or “PHP: Hypertext Preprocessor” - is a general purpose scripting language used for website development and can be used with HTML. This free tech book download is more like reference guide, which contains installation details, language reference, PHP features and function references. The book chapters are concise description and code example with some reference as it shows in the man command at UNIX or LINUX environment. For advanced programmers, it is a good source of reference.