Official SICP/Scheme Study Group Registration (up. 1/26)

Started by
65 comments, last by kSquared 17 years ago
Name: Xloner12
I am interested in joining the group as a: Student
My experience with Scheme is: None
My experience with general programming is: C, Pascal, VB 6
Timezone: GMT -5
Do or do not there is no try -yoda
Advertisement
Quote:Original post by Alpha_ProgDes
Quote:Original post by chollida1
Quote:Original post by Anonymous Poster
I think it might be a good idea to write a short conceptual introduction to what functional programming entails and how it is different from imperative style. Failure to grasp this (there are OTHER ways of writing programs than as sequences of assignments) leads to pain, as Alpha_ProgDes and others have illustrated in the past when they tried to tackle SICP.

Presumably, many students will have prior programming experience with imperative languages only, which is annoying for them because they'll try to write C-style scheme and do worse than the absolute beginners.

So I'll try to whip up a short primer on the conceptual underpinnings of FP and imperative style tomorrow, with plenty of examples, and submit it for comment and review. Forewarned is forearmed, and much frustration may be avoided I think if we can get students to understand this early on.


That's a good point, which is why I suggested that people start out by reading The little Schemer first.

It's nice that someone would take time out of their day to write a tutorial on functional programming but the little schemer is about 200 hundred pages and they had 2 follow up books because they couldn't properly describe the gist of functional programming in that space.

Cheers
Chris

Is the The Little Schemer free and online? Right now, I'm broke...


No its not:(, To bad as its a great book:)

Cheers
Chris
CheersChris
Quote:Original post by Anonymous Poster
Quote:
It's nice that someone would take time out of their day to write a tutorial on functional programming but the little schemer is about 200 hundred pages and they had 2 follow up books because they couldn't properly describe the gist of functional programming in that space.


Are you the next James Joyce?

Does "a short conceptual introduction to what functional programming entails and how it is different from imperative style" mean "a tutorial on functional programming" in your world?

Does "the gist of functional programming" mean "learning the Scheme programming language and loads of scheme techniques in addition to functional programming techniques and everything else in TLS" in your world?

The gist of functional programming is the evaluation rule in the lambda calculus: substitution as computation (and hence referential transparency) instead of mutation of the contents of a variable.

Functional programming techniques are another matter, but the gist of functional programming is so simple that schoolchildren use it in math class all the time. Only when their minds are corrupted by basic does functional programming look weird.

So: I'll ask the students to skim a few paragraphs we'll collaboratively write that'll hopefully save them trouble when tackling the real thing (SICP).

You ask them to buy and read a few books before starting on another book. In a week.

Let's see what approach wins out. ;)


Wow, bitter much??

I was just trying to help others by using my experience. And my experience in learning functional programming was that until I read the little Schemer I just couldn't get the gist of functional programming from tutorials:)

I read your tutorial by the way, its good! Thanks for helping!

Cheers
Chris
CheersChris
This is what I'd try to point out in our little introduction:

  • Imperative languages like C++ and C# are based upon execution of statements and change of state. Programming is like writing a recipe - do this, then this, then this. As programs progress, mutable variables are altered to keep the state of the program.

  • Scheme is a functional language based upon the lambda calculus, a formalism for describing computable mathematical functions. In this model, programs are not based upon execution of statements and changing state like in imperative languages. Instead they are based upon the evaluation of expressions. A function consists of parameters and a function body, which is an expression. Functions are applied to values. When a function is applied, the body is evaluated with the applied values substituted in place of the parameters.
    Give some simple example - ie f(x) = x + 1, so f(4) = 4 + 1 = 5

  • In functional languages, = denotes equality. If x = 5 then everywhere x appears, 5 is substituted. To say x = x + 1 is nonsensical. C++ and C#, etc use = to denote assignment, which is a different concept. Some languages more reasonably use another symbol, for example := or <-, to denote assignment.

  • Almost all functional languages have support for imperative features - statements and mutable state - to be used when appropriate, but these are not their main model of programming.
Recursion, higher order functions, and other features common in functional languages can be left to the book, they aren't underlying conceptual differences that lead to confusion.

Quote:Original post by joanusdmentia
My experience with Scheme is: Did a bit with Prolog (same family of languages, I think) along with some Haskell (functional, but not even remotely similar to Scheme)
Actually, Scheme and Haskell are closer than you think. Scheme is an untyped call-by-value lambda calculus and Haskell is a typed call-by-name lambda calculus. Prolog is a logic programming language and is quite different from both. If you have some experience with Haskell, you shouldn't have a problem with Scheme.
Name: Marten Svanfeldt
I am interested in joining the group as a: Mentor
My experience with Scheme is: uni course taught with SICP, currently writing a raytracer in it as well as a small R5RS-compatible interpreter for scripting in game engine (written in c++ though :)
My experience with general programming is: many years of c++, assembly, c# as well as some coding in functional languages such as erlang and scheme.
Timezone: GMT+1

I think one thing to consider before starting is still the scope. SICP goes quite far, and the later chapters (or at least chapter 5) is more of theoretical comp.sci. intrest than "useful" for coding. Also one should remeber that SICP only covers a subset of what you can do in Scheme (for example it does not show any IO other than through the REPL, that is the interpreter). Maybe a slight alteration to include such parts would be of good use?

-Marten
I'm already on the list, but here's my info:

Name: Ezbez
I am interested in joining the group as a: Student
My experience with Scheme is: Not much, watched first couple video lectures, wrote very basic problems
My experience with general programming is: Almost 2 years with C++. Some experience with Python, PHP, and C#.
Timezone: GMT -5 hours
Name: Alpha_ProgDes
I am interested in joining the group as a: Student
My experience with Scheme is: Little, struggled with SICP and concepts
My experience with general programming is: intermediate, worked with C++, C, Java and C#.
Timezone: US Central (GMT -4?)

Beginner in Game Development?  Read here. And read here.

 

Register now! Hopefully we'll be starting the first chapter in a couple days.

Any word from Muhammed Haggag (sp?) about things?
Name: David Tynnhammar
I am interested in joining the group as a: Student.
My experience with Scheme is: Close to none.
My experience with general programming is: Mostly webprogramming on a smaller scale, but a little bit of C++/C#/Java etc.
Timezone: GMT + 1.
I am interested in joining the group as a: Student.
My experience with Scheme is: Small.
My experience with general programming is: A lot. Also in functional languages like Haskell
Timezone: GMT + 1.
___________________________Buggrit, millennium hand and shrimp!

This topic is closed to new replies.

Advertisement