Questions tagged [sicp]

Structure and Interpretation of Computer Programs (SICP) is a classic textbook for learning how to program. The language used in the book is Scheme, a dialect of Lisp.

Quoting the Wikipedia page:

Structure and Interpretation of Computer Programs (SICP) is a textbook published in 1984 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology (MIT) professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman. It was formerly used as the textbook of MIT introductory programming class and at other schools.

Using a dialect of the Lisp programming language known as Scheme, the book explains core computer science concepts, including abstraction, recursion, interpreters and metalinguistic abstraction, and teaches modular programming.

The book is available online, with accompanying video lectures.

14 questions
32
votes
13 answers

Help in understanding computer science, programming and abstraction

Until now, I always believed that you should learn programming languages that make you do low-level stuff (e.g. C) to understand what's really happening under the hood and how the computer really works. this question, this question and an answer…
11
votes
2 answers

Approaching SICP in Clojure instead of Scheme

I am a third year bachelor student in a software engineering program, and I brought up the idea of reading SICP to an adviser to gain a deeper and more fundamental understanding of the principles behind all this software we engineer. He suggested…
ironicaldiction
  • 269
  • 2
  • 8
9
votes
1 answer

SICP - Why use accumulate with cons when filter already passes back a list

In SICP 2nd Edition section 2.2.3, the authors have the following code: (define (even-fibs n) (accumulate cons nil (filter even? (map fib (enumerate-interval 0 n))))) My…
RAbraham
  • 193
  • 6
7
votes
2 answers

normal order evaluation -vs- applicative order evaluation

I am going through Abelson and Sussman (Structure and Interpretation of Computer Programs) and I am a little confused about when normal order evaluation is used and when applicative order evaluation is used. This sentence throws me off: Lisp uses…
Jonathan Henson
  • 5,039
  • 3
  • 26
  • 33
5
votes
1 answer

What features does MIT-Scheme have that make it ideal for SICP?

I've been thinking about trying to get through the SICP again, this time well-armed with a better idea of what the SICP is meant to accomplish, and being older and wiser than my first attempt back in university. I've been told by old hands that the…
Elf Sternberg
  • 278
  • 2
  • 8
4
votes
2 answers

constraints in developing software

According to this As opposed to the constraints in other kinds of engineering, where the constraints of what you can build are the constraints of physical systems, the constraints imposed in building large software systems are the…
4
votes
1 answer

Help in writing more generic code

I'm doing a php MVC project using code igniter. I have two models, a and b. Each class contains four functions (insert, delete, update and view) and their implementations are almost the same with each other. A friend suggested to put generic…
4
votes
1 answer

Which is better SICP or HTDP

I have read that SICP (Structure and Interpretation of Computer Programs) is hard and HTDP (How To Design Programs) is better as an introductory course. I would say I am fairly good in maths but not a genius.So how hard is SICP, is it harder than…
Sumit Jain
  • 141
  • 1
  • 4
3
votes
1 answer

Why sequences are recommended as conventional interfaces?

From the reference of berkeley's version of sicp text, It is mentioned that: Expressing programs as sequence operations helps us design programs that are modular. That is, our designs are constructed by combining relatively independent pieces,…
overexchange
  • 2,245
  • 2
  • 17
  • 47
3
votes
1 answer

How can Lisp produce an iterative process from a recursive procedure?

I am starting to learn Lisp, using the SICP book. The authors mention that a procedure (i.e. function) can be recursive or iterative. Additionally, the process those procedures will generate will also be recursive or iterative, and that,…
Daniel Scocco
  • 5,832
  • 9
  • 39
  • 47
3
votes
1 answer

Practical reference for learning about graph reduction

Are there any practical references (with actual examples) for getting started implementing a small, lazy functional programming language with graph reduction? A reference that included the lexing and parsing steps would be especially helpful. So far…
user60017
2
votes
3 answers

Are lessons on tail recursion transferable to languages that don't optimize for it?

I'm currently reading through Structure and Interpretation of Computer Programs (SICP). During the course of that book, the lesson of "you can optimize recursive procedures by writing them as tail recursive" is drilled in to the reader again and…
J. Mini
  • 997
  • 8
  • 20
2
votes
1 answer

Designing generic operations in object oriented languages

I found an interesting quote in SICP that I think is highly relevant in object oriented design: We see that, in general, a type may have more than one subtype. Triangles and quadrilaterals, for instance, are both subtypes of polygons. In…
0
votes
1 answer

How does Lamé's Theorem give us an order-of-growth estimate for Euclid's Algorithm?

I'm reading SICP, and I don't understand how Lamé's Theorem gives us an estimate for the order-of-growth of Euclid's algorithm (the relevant passage is below). It would make sense to me if the assertion was that the smaller of the two inputs grows…
cnnrmnn
  • 11
  • 1