to be a Programmer
To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one's coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one. This is very subjective and, therefore, this essay is doomed to be personal and somewhat opinionated. I confine myself to problems that a programmer is very likely to have to face in her work. Many of these problems and their solutions are so general to the human condition that I will probably seem preachy. I hope in spite of this that this essay will be useful.
Engineering for Internet Application
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 amazon.com by him or herself."
Other people who might find this book useful include the following:
professional software developers building online communities or other multi-user Internet applications
managers who are evaluating packaged software aimed at supporting online communities?various chapters contain criteria for judging the features of products such as Microsoft Sharepoint or Microsoft Content Management Server
Programmer's Guide to the Mind
This book is a Programmer?s Guide to the Mind. In it, we will attempt to do two things: We will try to explain how the mind works, and we will also show how a person can make it operate more effectively. If we compare the task of developing the mind to that of taking a journey, then this volume could be described as a combination road map and tourist guide. While there are many similarities between a brain and an electronic computer, there are also several factors which make the human ?computer? unique: First of all, it is rather large. The electronic chips which are contained in the computers of the 1990s are constructed from flat little squares of silicon, no bigger than postage stamps. In contrast, the human thinking apparatus is a three pound, three-dimensional, solid chunk of neurons and interconnections. The average human brain contains about one hundred billion neurons and around one hundred trillion connections.
This book is an introduction to the study of programming languages. The material has evolved from lecture notes used in a programming languages course for juniors, seniors, and graduate students at Johns Hopkins University. The book treats programming language topics from a foundational, but not formal, perspective. It is foundational in that it focuses on core concepts in language design such as functions, records, objects, and types and not directly on applied languages such as C, C++, or Java. We show how the particular core concepts are realized in these modern languages, and so the reader should emerge from this book with a stronger sense of how they are structured.
Elements of Abstract and Linear Algebra
This is my textbook Elements of Abstract and Linear Algebra. It covers abstract algebra in general, but the focus is on linear algebra. Here is a brief outline of the six chapters.
Background: Equivalence relations, injective, surjective, and bijective functions, product of sets, unique prime factorization in the integers.
Groups: Normal subgroups, quotient groups, homomorphisms, permutations and symmetric groups, product of groups .
Rings: Ideals and quotient rings, Zn, homomorphisms, polynomial rings, product of rings, Chinese remainder theorem, characteristic, Boolean rings .
Recommend the tutorial