13

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.

Brandon_R
  • 377
  • 2
  • 10
  • 1
    Most of the Wrox series is pretty chewy. – Joel Etherton May 03 '11 at 02:29
  • Why the downvote? – Brandon_R May 03 '11 at 02:37
  • 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. – Melanie Shebel May 03 '11 at 07:06
  • Hopefully they're tough because their subject matter is tough, not because they're badly written! – Andrew Grimm May 03 '11 at 08:08
  • 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 May 03 '11 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 May 03 '11 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 May 03 '11 at 18:18

10 Answers10

29

The Art of Computer Programming. Donald Knuth.

S.Lott
  • 45,390
  • I certainly gave up and decided I needed to wait until my university gave me a discrete math course. :D – Kit Sunde May 03 '11 at 14:23
  • 3
    Why? What makes it so good? Please expand your answer. – Walter May 03 '11 at 14:31
  • @Walter: What makes it so good? It is definitive, complete and tough on folks who don't have a lot of advanced math. You should look at it some time. – S.Lott May 03 '11 at 14:38
  • 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 May 03 '11 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 May 03 '11 at 14:43
  • 1
    It's the book programmers are mostly likely to plan on reading someday. – Steven A. Lowe May 03 '11 at 15:27
  • Definitely the best answer –  May 03 '11 at 17:50
  • so how much math does it really demand ? i ask cos its expensive and i want to be prepared before i jump in to something which seems to be so difficult and so rewarding – Chani May 04 '11 at 04:48
  • 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 May 04 '11 at 12:07
13

Introduction to Algorithms

Not so "introductory" ;)

Demian Brecht
  • 17,585
10

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

  • 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 May 03 '11 at 08: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 May 03 '11 at 08: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. – David Thornley May 03 '11 at 13:37
  • +1: And also David Gries' Science of Programming. A companion book that expands on the themes. – S.Lott May 03 '11 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. – Steven A. Lowe May 03 '11 at 15:32
  • @ Steven and @David Thanks a lot for your reply. And yes Design and ANALYSIS OF algorithms did help in understanding recursion; graphs; divide and conquer etc – Chani May 04 '11 at 04:32
9

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

  • 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 May 03 '11 at 07:53
6

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.

Zachary K
  • 10,413
  • 2
  • 38
  • 55
  • 2
    "Seven Languages in Seven Weeks" is extremely cool but not really a tough programming book. – Chiron May 03 '11 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 Nov 04 '12 at 07:20
4

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.
Mark Booth
  • 14,302
2

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.
Deckard
  • 3,427
2

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

oleksii
  • 1,206
1

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.

vpit3833
  • 1,320
1

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

Chani
  • 1,445