Currently I am making my way through "The Ultimate Hitchhikers Guide to the Galaxy", which includes "The Hitchhiker's Guide to the Galaxy", "The Restaurant at the End of the Universe", "Life, the Universe and Everything", "So Long, and Thanks For All the Fish", "Young Zaphod Plays it Safe", and "Mostly Harmless". I started reading this in December but have just finished "So Long, and Thanks For All the Fish" and "Young Zaphod Plays it Safe" this weekend. I have yet to start on "Mostly Harmless" but will update when I finish it.
I've been wanting to read these books for a while now. This was mostly because the people around me are always making jokes that involve inside knowledge of the book series. For example, the number 42. Because of this I had stated to my wife that I was interested in reading the series and she bought me the entire leather bound set with a nice bookmark tassel thing.
The first two books were great. I guess I knew most of the story or the first book so it wasn't as illuminating as I though it would be, but I knew absolutely nothing about TRATEOTU. It was simply hilarious. My favorite part is when they are ordering dinner and the cow comes around to ask them what cut of beef they want. The next book was a bit slow, although it had it's moments. SLATFTF was weird and I'm not sure what to make of it. It seemed really quick and didn't really explain much about what had happened, but maybe that will get clarified in the last book. YZPIS was a short story that was mildly entertaining.
I guess you really just need to read the first two and decide for yourself if you are interested enough to read the rest of them. So far they are the best anyways.
The next two problems I had trouble on. I am no math wizard. I initially came up with: (g n) computes to 2(A(1, n - 1)) and figured that I had the wrong notation and that the answer wasn't really completed because A(1, n -1) makes another recursive call. What I didn't intuitively realize was that this is really 2^n.
(h n) Same thing with this one the answer is 2^h(n-1).
Although I am trying to go through these myself I had trouble grasping these ones, but now get it. I also got to read the Ackermann's function Wikipedia entry.
1.6 IF is a special form, meaning that it does not apply the operator (IF) to all of the opperands. New-if however does apply the operator to all the operands and because of the recursive call to (sqrt-iter) it never ends.
1.7 Running (sqrt 1000000000000000) takes an extremely long time to finish (I stopped it so don't really know if it actually does finish). (sqrt 0.00001) produces the result 0.008235 when the correct answer is 0.003162. Changing good-enough? to
(cond ((and (< x y) (< x z)) (sum-of-squares y z))
((and (< y z) (< y x)) (sum-of-squares x z))
((and (< z x) (< z y)) (sum-of-squares x y))))
1.4
When b is greater than 0 the + operator is used, otherwise the - operator is used.
1.5
Because applicative-order evaluation evaluates the arguments and then applies them, the procedure p defined as (define (p) (p)) would call itself over and over when called with (test 0 (p)) where the procedure test is defined as (define (test x y) (if (= x 0) 0 y)). Normal-order evaluation however will not have this problem because it does not evaluate the arguments, but rather expands them and reduces them. (test 0 (p)) would simply return 0.
Notes: I see now that I could have simplified 1.3's sum-of-squares-larger-num to use min. It would have made what was going on clearer, but I wrote it using and's first and tested it out. It works so I just left it.
My goal is to complete both of these courses by May. That gives me a full 4 months. I haven't set out a complete schedule, and probably won't being that this time constraint isn't really definitive. If it takes me a little longer it isn't really that big of a deal, but I want to get them both done before we head over to Europe in June.
I have already started the SICP lectures and book. That is going well so far. The first lecture and subsequent parts of the book deal with the basics of scheme, which I already knew. Pretty quickly though they both start covering some really cool new stuff, and I am already learning a ton even though I just started. It is funny that these lectures were recorded in 1986 yet still are platinum lectures. These lectures make it rain.
Now I've had the MIT Intro to Algorithms book for about a year now. I've read chapters here and there. I think the beginning sorting ones and some others scattered throughout. I have done none of the exercises though, and haven't really understood very much of what is going on. The basic sorting stuff I get but anything more complex then that is over my head. Hopefully the lectures will help with that. The thing that worries me the most is my lack of math knowledge. I have had extremely little formal math training. I guess little non-formal math training too. I'm trying to find a decent free discrete math book to pick up while I am going though the lectures, but I'm also worried that this may be too much to handle all at once. Regardless I am going to have to buckle down and get my feet wet with discrete math before I fully understand algorithms.
The ultimate goal is to keep learning more and more about what interests me. I was not a computer science major, but rather a philosophy major. The highest math class I took was statistics. Thankfully during my employment as a programmer statistics and basic algebra is the only math that I have used. Still though I want to improve myself and keep going full speed with CS.
This month I will have officially have been working in the technology field for 10 years. I never really planned on being a programmer as a career but now I couldn't imagine being anything else. The truth is that I love programming and program even when I'm not working. I've also learned a lot in 10 years about unix(linux, bsd), programming language, markup languages, security, networking, telephony, version control, and all kinds of things.
I'm thinking of starting a book list this year too. I read quite a lot of books last year and would like to start keeping track of them. Maybe I will post here whenever I finish a book.
I'm excited for the new year and am ready to get reading/lecture watching/learning.
$ cat resolution.lst These are in no particular order.
1. Go through the entire SICP lectures and keep up with the book AND do all the exercises. 2. Get mapfilter to a usable state. 3. Contribute the full amount to my IRA. 4. Buy Detox and Only Built 4 Cuban Linx 2. 5. Put enough in savings for a downpayment on a condo. 6. Go to Europe. $