Would I really benefit from reading this?

I'm currently a Math Major. Will this distill most of CS? How will this compare to PAPL? papl.cs.brown.edu/2016/

Attached: images (8).jpeg (220x318, 13.81K)

Other urls found in this thread:


I just graduated math

What do you mean by that?

Never read that one

SICP is a great book especially if you are a mathematician. The first chapter is all about functional programming, which should make you feel right at home, unlike the imperative languages. At least for me it really helped me bridge math and computer science (my applied field). The only downside is that the book will leave you feeling miserable because good luck getting a job that lets you do functional programming instead of writing enterprise-level Java shit.

Make sure to work along the text and do the exercises. You can also watch the MIT lectures on YouTube. For a Scheme implementation I recommend Racket with the SICP language.

Racket is sort of like the Python of Scheme, it has an IDE (you don't have to use it), a package manager, very good documentation and a large collection of libraries. I even used Racket to write a simulation of my thesis topic, the included plotting libraries made it really easy to get visual results and actually see what I was writing about.

What I meant to say was, would it make me more knowledgeable than a Computer Science graduate?

My plan is to absorb everything from the book and do some personal projects on Python. Then i'll try doing TAOCP.

You mean someone with a masters degree? No way, there is way more to know than can fit into one book. SICP is a book about computer science in general, it will touch one some topics, like algorithms, data structures or abstraction, but it will not dive into details. It gives you a good overview of the field, and you can then read more specialized books on top of that. For instance, if you have developed a good intuition of algorithms and efficiency and you have a good intuition for other CS topics, you will have a much easier time reading a book about algorithms specifically than if you were to dive into algorithms without preparation.

Sounds like a good plan. I haven't read TAOCP, so I cannot comment on it (will it ever even get finished?). It is important to switch between theory and practice, don't be someone who only reads books.

I haven't read PAPL, but SICP is a genuinely good book. No, it won't
"distill" CS, in fact, it contains some simple, yet deep and important
truths about programming and computer science in general.
If anything, more people should read it. Beware that Scheme is but a
means to an end in this book: its goal is to teach fundamental
programming concepts, not learn Scheme specifically. Even if you never
use it again, what you learn there is applicable in pretty much any

Considering the level of the average computer science graduate nowadays, it unironically can.

If I'm thinking about the right book, personally, I couldn't read it. It's way too academic, so it just bored me to death and I had to go to sleep, or to read something written by humans. I could give it a 0/10 just for the dry and boring writing, but maybe that would be too cruel, because of my biases, as someone that just reads for fun most of the time. That's just how these people write, because it makes their fake jobs look more impressive. Maybe I'm just too much of a Terry. More of an industry guy. I think I tried one or two books that were also related to Lisp, and they were also too unbearably boring for me to read. The language seems to attract these types, since it's never actually used for anything useful these days.

When you write something, don't try to be as boring as possible so you can feel more important. Anyone that isn't completely retarded can see through it. Politicians do it nonstop, and they are a bunch of retards. Not impressive. Overall, I would rather read a book written by someone with actual practical experience. Some of those people aren't amazing at teaching, but they are always better than actual teachers anyway. Maybe I'm thinking about some other book, though. I just ended up avoiding the memes and reading normal, practical books. In my case, I just learned C, whether that was a good choice or not. My goal was to have an overall understanding of how computers actually work, so maybe going full low-level would have been a better idea. Skipping C and going straight for asm would have been more efficient.

If you want to learn how computers work learn verilog / vhdl

Is the Python version of SICP any good? The one made by Berkeley.

That's why I'm transferred to Math. Our CS department is pretty much Software Engineering focused.

Good point. I need something in-between. I want to do something related to AI but I heavily lack some prerequisites.

Isn't that for comp engs? I'm quite interested about computers, specially quantum computers.

Even though current CS is in very bad shape, SICP is still only an introductory book. A great one, but introductory nonetheless.
Note that this field has a serious problem with falling for hyped fads and disregarding its own history, so one tip I can give you that will put you above a massive number of programmers is to look into older stuff. On the language front, Ada and Common Lisp are very good examples of how good design looks like. You will probably find decent books on them in your university library that haven't been lent out in years.

Afaik Python SICP is still SICP. You'll have to deal with the peculiarities of Python (which is frankly just a really badly made language) and Scheme is much nicer in that it gets out of the way, but it's not like the python version is unreadable.

These still don't exist as originally postulated, for the record. Concentrate on the classical side first.

For AI there is Paradigms of Artificial Intelligence Programming (PAIP), I'm currently reading it myself (I have only made it chapter 5 out of 25 though). It uses Common Lisp instead of Scheme; Common Lisp is a larger and uglier language, but it includes a lot of things that are useful for real-world application instead of being an academic toy. Every Scheme that wants to be more than just an academic toy has to extend the language so much that it basically becomes a new language of its own.

SICP is out dated and nobody reads it. Not even the people who recommend it.

Different user here.
I'm learning Guile scheme, but I have previous experience with languages like C++ and jabbashit. I also know the basics of CS.
Is the purple book for me?

u can finish it in a week
just do it faggot

I don't think I can find jobs here that uses LISP. But I'll study that anyways

SICP is pretty outmoded; it teaches relatively simple concepts in roundabout ways using archaic syntax. I'm sorry I don't have an alternative I could recommend, but a CS curriculum will teach you the concepts in the book anyways.

Ofc OP. If you don't read and memorize it by heart then you won't get even half of the ancient maymays here.

The Art of Computer Programming. And ditch Python for Tcl, you'll thank me.

TAOCP is certainly valid, but it's really more of a reference imho. It's likely not meant to be read from cover to cover, and I honestly doubt anyone (besides obviously Knuth himself) actually has.
SICP is comprehensive, but still realistically readable from cover to cover.

Why tcl? I intend to use python for scientific computing and statistics

you should drop out of college and get a real job

What exactly is roundabout about SICP?

Because it's not gay faggotry without a clear and minimalist design behind it. Tcl doesn't have Numpy, but why would you care when you have wiki.tcl-lang.org/page/Critcl? There's also tclquadcode coming together slowly but surely.
Also, you can escape Python's leaderless "diversity is a strength" mob.

Obviously you will know more math than he does, but depending on how good the school was, and how much he studied, he might know more about electronics and hardware than you do, plus by the time he has finished college, he would have already programmed in about a dozen languages, with C or C++ or Java being his "main" language while stuff like Octave, Matlab(you should definitely check these two as well), Haskell, Prolog, Python, Assembly, VHDL, Verilog, SQL being used for one or two courses. Even with C, he would have probably done some basic networking, like a file sharing or messenger program, kernel modules, micro controller programming, and so on.
t. this is what I had at my university from Eastern Europe and no mandatory feminism courses

Because the transcendental concepts of computer science are so reliant on the latest javascript framework

Syntax is the simplest part of programming. Once you know one language, you can pick up another in a week. Algorithms, data structures, and ways of thinking all are independent of the language and haven't evolved very much, especially not at the undergrad level, since SICP was first published.

Not to say actual CS isn't a worthy area, but for someone looking to learn practical shit SICP is far from the best use of their time. Will reading it hurt? Hell no. Will it help? Probably. But you also don't have infinite time to read infinite books, so you have to think about priorities. SICP makes you do shit like write compilers. If that is your goal, great. If not...

Acting like everyone should main their theory lvl is dumb imo. It's like saying if you become a linguistics prof you can instantly comprehend all languages. But learning vocab and idioms still tales time. Just learning math won't make you an expert accountant or actuary, you'll still have to learn all the regulations and conventions. SICP will make other things easier to learn, but not necessarily so much that it will be worth the time, depending on topic. It will still take time to learn practicalities, it won't be instant. Syntax and javascript frameworks may be unglamarous but if that's what you need for your goal, why would you not go and learn directly that? Why take a giant detour to learn a bunch of theory you won't use?

Not even the author of SICP advocates programming from it anymore. They use it for advanced CS (ie. research) courses.

r u really at a point in your life where you cant take a couple days to read something that takes a commitment and a challenge for you learning ability?
these ivy league students. my god.

Isn't that a good thing tbh? Sure not helpful if you work as a JS paieet.

SICP only becomes interesting long after you have learned a bunch of other stuff. Starting with it is like starting with Aristophanes.

Advanced CS doesn't teach anything for people who just want to make small software projects. It's very abstract CS for writing theoretical papers and designing software that would need to be built by hundreds of people over many years. Unless these are your goal it's as useful as learning quantum chemistry to cook a soup.

SICP is notorious for taking many months to read. Exercises alone would take at least a month.

No. This is a horrible book for the average person. On top of using the horrible language scheme and the horrible paradigm of functional programming, it bombards you with too many ideas too rapidly. You probably learn more in the first chapter than you do in 2 years of CS at a state university. Problem is, you won't be able to follow it unless your IQ is 140+. It's not a step learning curve. It's like climbing up a wall. O(N), tail recursion, tree data structures, algorithm efficiency calculations, and other arcane topics discussed at length in the FIRST FUCKING CHAPTER.

When the fuck did this board turn into Pajeet central?

Why are you so reddit?
A beginner should not start with functional programming, no matter what ivory tower academics think, simply because functional programming is not that common in practice.

There is nothing specifically functional about SICP, retard. Not that this line of arguing is sane in any way.
Right back at you, I bet you didn't even read the book.


It's extremely comfy up here in this ivory tower. At least we aren't like imperative fags who literally have to use billions of transistors in order to offer a somewhat efficient imperative interface to program over.


(if (equal? "lmao" "reddit") "lol" "lmao")

SICP will give you a mental model of how to build software via abstraction and modularity. It will not teach you the fundamentals of CS theory. By theory I mean data structures, algorithms, and complexity theory. If you're more interested in theory, check out CLRS and Papadimitriou.

What an argument you have there.

back to reddit you go

LARPer begone.

I'm doing the book now. While also doing some Python projects

I learnt a lot about data structures, algorithms, and asymptotic notation from SICP.

t. reddit

You dont need transistors if you don't write code, duh.

Would it be sufficient as an introduction to CS then? Can I compete well against CS undergrads/codemonkeys?

SICP (the 2nd edition) covers two semesters worth of material if you go through it from start to end, its mentioned in the preface IIRC. It covers a lot of ground, but CS undergrads have a whole curriculum that covers more than introductory programming classes on steroids. There really are some competent CS undergrads out there who have a strong foundation in math and theory from their courses, and for practical experience they might be learning on their own and/or through internships. Its not like they're all going to be lightweights, entry level positions are limited and competition is stiff. There is also favoritism for women, specific women events, scholarships, etc. that give female CS undergrads an advantage over everyone else. Just realize that if you are not especially gifted (in a self reliant, self advocating/shilling, socially competent way, plus being really good at ridiculous ACM ICPC style questions as pop quizzes, plus being young and photogenic in a steve jobs kind of way, plus.... etc) or you are not a woman, nobody really cares if you get involved or not in CS. There is a considerable amount of math in a real CS curriculum, the applied courses pretty much all involve math if its a serious institution.

OSSU's recommendations kind of give you a rough idea of what CS students might be learning, they have picked things that are available as online courses only though: github.com/ossu/computer-science

Most of the universities in this 3rd world shithole only teach the students on how to become codemonkeys(i.e. java colleges).

Would supplementing SICP with HTDP be overkill? I'm reading multiple books in order to expand my knowledge.

is there any way to use scheme without having to slog through emacs?

Why wouldn't you use the best tool for writing/developing in Lisp/Scheme? Don't gimp yourself and give Emacs some time and you'll see that it beats the competition.

tbh i set up racket + the sicp package just now and that works fine but i guess i'll try emacs again at your suggestion. there's an ubuntu package for mit-scheme that comes with an emacs-like editor, i'm just too attached to notepad++ style.

You don't really need Emacs. I am using Neovim with the REPL running in a terminal buffer. It's perhaps not the best setup, but it works well enough for me. SICP exercises are small enough that you don't need a full development setup.

You could also try Racket, they have their own Racket IDE called DrRacket.

You need like two commands to use emacs.

you need only one to uninstall it

If you are doing anything larger than editing config files emacs is worth using.

no, it's a meme.

They're both introductions to programming with their own approach, I don't think it would be a good idea since they are both long, plus SICP has video lectures to go through too. Its not like you'll lack things to do with either of them.

What should I do after SICP in order to get some practical knowledge?

You can use any editor you want. I wrote Scheme for years using Vim.
Emacs, however, is worth giving a try on its own, regardless of Scheme.

As others have said, I wouldn’t start with SICP. It’s doable, but I feel more will be gleaned from it once you already know - or can at least appreciate, and contextually understand and see a need for - a lot of what is being taught.


Attached: sicp.mp4 (578x360, 7.39M)


Something that covers systems programming with C (The C Programming Language is useful as a reference, and/or for simple exercises, but you're going to need something else, plus obviously you'll be reading manpages), some basic assembly, Unix-like stuff, etc.
Computer Systems: A Programmer's Perspective is used these days, but its a big tome of a book and tries to teach assembly via a fake x86 variant, which is kind of awkward. Its still pretty good, but too verbose at times. CMU had videos and lecture slides publicly available IIRC, but I don't know if you can still access them.
It doesn't mean you should immediately be using C for some project or follow Unix program design with all its pitfalls for every program you write, but it will help you understand some very common programs, languages, and systems.

If I want to focus on AI or none meme data science, would C still be useful? I've only seen SQL python and R being frequently used.











Europeons need to burn in a tar-pit. Disgusting

Mods are kikes. Why are they deleting my posts?

Get out boomer. GO back to facebook.

there is no better workflow for lisp-family languages than emacs.

t. vi-family hardliner since my first hair on neck

If you're a real math major, go learn coq or idris or even haskell if you're ok with a little lack of rigor and stay the hell away from python. If you're an (((applied))) (read: fake) math major, then python will be fine.

Then learn something from it, learning is one of the funnest things you can do
>inb4 school was shit and killed my creative ability and will to live and made anything related to "learning" boring and menial

How the fuck do schools manage to suck childrens' natural curiosity right out of them?

You must not be from Burgerstan™, allow me to pontificate for your edification.
In Burgerstan™ all children (with few exceptions) are forced into the "public schooling system" or PSS for short.Once they arrive at PSS they are taught many things, a few of which may be:
All of this and more. You may ask "what's the purpose of this?" well it's simple, in Burgerstan™ there are no bright minds, only drones. So in order to feed the industrial machine the PSS only creates mindless drones who follow orders (even if begrudgingly). Of course they achieve this through re-worded threats of homelessness and starvation. Now if a student decides to opt out and possibly even run away, well then the Enforcers™ will hunt them down and either send them back or imprison them. Another possibility is that a Drone-Starter™ will become deppressed from the realization that he is nothing more than a cog in the industrial machine and cattle for it's herd, in such a case the Drone-Starter™ will be sent for re-education to a "Mental Health Facility™" or MHF for short, where they will be made to be afriad of being sad.
Another way that the PSS™ steals Drone-Starter™ souls is by enforcing conformity, so if you have a bright mind and can solve problems easily in your head, well you best kiss that goodbye unless you want the Enforcers™ to send you to MHF™ or McPrison that is, with an ending of painful death :)

Well, I do, but that kind of book is just shit so I don't read them. Learning from something well written, meant to actually be readable, is a lot more efficient. Many academic books tend to make learning as boring as possible. They are written by scum that just wants to feel more important, and to justify the current system and the current ideas about education. If they make learning on your own as boring as possible, then they can reinforce the idea that you have to go to school to learn anything, and that teachers are necessary.

Everyone hates school because it sucks, school is associated with learning, therefore people tend to learn to hate learning, over time, by association. Because of that, as soon as they graduate, people completely stop learning (and thinking). That's the logic, at least. In my case, I just despise teachers about as much as I despise the media. They are society's deceivers and propagandists, so they are actually the same thing. Schools also make learning seem to be pretty pointless, and disconnected from reality. Not a whole lot of real knowledge there.

An example would be that kids learn history almost 10 times in school, but they don't actually know jack shit about the past, like how people lived, how people did things back in the day, why things were the way they were, or even the fact that bullshit has always existed, so history can't fully be trusted, and sometimes there are multiple accounts coming from different groups that were in conflict at the time, and they tell completely different stories. There is no living knowledge there, only dead knowledge. And did you ever learn anything practical in school? Because I sure didn't. Everyone supposedly has an education, but no one knows how anything works, or knows how to do anything because they are just expected to hire someone else to do basic shit that they should be able to do themselves. It's ridiculous. College is particularly shitty. Go to trade school, it's much better.

Are there any calculus books that can teach you more than a math graduate student? No? Then why do you expect there to be such a text for computer science? Do you think it is a small subject that has little you can learn from? If you want to learn computer science, you will need to follow a curriculum from the basics to more advanced topics, depending on what you want to do with computer science. The basics are all the same, but whether you want to be excellent at writing code in a specific language or you want to figure out how to do general machine learning, these are different specialties.
A computer science major will touch on basic language topics, electrical engineering and logical circuits, compilers, operating systems, data structures, security, networking, and any number of additional topics while pursuing their bachelor's degree; graduates will continue exploring those topics.

You seem to be interested in learning Python, but for what purpose? Scientific Python is a handy skill but if you don't really learn computer science you're just going to end up like most math/physics/mechanical engineering majors I know: plugging code you copied from elsewhere into Jupyter Notebook and running it bit-by-bit until you get a result you like. Aimlessly seeking a workflow that works. Not understanding how to automate your entire workflow via piping between scripts. You need to learn how composition of digital functions works and how you can perform them.

is right. Just do SICP (or the Python version from Berkeley if you just want to learn Python) but you should probably spend time learning how to use numpy, matplotlib, and other Python libraries effectively if you just want to be a better Python programmer. But it's worth doing some functional programming to wrap your head around how to think.

It's written by jews.

Either burnout or slow pace.

For me it was the glacial pace of my peers. I just said fuck it, skipped school, and hung around my cousin and friends.

also this

There is lectures for PAPL

It's probably the greatest introductory CS course since the 1980s when they invented 6.001.

have none of you guys heard of techyourselfcs.com?
if you don't like SICP read How to Design Programs or Concepts, Techniques, and Models of Computer Programming.
CS is more than just programming.

SICP doesn't cover everything, but at least you will learn some computer science. UNIX weenie courses, the kind that make people hate computers, don't even teach computer science. They teach how to run UNIX and compile C programs. Instead of calling it a UNIX class, they give it a name like "Operating System Engineering" (aka UNIX kludges) and "Great Ideas in Computer Architecture" (aka RISC and UNIX brain damage).

Learning a new OS used to be something people would do when they get a new computer, but because of all the brain damage in UNIX, it takes many times longer to learn (years instead of weeks) even though it has less functionality and fewer features (unless you count bugs and remote exploits as features).

A real computer science class about operating systems would teach many different ones, and probably only one UNIX-like OS as a bad example. And you would know how much UNIX sucks just by comparing it to the other operating systems you learned. They don't even have to "teach" it because it's obvious. You could fail the class and still learn that UNIX sucks, just by having to use it after using something better.

MIT was able to create CTSS, Multics, ITS, and Lisp machines with no "operating systems" course. Apparently nobody at MIT learned anything about "operating systems" until 2 years after the last Multics installation closed down.

How could that be? Someone tell Wikipedia that this must be wrong because MIT didn't teach operating systems until 2002. C didn't even exist in 1961. This is what "CS grads" actually believe, and it sucks. Their knowledge of computing history is limited to C and UNIX, which makes them think everyone in the 70s was stupid and didn't know anything, when actually most "modern" inventions are just reinventions of 60s and 70s technology bolted on to C and UNIX.

I'm sure these students want to waste their time on fixing a phone company's brain damaged bullshit that was known to be bad in the 70s instead of doing something interesting and productive. By the way, this page was last modified in 2003. Was that problem fixed in the last 16 years? Of course not, it's UNIX!

>>The most productive programmers I have known here have>>only recently been introduced to UNIX (most think it's>>horrible).> > This anecdotal evidence proves nothing. Anyone who> changes environments will notice only the features missing> from their old environment, since the new and potentially> useful features aren't yet a part of their work patterns.> Thus, initial reactions to an environment change will> almost always be negative. No surprise here.Exactly. Which is why the part of my article that you _cut_is relevant here. The people I'm talking have used _many_different systems and have switched many times. They _know_what's involved in moving to a new system. They _have_learned a lot about the UNIX environment (in spite of onlyrecent exposure - for most systems, "recent" would bedefined as "the last few weeks", on UNIX the definition ismore like "the last year or so"; because UNIX is _MUCH_harder to come to speed on). The conclusion is that UNIXdoes _not_ have sufficient capability to offset thosefeatures it lacks.