Just check out in Amazon a bunch of programming books which could be useful in job interviews. Of course, there are 4 essential sets of book I think everyone should read - I will say DEK, CLRS, Segewick and Bentley are the most essential. Then there are the more advanced version of books which are mostly used for preparing interview. PIE, Cracking Interview, Algorithm for Interviews. Of course this doesn't count books about languages.
I believe a sane way is to follow one single book first and then get it through till the end. During the time, it's alright to reference with other books. Once you finish 1 book, then move on to finish another one. In this way, genuine improvement will come to you.
This is my self-study page for the book, "Introduction to Algorithm", or commonly known as CLRS. This is also my diary page of how I struggle and grow in the programming world. I hope this blog can help amateurs or professionals, to improve their skills in programming, learning and living. As of Sep 12, 2011, I finished the "exercise read" of Chapter 2 (20110518) and 3 (20110608) and half of Chapter 4.
Shortcut for chapter specific information
Chapter4
(62)
chapter3
(41)
Chapter2
(22)
chapter6
(10)
chapter12
(9)
chapter15
(8)
chapter13
(7)
chapter7
(7)
Chapter10
(5)
chapter5
(5)
Appendix A
(4)
chapter8
(4)
Chapter19
(3)
Chapter22
(3)
Chapter34
(3)
Chapter35
(3)
chapter11
(3)
chapter16
(3)
chapter18
(3)
Appendix C
(2)
Chapter21
(2)
Chapter25
(2)
Chapter26
(2)
Chapter27
(2)
Chapter28
(2)
Chapter29
(2)
Chapter9
(2)
chapter14
(2)
chapter20
(2)
chapter23
(2)
chapter24
(2)
chapter30
(2)
chapter31
(2)
chapter32
(2)
Appendix D
(1)
Chapter1
(1)
Chapter33
(1)
chapter17
(1)
Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts
Thursday, April 28, 2011
Monday, April 18, 2011
Correctness of programming
Sometimes you can have powerful conviction when you are doing fundamental training for yourself. What I did today was to read he first few chapters of Gries' "Science of Programming".
For good and bad reasons, I have voluntarily/unvoluntarily programming for many years. Unlike many wiz kids, I wasn't natural in terms of computers. My understanding of programming largely comes from "intuition".
That's bad.
In fact, that could result in the worst type of programming technique - debugging by print. It is the worst because you want to dump the guts of the program and you think that means you know what's going on. Your feeling, instead of logic, are playing a role.
What's the problem? Well sometimes you can't print everything. If the bad logic occurs in the inner loop, then you can potentially have display messages which cannot be analyzed.
The next worst thing is to program by debugger. This is better than programming by print. But still, when the programming is written, weren't you able to know where the potential issue come from already?
Then I start to meet good programmers. The thing is most of them put much time upfront. Instead of spending time in debugging the program. Since they know, if you would like to be efficient in long run. This is the way to go.
I read TCRC and then Gries. Perhaps later I will read DEK (or finish reading.....). Then I realize how much time I have been wasting in debugging. That's not a bad conviction. In a way, it is empowering. It's a bit like you start to use a certain emacs macro correctly without retyping. Or a unix command without manning the command. Or start to use perl one-liner instead of a combination of awk/grep/sed. This is powerful.
33_P
For good and bad reasons, I have voluntarily/unvoluntarily programming for many years. Unlike many wiz kids, I wasn't natural in terms of computers. My understanding of programming largely comes from "intuition".
That's bad.
In fact, that could result in the worst type of programming technique - debugging by print. It is the worst because you want to dump the guts of the program and you think that means you know what's going on. Your feeling, instead of logic, are playing a role.
What's the problem? Well sometimes you can't print everything. If the bad logic occurs in the inner loop, then you can potentially have display messages which cannot be analyzed.
The next worst thing is to program by debugger. This is better than programming by print. But still, when the programming is written, weren't you able to know where the potential issue come from already?
Then I start to meet good programmers. The thing is most of them put much time upfront. Instead of spending time in debugging the program. Since they know, if you would like to be efficient in long run. This is the way to go.
I read TCRC and then Gries. Perhaps later I will read DEK (or finish reading.....). Then I realize how much time I have been wasting in debugging. That's not a bad conviction. In a way, it is empowering. It's a bit like you start to use a certain emacs macro correctly without retyping. Or a unix command without manning the command. Or start to use perl one-liner instead of a combination of awk/grep/sed. This is powerful.
33_P
Language Learning and Programming
For a while I believed I have absolutely no talents in programming. Same could be said for language learning. Somehow I just don't think I am natural on anything which requires writing.
But then two events happened, I was able to read a large amount of books and I was able to read in Spanish in a short period of time (less than half a year). Admittedly, these are not things people can't do better. Though, it does show I have minimal amount of talents on things I felt I had none.
I hope the same story could be applied to programming. After all, to learn one thing, the key is to practice and practice. Intelligence helps, but persistence is the real key.
33_P
But then two events happened, I was able to read a large amount of books and I was able to read in Spanish in a short period of time (less than half a year). Admittedly, these are not things people can't do better. Though, it does show I have minimal amount of talents on things I felt I had none.
I hope the same story could be applied to programming. After all, to learn one thing, the key is to practice and practice. Intelligence helps, but persistence is the real key.
33_P
Subscribe to:
Posts (Atom)