Live data from Hacker News

Programming by poking: why MIT stopped teaching SICP

posteriorscience.net

231–240 of 245 posts

Re: Programming by poking: why MIT stopped teaching SICP

#231
post #223

Earlier quoted context omitted.

No. You are missing the point. The fundamentals are very simple and easy to learn. That's what makes them "fundamental." I think what we actually disagree about is just the exact definition of "fundamentals". I personally would not say "the fundamentals are very simple and easy to learn". At least not if you're learning them to the level of depth that I would want to learn them. Now if we're just saying that people o…

> I think what we actually disagree about is just the exact definition of "fundamentals". That may well be, but as I am the one who first used the word into this conversation ( https://news.ycombinator.com/item?id=11630205 ), my definition ( https://news.ycombinator.com/item?id=11632368 ) is the one that applies here.

Fair enough... from that point of view, I think we agree more than we disagree.

And please don't take anything I'm saying here as an argument against learning fundamentals.. all I'm really saying is that I can understand, even appreciate, the decision MIT made. Whether or not I entirely agree with it is a slightly different issue. But I will say that I don't think they should be excoriated over the decision.

Re: Programming by poking: why MIT stopped teaching SICP

#232
post #198

I read about half of SICP and thought it was OK. Not great, but okay. The programmers I've met fall largely into two groups, those who like systems level programming, knowing how the OS works, how it interfaces with the hardware, what the memory layout is like, etc. and those who like abstraction and the things that SICP values. I'm definitely in the former group (but I certainly appreciate people who prefer the SICP…

Hmm, I didn't get your dichotomy... By "half" did you mean the first half? IMHO the main dish of SICP is chapter 4 and 5 (ch1-3 is just laying foundations), and the content of latter chapters is strongly connected to system-level things like compilers, run-times, processor design etc.---it's not as immediately applicable as like the Dragon Book, but SICP gives you the perspective, in a sense that it shows broader pos…

I meant roughly half by page count. I stopped after that point because I was bored.

Re: Programming by poking: why MIT stopped teaching SICP

#233

Earlier quoted context omitted.

The majority of CS students (including MIT) never studied CS before coming to college. Unless you propose MIT/CMU/Stanford/Berkeley/etc. only admit people to their intro CS classes who have studied CS before (chicken and egg problem, anyone?).

Well, MIT's intro calculus classes are overwhelmingly for people who have studied calculus before. Making it an actual requirement wouldn't change much.

1) MIT definitely offers calculus classes for people who haven't taken calculus, although obviously these people are in the minority.

2) Most high schools don't offer CS. 99% of high schools offer some form of calculus.

Re: Programming by poking: why MIT stopped teaching SICP

#234
post #198

Earlier quoted context omitted.

Hmm, I didn't get your dichotomy... By "half" did you mean the first half? IMHO the main dish of SICP is chapter 4 and 5 (ch1-3 is just laying foundations), and the content of latter chapters is strongly connected to system-level things like compilers, run-times, processor design etc.---it's not as immediately applicable as like the Dragon Book, but SICP gives you the perspective, in a sense that it shows broader pos…

I meant roughly half by page count. I stopped after that point because I was bored.

Yeah I agree that the first 3 chapters are somewhat archaic, and especially if the reader already has programming experience it looks like it is reinventing some mundane features.

Re: Programming by poking: why MIT stopped teaching SICP

#235
post #50

I was wandering what happened to those HP employees from SICP lecture videos. Where are they now, what careers they had, etc...

I took the course in Fort Collins in the 1980s. (I think it may have been before 1986? I left HP in 1986 to stay home and raise my daughter, and went back to software development at other companies in the 1990s. I have taught college-level intro programming part-time for 25 years, and high-school level computing (including Java and Python programming) for 13 years.

I was greatly impressed then with 6.001 and still am today. I have worked through most of TECS [0] within the last year, and I want to go back through SICP next year (after I retire :-)

[0] The Elements of Computer Systems http://nand2tetris.org

Re: Programming by poking: why MIT stopped teaching SICP

#236

Earlier quoted context omitted.

Well, MIT's intro calculus classes are overwhelmingly for people who have studied calculus before. Making it an actual requirement wouldn't change much.

1) MIT definitely offers calculus classes for people who haven't taken calculus, although obviously these people are in the minority. 2) Most high schools don't offer CS. 99% of high schools offer some form of calculus.

I'm just pointing out that there's no "chicken-and-egg problem" with MIT requiring CS exposure for its intro CS classes.

Re: Programming by poking: why MIT stopped teaching SICP

#237

Earlier quoted context omitted.

Have you considered getting into embedded development? You tend to be dealing with much lower level code and closer to the hardware. It's fun :)

Thanks for this comment. Actually I have considered embedded a lot. I love C, specially free standing C. I will probably move to embedded soon. Problem is I have lot of experience with iOS but not that much experience with embedded, I'm willing to get a pay cut just to get out of iOS but there's a limit of how low I can go. There's also a lot more iOS jobs than embedded jobs! edit: Other than C, I'm very curious abou…

Yes making career moves from one technical field to another can be difficult - I hope you manage to find somewhere that'll take you on without putting you over a barrel.

I've found that it entirely depends what level of embedded development you want to enter - for instance I mainly work with C++ and MSQL databases on our platform - because our main device runs linux this makes sense. But other related products that we sell run on bare metal and are written in pure C.

Having a strong knowledge of C will most certainly get you far in this field, but perhaps learning the ins and outs of C++ wouldn't be such a bad idea if you have the spare time - the more niches you can fit in the easier it will be to pick up that job you really want.

Re: Programming by poking: why MIT stopped teaching SICP

#238
post #79

Earlier quoted context omitted.

> even 4 whole years isn't enough to learn "all the fundamentals" No. You are missing the point. The fundamentals are very simple and easy to learn. That's what makes them "fundamental." It's all the random shit invented by people who didn't understand the fundamentals (or chose not to apply them) that takes a long time to learn.

I disagree. The field has exploded. It's becoming more and more difficult to take vertical slices of every sub-field. What should we consider fundamental? Programming languages, automata theory, set theory, compilers, assembly language programming, microprocessors and system architecture, algorithms, graph theory, category theory, artificial intelligence, machine learning, operating system, parallel and distributed p…

> Programming languages, automata theory, set theory, compilers, assembly language programming, microprocessors and system architecture, algorithms, graph theory, category theory, artificial intelligence, machine learning, operating system, parallel and distributed programming, natural language processing, web design, network architecture, databases.

That was exactly the curriculum of my CS degree, minus the web design, and I didn't even go to a first rate CS program like MIT (PennStateU 20 yrs ago, no idea what the curriculum is now.).

Re: Programming by poking: why MIT stopped teaching SICP

#239

Earlier quoted context omitted.

> AI, ML, and NLP and webdesign are application areas On first thought, I do agree. However, they are fundamental applications. Category Theory is categorizing the fundamentals. It uses a lot of the fundamentals on itself, I guess, but that doesn't mean ti me it's inaccessible or useless.

Don't confuse "important" with "fundamental". He probably meant foundational to begin with. The web for instance is an unholy mess. We can do better for mass electronic publishing. We don't because that huge pile of crap is already there, and it's so damn useful.

Webdesign IMHO is be an extreme example of formatted output. I/O is a fundamental concept.

Re: Programming by poking: why MIT stopped teaching SICP

#240
post #224
post #118

Earlier quoted context omitted.

" It's all the random shit invented by people who didn't understand the fundamentals (or chose not to apply them) that takes a long time to learn." Thanks, you succeeded in verbalizing succinctly the agony of so many software projects. However, I would claim it's just not ignorance of the fundamentals. It's simply more fun for a particular kind of mind to invent new abstractions and constructs than to solve actual pr…

> It's simply more fun for a particular kind of mind to invent new abstractions and constructs than to solve actual problems. Spolsky calls these 'architecture astronauts' ( http://www.joelonsoftware.com/articles/fog0000000018.html ). (As a mathematician, I have a certain leaning to this mindset, so I clarify that I am not criticising it, just reporting on existing terminology.)

It is absolutely essential to have a theory of system while implementing it. The software system itself, however, should exhibit only a simple subset of the whole theory in conscise form as possible. Because - usually the full theory becomes obvious only while writing the software. And, in practice, one uses only a tiny part for the implementation at hand.

I think one facet of this thing is that people have an ambition to build huge systems that encompass the entire universe - while in fact, most software system only need to utilize the already excisting capabilities in the ecosystem.

It's like since people are eager tinkerers they approach software projects with the mindset of miniature railroad engineers - while in fact, the proper way to attack the task should be as brutally simple as possible.

The reason huge theoretical systems are a problem in software engineering is that a) they tend to be isomorphic with things already existing b) while not implementing anything new and c) they obfuscate the software system through the introduction of system specific interface (e.g. they invent a new notation of algebra that is isomorphous in all aspectd to the well known one). And the worst sin is, this method destroys profitability and value.

Post reply on HN