13
votes

I was wondering what are some really tough books on programming that would make me think. I'm talking about low level languages such as c etc and algorithms, points, functions etc.

Thanks ALot.

7
  • 1
    Most of the Wrox series is pretty chewy. Commented May 3, 2011 at 2:29
  • 1
    Why are people downvoting? The OP just wants some books that would present him a challenge... it's not a stupid or OT question. Commented May 3, 2011 at 7:06
  • 4
    This is not a very good question. In particular, I think it lacks a clear criteria for judging books. "Tough" and "make me think" are pretty subjective -- we don't know you and what will be tough or easy for you. Or how it would apply to other people, for that matter. It also does nothing to inspire answers to explain why the books are recommended, potentially going against the constructiveness guidelines. Some editing could help, I think.
    – Adam Lear
    Commented May 3, 2011 at 13:16
  • 4
    @Melanie - this is a "list of X" type question which will just get people's favourite book posted as an answer. If you check the answers none of them have any explanation of why the book mentioned fulfils the OPs requirements (well one does, but that's out of 10 answers).
    – ChrisF
    Commented May 3, 2011 at 13:37
  • 1
    I agree with @Anna and @Chris above, this question lacks key parts, such as explaining why these books are hard or how to grade books against each other.
    – Josh K
    Commented May 3, 2011 at 18:18

10 Answers 10

28
votes

The Art of Computer Programming. Donald Knuth.

9
  • 3
    Why? What makes it so good? Please expand your answer.
    – Walter
    Commented May 3, 2011 at 14:31
  • 2
    You should include that in your answer. I have read it, but anyone who hasn't will get NO sense of why they should even look into your suggestion.
    – Walter
    Commented May 3, 2011 at 14:40
  • 3
    @Walter: I don't think I agree. I don't think it needs any expansion. The book is so toweringly important and so central to computing that I don't feel it needs explanation.
    – S.Lott
    Commented May 3, 2011 at 14:43
  • 1
    It's the book programmers are mostly likely to plan on reading someday. Commented May 3, 2011 at 15:27
  • 1
    @RYUZAKI: "i want to be prepared before i jump in to something which seems to be so difficult and so rewarding" Don't bother trying to "prepare". Just jump in. When you find a subject that's beyond you, you'll know what you need to learn. It's a life-long pursuit. You cannot possibly be prepared enough. You'll always need to learn yet more.
    – S.Lott
    Commented May 4, 2011 at 12:07
12
votes

Introduction to Algorithms

Not so "introductory" ;)

5
  • 1
    Why not (“so ‘introductory’”)? This is an introduction, used in CS 101. Commented May 3, 2011 at 8:16
  • 1
    @konrad: AFAIK, most university only use several chapters of these books for teaching.
    – Hery
    Commented May 3, 2011 at 12:06
  • Now I had to look it up, demolishing my laptop stand in the process (I use the Cormen as support for my laptop …). And you’re right. I forgot the latter parts of the book; these are indeed subject of later lectures (some in master courses). Commented May 3, 2011 at 14:33
  • @konrad: hery nailed it. Commented May 3, 2011 at 14:37
  • @konrad: sounds like an eventful process ;) Commented May 3, 2011 at 14:41
10
votes

A Discipline of Programming, by Edgar W. Dijkstra

How to write provably-correct code

This it not a book to read, it's a book to study

6
  • steven i havent really looked into this book ; but it makes me ask a very critical question : is it of any use for say, a WEB developer or a C++ coder [device drivers,etc] or an Android developer ? I am asking you if it is worth my time ? [cont in next comment]
    – Chani
    Commented May 3, 2011 at 8:09
  • [cont from previous comment] i am new but i learn Wickedly fast. I read tonnes of blogs , Open Source code, etc. So is reading the above book (and others of its kind) really going to help me ? And friend; the only reason i have such pessimistic attitude is that i had read Design and Analysis of Computer Algorithms by Aho et. all and to tell you the truth i have been hardly using that knowledge ..... but again i only have been programming seriously for less than 6 months. so what would you say ?
    – Chani
    Commented May 3, 2011 at 8:09
  • 1
    @RYUZAKI: So you've been programming seriously less than six months, and you found the Aho et al. algorithms book not immediately useful? Then you're not looking for the books mentioned in this question. You might want to take some time and get more comfortable in the field and then come back to these. The books in these answers (the ones I know, anyway), will teach you things and greatly expand your understanding. They won't make you a better C# developer immediately, if that's what you're looking for now. Commented May 3, 2011 at 13:37
  • +1: And also David Gries' Science of Programming. A companion book that expands on the themes.
    – S.Lott
    Commented May 3, 2011 at 14:50
  • 2
    @RYUZAKI like most deeper CS texts, you get out of it what you put into it. I got a new appreciation for the mathematical beauty of programming, along with direct experience designing and proving the correctness of very small programs. It took the better part of a year to work my way through the book. Commented May 3, 2011 at 15:32
9
votes

The dragon book will certainly help you to understand low level concepts.

1
  • good one. i had to study it as part of my CS syllabus and found it very interesting , challenging as well as enriching experience
    – Chani
    Commented May 3, 2011 at 7:53
6
votes

Seven Languages in Seven weeks will give you a lot to play with. When All else fails read "Structure and interpretation of Computer programs" One of the best books ever on programming.

2
  • 2
    "Seven Languages in Seven Weeks" is extremely cool but not really a tough programming book.
    – Chiron
    Commented May 3, 2011 at 10:36
  • If your goal is for a book to be hard for the sake of being hard you are right, on the other hand it is a book that has a lot of good information in it
    – Zachary K
    Commented Nov 4, 2012 at 7:20
4
votes

I would highly recommend Numerical Recipes: The Art of Scientific computing.

A fantastic book, which details many useful scientific algorithms. Over my career in embedded and industrial computing system, one version or another, in one language or another1, has been my constant companion.

  1. Prior to third edition, there were different books for different for different languages, so there were Numerical recipes in C, Numerical recipes in Fortran and even Numerical recipes in Pascal.
2
  • Wow, I haven't even thought about hat book in about 15 years
    – Zachary K
    Commented May 3, 2011 at 8:50
  • Yeah, I bought a first edition at university and have managed to find a use for the algorithms in those books in every job I've worked at since.
    – Mark Booth
    Commented May 3, 2011 at 10:26
2
votes

Some alternatives to the well-known (and excellent) books already suggested:

  • Database Systems: The Complete Book, 2nd ed. has a second part that actually explains how a DBMS itself is implemented. Has a lot of material on how to efficiently store and index data and how to actually execute queries in the database.
  • An Engineering Approach to Computer Networking discusses the deepest details of actually making networks work. If you ever want to implement a high performance networking application or device, this text will provide a great fundamental background.
  • Approximation Algorithms consists of an extensive overview of combinatorial optimization problems. The author advises to study the problems in-depth before trying to create an approximation, which is very instructive.
  • Types and Programming Languages is 600+ pages of theory and implementation techniques dedicated to types in programming languages. It turns out there is an incredible amount of theory to deal with. If you ever want to create a full-blown programming language, there's a lot to learn here.
2
votes

Low level of .NET: CLR via C# by J. Richter. Worth reading if you want to know the core of .NET.

1
vote

I recently started reading Hacker's Delight (http://www.amazon.com/Hackers-Delight-Henry-S-Warren/dp/0201914654). It might not score very high on the tough aspect. But I would give it high scores on thoroughness, low level and clever problem solving, true to the spirit of it's name.

1
vote

You can start to learn Lisp langs. That will sure be tough ! Plus its a happy breakk from regular programming

Not the answer you're looking for? Browse other questions tagged or ask your own question.