After the test I had a while ago, I received the news that my final grade is 88%. IMVHO, I deserve more, but perhaps I should have stayed a while in the testing room and gone over the test, instead of handing it right away, like I did.
Not staying to go over the test, seems to be a theme of mine lately in the Technion. I just don't have the nerve to spend more time in the testing room and ahttp://groups.yahoo.com/group/fc-solve-discuss/message/283m anxious to get out ASAP. I'd like to break this habit for the Game Theory test though.
Next semester I am taking the course "SICP 2", which from what I understood is being taken by very few students. Dudu, Eran's friend, is taking it too, so I'll have a partner in case the course gives way to them. The course covers the other part of the book, with the interpreters and the compiler as well as some external material.
When I read the book I found it strange that it is a register machine where every register can hold an entire S-expression. I.e: '(hello (6 (9 0) jkl (uo) op) kl). Now put this in the EAX register of a Pentium...
But thinking about it, Abelson and Sussman got along with very few registers, so I don't think consing several values into one register, could give any advantage. And Parrot has registers which are strings of unlimited length or those "Parrot Magic Cookies", so it's probably a relatively common idiom in designing high-level virtual machines.
Nevertheless, I don't think the book gives the readers enough knowledge to implement a Compiler from Scheme to a Real-Life Assembler. But that's what the Dragon Book is for probably. I did not read the Dragon Book as of yet, but I'd like to, sometime.
Being home after the SICP test gave me some time to work on Freecell Solver vis-a-vis with studying for Game Theory. After fine-tuning the FCS 2.2.x autotools parameters, I started working on implementing the so called "Soft Threads".
By "Soft Threads" I mean a way for several parallel scans to operate on the same state collection. I remember that last time I tried it (in what should have been FCS 1.8.x), it took me a very long time to get everything working and even then it was not flawless. This time, howver, working on gvim with a lot of substitutions and an internal framework that was adapted to it a-priori, I managed to get it done very quickly. God bless Linux.
The code is very stable now, and the soft threads work beautifully. Refer to the following URL for more details.
There is still a minor glitch I encountered, which I'll have to deal with. And then there is a mis-feature in the range solver, which I'll have to adapt to the new architecture.
Incidentally, Tom Holroyd released PatSolve 3.0 recently. He claims that he managed to code a very speed-wise optimized mode using a genetic algorithm. I was not able to compile it (probably due to a python version mismatch) and Tom is out of town until next Wednesday, so I'll just have to wait.