Welcome, Guest. Please Login
 
  HomeHelpSearchLogin FAQ Radified Ghost.Classic Ghost.New Bootable CD Blog  
 
Pages: 1 2 
Send Topic Print
HtDP and SICP - compare and contrast (Read 20767 times)
MrMagoo
Übermensch
*****
Offline


Resident Linux Guru

Posts: 1026
Phoenix, AZ (USA)


Back to top
Re: HtDP and SICP - compare and contrast
Reply #15 - Feb 22nd, 2009 at 10:09pm
 
Rad wrote on Feb 22nd, 2009 at 4:24pm:
Your ability to wield these terms show how much further along you are than I am.

The bulk of terms I used are covered in the first few chapters of any programing book and make perfect sense once someone explains them.  I only listed them out to show how simple LISP is in comparison.

Rad wrote on Feb 22nd, 2009 at 4:24pm:
SICP actually uses (technically speaking) Scheme, right? (which is a variant of Lisp)

I think so, yes, but they just refer to it as LISP.

Rad wrote on Feb 22nd, 2009 at 4:24pm:
I'm not so sure I will be one of those who will find this intuitively obvious.

You probably already do non-programing things in these ways, you just don't think about it when you are doing it - which is why I think they don't bother to cover it explicitly in the class.  Its a natural way for people to work, so why make it seem complicated by trying to explain it.

Rad wrote on Feb 22nd, 2009 at 4:24pm:
To be contrasted with the Python book you're reading, which you find too easy. For me, this just means I need to watch the video again. =)  

For sure, I'm being hard on myself, and watching it again is usually sufficient for it to sink in.

There is no doubt that the SICP and the Python book are aimed at completely different college freshmen.  One group is intelligent and motivated.  The other group likely shouldn't have been admitted to college.
 
WWW  
IP Logged
 

MrMagoo
Übermensch
*****
Offline


Resident Linux Guru

Posts: 1026
Phoenix, AZ (USA)


Back to top
Re: HtDP and SICP - compare and contrast
Reply #16 - Mar 8th, 2009 at 1:52am
 
Ok, I finished video 6b.  Finally more than halfway...

I'm continually impressed with the small amount of code they need to express complete solutions.  I'm also continually surprised by the intellectual level of the material.  They head straight for the more philosophical concepts of learning programing.  Besides the programing, the intellectual level of their target audience is often apparent in the types of examples they use or the side concepts they constantly bring up.

For example, during the section on Stream Processing, the instructor builds a stream processor to do numeric integration.  I was in the advanced math class in my high school, and I don't think we even covered integration until towards the end of my senior year.  They have also used electronic circuits and electronic signal processing examples more than once, which isn't something I'd expect a CS freshman to be familiar with.  Perhaps the examples were modified for this class since it was being given to HP engineers who would likely be familiar with this stuff?

I am still enjoying it and learning a lot.  Like I said, they go straight for the philosophical stuff.  Most programing books I've read through teach you about the syntax of whatever language they happen to be teaching.  They show you examples of how to solve specific problems in order to demonstrate that syntax.  SICP focuses more on showing you how to seperate out the specific tasks you need to accomplish and then how to combine those tasks back together to get the job done (or, as they call it, the 'means of abstraction' and the 'means of combination.')

As far as the difficulty of it, that's hard for me to measure.  They do move through concepts quickly and they do aim to turn your model of how things are working on its side about twice a segment.  If you are completely new to programing, you are going to have to spend some time working with each section and getting comfortable with it, or the next section isn't quite going to fit together.

For me, there's only been one section that I really struggled to keep up and had to watch twice (4a, Rule-based substitution,) and I think I was over-thinking it.  What has really helped me cope with SICP is the efforts I made to learn Perl for my new job back in December.  During that time, I found the book Higher Order Perl and ground through it.  I didn't finish HOP, but I really should.  I made immediate use of the information in several programs, and most of them weren't even Perl.  I can relate many of the things discussed in SICP back to a concept I was introduced to in HOP.  

---
As a side note, HOP is available for free here:
http://hop.perl.plover.com/book/
I found it a little boring because the author is a little dry and unoriginal, but the concepts he covers are very useful.  It's a lot of the same concepts they cover in SICP but from a different viewpoint and in Perl instead of Scheme.
---

Since I've seen at least some version of some of these concepts before, I have something to relate back to when they try to turn everything on its side.  I think it helps me keep up and get more insight than I would if I was being introduced to all of this for the first time.

Could you keep up with this if you've never done any programing before (and aren't an MIT level thinker?)  Yes, I think you certainly could.  None of this so far has been so intricate that I would say you couldn't understand it without an amazing brain or a ton of background.  I think anyone (with at least some technical ability) could get this stuff.

Should you start with this as your first course in programing?  That's a different question, and it's hard to answer.  IMHO it depends on how much time and mental energy you want to put into this and what you want out of it.  Anyone could whip through the Python book I read without any fatigue (other than the fatigue generated by irritation with the text's simplicity.)  SICP, however, would take some time and energy if you've never programed before.  I don't want to over-dramatize it and say you should set aside several months of quiet time, but it will take some focus.

Another consideration - I don't think you would be immediately productive after working through SICP.  While you would be ready to *learn* almost any other language, I think that is exactly what you'd have to do - learn another language.  I doubt I'll ever program in Scheme just because the syntax is fairly clumsy.  It codes more like a math equation than a written description of a task (although this trait is entirely intentional.)

On the positive side, you would start out at a much higher level of programing.  I've written programs and scripts off and on for years and they worked perfectly well, but they were all kiddie stuff compared to the types of concepts I'm learning now.  There are things I couldn't have accomplished efficiently without the things I have learned (and indeed, I've already re-written a college's script because he didn't use some of these techniques effectively and the program was too inefficient and was crashing a server.)  

So, starting with with SICP gets you started doing basic programing, while most other text's I've read just make you a decent scripter at best.  If you want to get started quick and easy and just need to write some scripts or just play around, SICP might not be perfect.  If you want to get serious about developing programs, SICP has been excellent for me.
 
WWW  
IP Logged
 
Rad
Radministrator
*****
Offline


Sufferin' succotash

Posts: 4090
Newport Beach, California


Back to top
Re: HtDP and SICP - compare and contrast
Reply #17 - Mar 8th, 2009 at 9:54am
 
MrMagoo wrote on Mar 8th, 2009 at 1:52am:
I'm continually impressed with the small amount of code they need to express complete solutions.I'm also continually surprised by the intellectual level of the material.They head straight for the more philosophical concepts of learning programing.Besides the programing, the intellectual level of their target audience is often apparent in the types of examples they use or the side concepts they constantly bring up.

You got me salivating now. Can't picture details of what you're talking about but I love intellectual discussions on a high level. Iron sharpenes iron. Such discussions tend to elevate all hearers.

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
they go straight for the philosophical stuff

Would/could you use the term 'abstract' here? .. as in concepts that could also be applied to other things, such as life in general?

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
they do aim to turn your model of how things are working on its side about twice a segment.

?? No comprede aqui.

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
If you are completely new to programing, you are going to have to spend some time working with each section and getting comfortable with it, or the next section isn't quite going to fit together.

This would be me, but I have no problem spending whatever time necessary .. especially if there's a decent payoff.

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
What has really helped me cope with SICP is the efforts I made to learn Perl for my new job back in December. During that time, I found the book Higher Order Perl and ground through it. I didn't finish HOP, but made immediate use of the information in several programs, and most of them weren't even Perl. I can relate many of the things discussed in SICP back to a concept I was introduced to in HOP.

Seemingly fortuitous.

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
Could you keep up with this if you've never done any programing before (and aren't an MIT level thinker?)Yes, I think you certainly could.None of this so far has been so intricate that I would say you couldn't understand it without an amazing brain or a ton of background.I think anyone (with at least some technical ability) could get this stuff.

This is the question I and others are (were) really interestsed in learning the answer to.

MrMagoo wrote on Mar 8th, 2009 at 1:52am:
indeed, I've already re-written a college's script because he didn't use some of these techniques effectively and the program was too inefficient and was crashing a server

Made me smile.  Smiley
 
WWW  
IP Logged
 
Rad
Radministrator
*****
Offline


Sufferin' succotash

Posts: 4090
Newport Beach, California


Back to top
Re: HtDP and SICP - compare and contrast
Reply #18 - Mar 8th, 2009 at 10:05am
 
I've gone back and linked this thread to the blog entries discussing these topics, as it might be of interest to folks reading those topics.
 
WWW  
IP Logged
 
MrMagoo
Übermensch
*****
Offline


Resident Linux Guru

Posts: 1026
Phoenix, AZ (USA)


Back to top
Re: HtDP and SICP - compare and contrast
Reply #19 - Mar 9th, 2009 at 8:23pm
 
Rad wrote on Mar 8th, 2009 at 9:54am:
Would/could you use the term 'abstract' here? .. as in concepts that could also be applied to other things, such as life in general?

Hmmm, what do you consider abstract?  I've always sort of defined 'abstract' as 'more philosophical than real' and in that sense, no, this is not mere philosophy, it's real processes for thinking about how to describe a task to a computer.  If you mean abstract like abstract art, I don't think this information is that fuzzy.

Rad wrote on Mar 8th, 2009 at 9:54am:
?? No comprede aqui.

They build mental models about what is really going on inside the process you are writing, then actively seek to upset those models in order to reach deeper levels of understanding.  Kind of hard to explain, but you'd notice it within the first 3 lessons.

Rad wrote on Mar 8th, 2009 at 9:54am:
This would be me, but I have no problem spending whatever time necessary .. especially if there's a decent payoff.

I feel the same way.  I kinda tried to give an indication of the payout - It depends on what your goals are.  If you are serious about learning Computer Science, the payout is high.  If you just want to be able to throw some scripts together to rename files, the information is valuable but not the shortest means to your end.

Rad wrote on Mar 8th, 2009 at 9:54am:
Made me smile.

Me too.  It was the guy's first ever Ruby script (and mine too, come to think of it) but he obviously had some Perl experience before, since all his variables had very Perl-esq names (which doesn't match well to Ruby names.)  The logic in the script was sloppy, and it was taking the server about 35 seconds to process a file that was downloaded every 30 seconds, leading to a bad backlog.  

Fortunately, the comments in the script were very helpful, and I was able to quickly see what he really wanted to happen.  By straightening out the logic and implementing an iterator instead of a 'for loop' I was able to get execution time down under 2 seconds, which impressed my new boss.  So for me, the payoff on learning this stuff has already been worth it.
 
WWW  
IP Logged
 
MrMagoo
Übermensch
*****
Offline


Resident Linux Guru

Posts: 1026
Phoenix, AZ (USA)


Back to top
Re: HtDP and SICP - compare and contrast
Reply #20 - Apr 18th, 2009 at 8:33pm
 
Ok, finally was able to finish the last few videos. 

The last several videos are more pure Computer Science and less about how to write applications.  They cover things like computer language design, compiled vs. interpreted languages, and compiler design.  It's very interesting, but not immediately applicable to getting your hands dirty in code.

There is also a fascinating discussion in the last 10 mins of the last video about software design.  A lot of things I've watched happen with code upgrades at previous jobs make a lot of sense now.
 
WWW  
IP Logged
 

Rad.Test
Technoluster
***
Offline


Rad's non-Admin test-profile
in Firefox

Posts: 108


Back to top
Re: HtDP and SICP - compare and contrast
Reply #21 - Apr 18th, 2009 at 11:14pm
 
Congrats! I was wondering if you were still at it.

Did you download each video first? I think you have to d/l each one b4 you can view it, right?

And there was both a big avi and small mpeg. Which did you use?

http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/

I thought you would have lots more to share.
 
 
IP Logged
 
MrMagoo
Übermensch
*****
Offline


Resident Linux Guru

Posts: 1026
Phoenix, AZ (USA)


Back to top
Re: HtDP and SICP - compare and contrast
Reply #22 - Apr 19th, 2009 at 4:05am
 
Rad.Test wrote on Apr 18th, 2009 at 11:14pm:
Did you download each video first? I think you have to d/l each one b4 you can view it, right?

Ya, they don't let you stream them from the site b/c of bandwidth.  You have to BitTorrent them.  I downloaded the mpeg version on all except for a few videos that didn't have enough peers and I had to download the avi.  The mpeg version isn't very high quality, but its plenty watchable on a computer monitor.  I don't think I'd want to hear their terrible song in any better clarity anyway.  I downloaded the first few out of curiosity and then ended up putting the rest in my queue - so some of them have been waiting patiently on my disk to be watched.

Rad.Test wrote on Apr 18th, 2009 at 11:14pm:
I thought you would have lots more to share.

There's a lot more in my head but it's still too cloudy to transcribe.  For example, I don't think I would recommend this as a first course for someone who is just wanting to write small programs, even though it is an exceptional course.  The better part of the course is meant to get someone thinking about Computer Science problems, and not to immediately help you write code.  

The course contains very rich and valuable knowledge, and I hate to steer anyone with any interest away from it, but I think the return on investment might be a little long for someone wanting to write shell scripts, simple javascript, or any other program less than a few thousand lines.  Practical coding exercises to get started and then some grounded text like Higher Order Perl might be a better use of your time up front.

The bit at the end also got me really interested in Software Design.  I'm wondering how other disciplines like Game Theory and Human Factors might interrelate.  So, my head is full of stuff and I'm not sure how to relay it all in a way that would interest anyone who might read it.
 
WWW  
IP Logged
 
Pages: 1 2 
Send Topic Print