6+ years of existence
25,000+ students mentored
1 teacher - Subhash.K.U
1. The C Programming Language:
This book (widely known as K&R, after the authors’ initials) has for over twenty years been the best way to learn C Language. A high-intensity tutorial and a great reference book.
Clean Code is a great supplement to any programmer’s bookshelf. In fact, the ability to code cleanly is one of the most sought after traits in programmers.
3. Introduction to Algorithms:
Great reference and great read when you need to get out of the box and think creatively.
4. Code Complete:
900 pages of great wisdom on good software engineering practices
5. The Pragmatic Programmer
It is a book that celebrates the real depth of great programming — something that is too often forgotten or ignored
6. Programming Pearls
A very good book that highlights many important skills that programmers need to pay attention to, such as the concept of invariant, back of envelope estimation and various pragmatic algorithms and data structures concern.
This book is a bit old. It is the first, or among the first, which addresses the refactoring issue. However, everything in it is relevant today.
8. Refactoring for Software Design Smells
There is always a cost in developing poorly structured software systems. This book presents a very good explanation of the cost and traps with designs that have deep technical short comings embedded in it.
9. Design Patterns
The best way to really learn object-oriented design.
10. Art Of Computer Programming
Don’t be intimated by its size and the number of volumes – this is a life work of one of the most brilliant computer scientists of all times.
11. Masterminds of Programming
Conversation with the creators of major programming languages.
50 Programming Quotes
By Awesome Programmers around the world
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.
Lisp isn’t a language, it’s a building material.
Walking on water and developing software from a speciï¬cation are easy if both are frozen.
They don’t make bugs like Bunny anymore.
A programming language is low level when its programs require attention to the irrelevant.
A C program is like a fast dance on a newly waxed dance ï¬‚oor by people carrying razors.
I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer ï¬gure out how to use my telephone.
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
Donâ€™t worry if it doesnâ€™t work right. If everything did, youâ€™d be out of a job.
I think Microsoft named .Net so it wouldnâ€™t show up in a Unix directory listing.
Fine, Java MIGHT be a good example of what a programming language should be like. But Java applications are good examples of what applications SHOULDNâ€™T be like.
Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.
The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.
In the one and only true way. The object-oriented version of ‘Spaghetti code’ is, of course, ‘Lasagna code’. (Too many layers)
FORTRAN is not a ï¬‚ower but a weed â€” it is hardy, occasionally blooms, and grows in every computer. (Too many layers)
For a long time it puzzled me how something so expensive, so leading edge, could be so useless. And then it occurred to me that a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match. (Too many layers)
In My Egotistical Opinion, most people’s C programs should be indented six feet downward and covered with dirt. (Too many layers)
When someone says: ‘I want a programming language in which I need only say what I wish done’, give him a lollipop. (Too many layers)
The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language. (Too many layers)
Good design adds value faster than it adds cost. (Too many layers)
Python’s a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck. (Too many layers)
Talk is cheap. Show me the code. (Too many layers)
Perfection [in design] is achieved, not when there is nothing more to add, but when there is nothing left to take away. (Too many layers)
C is quirky, ï¬‚awed, and an enormous success. (Too many layers)
In theory, theory and practice are the same. In practice, theyâ€™re not. (Too many layers)
You canâ€™t have great software without a great team, and most software teams behave like dysfunctional families. (Too many layers)
PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals. (Too many layers)
Programming is like kicking yourself in the face, sooner or later your nose will bleed.
Perl â€“ The only language that looks the same before and after RSA encryption.
It is easier to port a shell than a shell script.
I invented the term ‘Object-Oriented’, and I can tell you I did not have C++ in mind.
Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry.
The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.
If McDonalds were run like a software company, one out of every hundred Big Macs would give you food poisoning, and the response would be, â€˜Weâ€™re sorry, hereâ€™s a coupon for two more.
Beware of bugs in the above code; I have only proved it correct, not tried it.
Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success.
I don’t care if it works on your machine! We are not shipping your machine!
Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
Debugging is twice as hard as writing the code in the ï¬rst place. Therefore, if you write the code as cleverly as possible, you are, by deï¬nition, not smart enough to debug it.
People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.
Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.
The trouble with programmers is that you can never tell what a programmer is doing until itâ€™s too late.
To iterate is human, to recurse divine.
On two occasions I have been asked [by members of Parliament]: ‘Pray, Mr. Babbage, if you put into the machine wrong ï¬gures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deï¬ciencies. And the other way is to make it so complicated that there are no obvious deï¬ciencies.