Radified Community Forums
http://radified.com/cgi-bin/yabb2/YaBB.pl
Rad Community Non-Technical Discussion Boards >> The Water Cooler >> HtDP and SICP - compare and contrast
http://radified.com/cgi-bin/yabb2/YaBB.pl?num=1233785380

Message started by Nigel Bree on Feb 4th, 2009 at 4:09pm

Title: HtDP and SICP - compare and contrast
Post by Nigel Bree on Feb 4th, 2009 at 4:09pm

Rad wrote on Feb 3rd, 2009 at 9:30pm:
a characterization of the skill-set of somebody who works thru the HtDP course

I couldn't say for a couple reasons.

Reading a book is about three main things; the text itself, the unwritten subtext, and the context brought to it by the reader. The result of that interaction can be all over the map - how deep a subtext is present for instance, and how well the reader perceives it and how it interacts with their context.

With SICP, the subtext of the book is exceptionally rich. Small, apparently throw-away comments made in the text can be alluding to astonishingly deep insights about software and the process of creating it. The people who, like me, rate it as perhaps the best book on software development ever written are people who interacted deeply with that subtext (helped by coming to it with a context which make us receptive to its lessons). Others can find the text itself too frustrating to get there, or don't yet have the context to be able to appreciate the subtext.

Really doing HtDP's potential as a book justice would need a deep reading to dig down into that; taking the time to do the exercises, and really trying to engage fully with it and everything it has to offer. And of course, that's just its potential, which some readers will realise and some won't.

The more general point, is that the reason I recommend this kind of material in the first place is not - or at least shouldn't be - really about skills, in the sense that one might list "I did X for Y time" experience on a resume, but rather the understanding and insight which will underpin continuous growth in capabilities throughout a career.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 14th, 2009 at 3:26pm

wrote on Feb 4th, 2009 at 4:09pm:
how well the reader perceives it and how it interacts with their context

SICP is an introductory programming course, yes? Which would infer students/learners taking the course would have as their 'context' little-to-no context. Any 'context' would be from self-study, high-school programming courses (not very popular, I believe) and/or math as it applies to programming .. yes? no?


wrote on Feb 4th, 2009 at 4:09pm:
The people who, like me, rate it as perhaps the best book on software development ever written

This was an eyebrow-raising statement .. especially coming from someone with your background. Do I understandly correctly by inferring the subtext of what you have said here that you feel SICP is best set aside until someone has a requisite amount/level of experience? (re the 'context' statement made earlier).


wrote on Feb 4th, 2009 at 4:09pm:
doing HtDP's potential as a book justice would need a deep reading  

I appreciate your honesty. I think sometimes I feel you know all-things programming .. simply by waiving your hand across a particular text.

I noticed today on this page: http://filehippo.com/download_python/ .. where it said:


Quote:
can be learned in a few days

.. couldn't help but compare that to the HtDP course which supposedly takes a typical college student an entire semester.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 14th, 2009 at 3:33pm

wrote on Feb 4th, 2009 at 4:09pm:
but rather the understanding and insight which will underpin continuous growth in capabilities throughout a career.

I've read other comments from ppl who've worked thru SICP and made similar comments .. that, even tho they've been programming professionally for years gleaned new insights while reading SICP that allowed them to approach things they previously founded daunting with a new-found ease.

.. which is one of the reasons I am attracted to texts like these. Insight is a beautiful thing, and texts that can catalyze it are valuable .. which I why I like to research books on a topic before spending time reading them.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 14th, 2009 at 3:39pm

wrote on Feb 1st, 2009 at 5:23pm:
Yes. Lisp (first proposed ~1958) was basically just a computer version of the lambda calculus (~1936), although actually the first Lisp interpreter in practice didn't match it as closely as it was intended. Lisp is really nowadays best thought of as a name for the entire family of computer languages which are based on the lambda calculus; the details of the differences between them are not that important, you should concentrate just on Scheme.

This answered a lot a questions .. many I didn't even know I had. The light went on.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on Feb 14th, 2009 at 6:44pm

Rad wrote on Feb 14th, 2009 at 3:26pm:
SICP is an introductory programming course, yes?

In the MIT course videos that you referenced on your blog, the instructor seems to infer that the students in the class have some experience with other languages.  Fortran is mentioned a few times as a language that it is assumed the students have experience with.  So, I don't think that was the first class in the CS corriculum.  I'm most of the way through video 2b, and the focus seems to be on managing complexity and higher order procedures rather than an introduction to new CS students.

The videos show their age with the mention of Fortran.  I don't know anyone who works with that now days.  My mom said she learned it in college and hasn't touched it since, and she manages a small team of programmers using a wide variety of languages (cobal, java, perl...) so I get the impression it has fallen out of favor.  Most of the modern languages I've worked with like C, Perl, and Ruby are all capable of doing the things that the instructor mentions Fortran cannot (such as making combinations of combinations and treating functions like 'first class citizens.')  Although, admitedly, some of them don't do it as seemlessly as LISP seems to.  

In Perl, for example, you cannot make a list of lists, but you can emulate it by making a list of the addresses of other lists.  Same with functions - you can't assign a function to a variable and pass it as a parameter, but you can assign a reference (like an address) to a function to a variable, then pass that variable, achieving much the same effect.


Rad wrote on Feb 14th, 2009 at 3:26pm:
Python ...can be learned in a few days... but compare that to the HtDP course which supposedly takes a typical college student an entire semester

I've been looking at Python a little bit, too.  I think that what they mean is that if you are already familiar with Basic or Perl or something or have a programing foundation, then it would only take a few days to learn the syntax of Python.  I bought Programing Python and have been working through that.  (http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1887902996)  It is written as a first semester CS text-book, and the author mentions in the forward that when he teaches from it himself, he doesn't make it all the way through his own book in one semester.  

HtDP is probably along the same lines - the syntax of any language probably only takes a few days worth of time.  It is the concepts of how to design programs that consumes the rest of the time.

(By the way, I'm on the fence about if I'd recommend Programming Python.  It assumes zero experience with programing/scripting/computers and so moves slow for me, but I never did get a proper introduction to CS and still feel like it will be good for me to make sure I've got that foundation.)


Rad wrote on Feb 14th, 2009 at 3:26pm:
Do I understandly correctly by inferring the subtext of what you have said here that you feel SICP is best set aside until someone has a requisite amount/level of experience?

I am very interested in Nigel's answer here, but can also provide my own insight.  I have limited programming experience - I've dabble with it off and on since 5th grade but never taken it seriously.  I'm 2 full lessons into the MIT videos (through video 2b.)  So far, I'm keeping up.  It has not been difficult to understand the lessons.  In fact, there have been times I felt they belabored their point a bit.  So, I think that you could likely understand what is going on.  Now, that doesn't mean you will get the full insight.  That is where I'm interested in Nigel's opinion.

Personally, I think a 'both' approach is best for me.  I'm going to work through the course now and take what I can from it.  In a few years, when I have a more solid foundation, I'll review it again and see what new things I pick up.  I know my physics professor said he had to take Electricity and Magnetism about 3 times over 10 years to *really* know it.  Each time took him to a new level of understanding.  

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 14th, 2009 at 6:59pm

MrMagoo wrote on Feb 14th, 2009 at 6:44pm:
I'm most of the way through video 2b

You are kickin' butt. I'm naturally interested to hear your thoughts as you work thru .. especially if you get flashes of intuition ('ah-ha' insights). I mean, you have to sit up and take notice when so many people claim it is the best-ever (introductory?) course on programming. Makes me want to hardware the course into my brain.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 14th, 2009 at 7:03pm

MrMagoo wrote on Feb 14th, 2009 at 6:44pm:
The videos show their age with the mention of Fortran.  

They mention it, but don't USE it, right? I think Fortran was a teaching language prior to Pascal, which is what I had (for the second half of CS-1A, after we learned what memory and hard drives and CPUs did).

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on Feb 14th, 2009 at 9:30pm

Rad wrote on Feb 14th, 2009 at 7:03pm:
They mention it, but don't USE it, right?

No, no.  They use LISP.  They use Fortran as an example of a language missing much of the deeper power of LISP.


Rad wrote on Feb 14th, 2009 at 7:08pm:
...the first time thru we establish 'buckets' ( a filing-system of sorts) into which we deposit new info. Each subsequent pass allows us to refine our filing system and deposit more info into each bucket.

I think your 'buckets and filing system' might be a good illustration of the 'context' Nigel was talking about students bringing to the material.  

Title: Re: HtDP and SICP - compare and contrast
Post by Nigel Bree on Feb 14th, 2009 at 11:43pm

Rad wrote on Feb 14th, 2009 at 3:26pm:
SICP is an introductory programming course, yes?

Yes, but for first-years at MIT, the most prestigious school for engineers in the world, where a good number of the greatest minds of the 20th century have studied, researched, and taught.

There is also a simple thing to bear in mind about most college courses, which is that students rarely appreciate all that a course has to offer precisely because they don't have sufficient context to realise the importance of some of the content, or have other goals in taking a course than to advance in a field. Lots of important knowledge links together in ways that are obvious once seen, but in order to be seen one needs a certain perspective that is unattainable to most novices. That doesn't mean that college courses shouldn't present such things at all - rather, it's that they serve diverse purposes for diverse students. Some students aren't interested or able and won't progress and others will drain every last drop of insight and who are destined to go on to greater things, and so finding out which students are able to grasp the harder concepts is also part of what the courses are there to do.


Rad wrote on Feb 14th, 2009 at 7:03pm:
I think Fortran was a teaching language prior to Pascal

Not at all. FORTRAN was one of the earliest computer languages and was not a teaching language at all but aimed at doing serious numerical work with high performance (hence the name, FORmula TRANslation, coming from its aim as a vehicle for engineering mathematics). Indeed, it's arguably still one of the most important; partly that's due to the fact that having been around since 1956, there is a staggeringly large body of code. A good deal of numerical supercomputing - modelling weather and climate, simulations of nuclear physics, lots of astrophysics, and so forth -  is still largely done with Fortran.

Fortran 95 updated Fortran with object-oriented programming and Fortran 2003 has evolved it further still. It's still used, still relevant.

Title: Re: HtDP and SICP - compare and contrast
Post by Nigel Bree on Feb 14th, 2009 at 11:58pm

Rad wrote on Feb 14th, 2009 at 3:26pm:
Do I understandly correctly by inferring the subtext of what you have said here that you feel SICP is best set aside until someone has a requisite amount/level of experience?

Not at all. Merely that you'll need a lot of experience to appreciate all it has to offer. As long as you have the ability or experience to connect with it at some level, you'll learn some very valuable things. You may or may not grasp the real jewels it has to offer the first time, but that does not make it any less worthwhile.

It will, however, reward you with even more if you return to it in a couple of years once you do have that context. Reading it again, a sentence that will have generated bafflement or a shrug the first time around will touch off a moment of sudden recognition, and ideally a new understanding will become crystal clear.

By the way, as is made clear on the main page videos they were not given to the regular MIT students, but are recordings made by a cadre of HP engineers for whom a private version of this course was given. That's why the videos do assume the prior experience they do, because the audience had it.

Title: Re: HtDP and SICP - compare and contrast
Post by Nigel Bree on Feb 15th, 2009 at 12:08am

Rad wrote on Feb 14th, 2009 at 3:26pm:
couldn't help but compare that to the HtDP course which supposedly takes a typical college student an entire semester

Bear in mind that university undergraduates regardless of ability have a lot on their plate; they are expected to work on half a dozen or more courses (often in diverse fields) over that time, and that course loads are typically set and paced by university regulations for "regular" students. The time requirements for the HtDP (or SICP) courses are there primarily because the coursework - represented by exercises in the book - need to be completed by students outside lecture time and returned for grading.

So, in one sense the difference in time requirement isn't as great as it might first appear. The difference is still real though, but it's more a qualitative one - because all the kinds of course that do promise that kind of instant reward aren't aiming to instil any insight at all. They are merely "how to do simple things in a getting-by subset of the language", and nothing more than that.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on Feb 21st, 2009 at 12:17am
Breaking off this discussion from the original thread to try to keep the topic/thread and thread length both down to manageable levels.  I left all the original posts in tact in the original thread, tho, cuz I couldn't surgically remove them without loosing some context.

For reference, original thread is here:
http://radified.com/cgi-bin/yabb2/YaBB.pl?num=1232324869/0

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on Feb 21st, 2009 at 6:35pm
Ok, so I'm through video 4a of the SICP series.  Approaching the halfway point.  It is definitely different than any other instruction I've read on programing.  

Every other instruction I've been through showed you how the language was and then proceeded covering how to solve tasks with that language.  You get used to figuring out how to force the computer to do what you want through brute-force.

As Nigel already mentioned, LISP is redicoulously simple as a language.  There are only a few primitives provided by the language and I've only seen really one structure type.  Most languages have variables, arrays, hashes, for loops, do loops, until loops, functions, classes, private methods, public methods, instance variables, class variables, and lots of other built-in stuff.  In contrast, so far, all we've seen in LISP is variables, pairs, and function definitions.

Despite its limited scope, LISP seems incredibly flexible.  All of the stuff its missing that other languages have could easily be constructed in a few lines of code, so it never feels underpowered.  In contrast, its simplicity seems to leave open every option.

What I'm really enjoying about the course is the way they approach writing programs.  I was hoping it would teach me techniques for how to approch writing programs.  I expected things like top down design, and prototype and spiral design to be covered extensively.  In this case, they seem to just assume the student can grasp those topics as obvious (and they really are sort of natural ways to solve tasks and should take much explanation.)

What they push instead as a design philosophy is writing code to extend LISP to have the language you need to ask the computer to solve your problem naturally for you.  It's kind of the way I've always felt I wish I could program - the way I wanted to approach problems.  Until know, I lacked the skill-set to understand it was possible, so I just muddled through the task as best I could with what the language of the day provided (like I had been taught.)

Using their stated design philosophy of 'design by wishful thinking,' they kinda just will the program into existance.  Rather than think about how a program can be solved with the tools available, they think about how they'd would like to solve it and then invent the tools that are necessary.  The result is compact, elegant solutions to problems that start out looking really thorny.

The only thing I don't like about this course is that at times it makes me feel stupid.  Sometimes I'm mad at myself for not seeing how to do this sooner.  Sometimes I'm upset I have to watch the video twice to really get the point.  Overall, though, its worth the understanding I'm developing.  

And to think I'm not even working through the text - just watching the videos.  I am going to try to start making time for the text in the next few weeks.  Makes it hard to imagine what they cover in the upper-level classes...

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on Feb 21st, 2009 at 8:59pm
Just watched 4a again.  Definitely glad I watched it a second time.  One of those things where you go from ignorance on a subject to confusion on the subject the first time through.  The second time you sort out some confusion and learn something.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on Feb 22nd, 2009 at 4:24pm

MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
Most languages have variables, arrays, hashes, for loops, do loops, until loops, functions, classes, private methods, public methods, instance variables, class variables, and lots of other built-in stuff.

Your ability to wield these terms show how much further along you are than I am. I mean, learning the terms that a new disciple uses is a significant part of learning that disciple (such as Programming).

BTW thanks for taking the time to post your progress. It's encouraging for me to progress down the same path.


MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
Despite its limited scope, LISP seems incredibly flexible.

SICP actually uses (technically speaking) Scheme, right? (which is a variant of Lisp)


MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
What I'm really enjoying about the course is the way they approach writing programs.

That's a sentiment everybody seems to echo. I think that would be something you could apply to *any* programming language.


MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
In this case, they seem to just assume the student can grasp those topics as obvious  

I'm not so sure I will be one of those who will find this intuitively obvious.


MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
The result is compact, elegant solutions to problems that start out looking really thorny.

Exciting. I like the feeling of competence .. of knowing how to bring an elegant solution to a thorny problem.


MrMagoo wrote on Feb 21st, 2009 at 6:35pm:
The only thing I don't like about this course is that at times it makes me feel stupid.

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. =)

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on 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.  :)

Title: Re: HtDP and SICP - compare and contrast
Post by Rad on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by Rad.Test on 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.

Title: Re: HtDP and SICP - compare and contrast
Post by MrMagoo on 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.

Radified Community Forums » Powered by YaBB 2.4!
YaBB © 2000-2009. All Rights Reserved.