Learning CS

What book do you recommend for learning CS (other than SICP)?

Other urls found in this thread:

cstheory.stackexchange.com/questions/3253/what-books-should-everyone-read
twitter.com/AnonBabble

As a followup? Introduction to Algorithms
As a starting point? code.org

>Introduction to Algorithms
Is it hard?

As a starting point Simply Scheme is better.

Another good follow up would be to learn languages worth using.
Lisp is a good language, and it's worth learning, but if you try writing software as a group you're going to have a /really/ bad time.
C++, Java, and Python (or equivalents) would all be worth learning. Preferably in that order

It reads like a stuffy math textbook. Because it is.
But you won't find an easier algorithm book that's actually good.

Concrete Mathematics is *very* hard. You can't expect somebody to learn on his own with it.

And The Art of Computer Programming is INSANELY hard, expert level hard.

That list is "good books" not "good beginner books".
Sorry for being unclear on that. The file name was a personal reminder.

Programming methodology is something that you often don't see value to right away but give it a few years and you start to think in patterns being applied and not the actual syntax of the target language.

Things like Code Complete and Design Patterns are excellent reads for an intermediate programmer trying to get better. They're not for CS specifically, they're targeted at someone who builds large scale applications on a team.

I love Programming Pearls by Bentley. It's only tangentially related to modern enterprise programming, but it's interesting and will change the way you think about code.

Picking a language and learning absolutely everything about how it works is good too. How it's compiled, how it's run, the actual grammar.

You could always try your hand at TAOCP, if I had six months and another 20 IQ points I might give that a real go.

none of this will be useful for actually programming

But Rajesh! Even Pajeets need to read Introduction to Algorithms to answer interview questions!

you just need to watch like a 2 hour youtube video

>TAoCP
No one actually reads it. It's the Hegel of programming.

>Art of Unix Programming, C&B
Raymond is a hack who wrome some popular text files and a shitty email client. He told a good story that had a loose connection to reality but his books aren't worth reading beyond as a cultural history

>Code Complete
>Anything McConell
Blue collar as shit, anyone who like this shit should got get a job at microsoft and die in obscurity

>K&R
Famous, lovable, but not that great of a learning material. Increasingly showing its age.

>Dragon Book
The best book in the history of computer science. Understanding the content of that book is one of the most transcendent experiences of a person's life.

The little schemer and SICP are both pretty GOAT too. Land of lisp is OK.

"Learn You a Haskell" shouldn't be on that list. I know there aren't that many haskell resources out there, but LYAH isn't a great way to learn

Code complete 2 is based, it's about software development so it's important

read it after reading the pragmatic programmer

>Dragon Book
>The best book in the history of computer science

Are you serious? What's the best way to work through it from the start? Just start reading it? Or is there anything else you need to do first?

Don't listen to him user

I mean, it is a fantastic book and all, I just don't know that I'd call it the best in the history of the discipline.

>Are you serious?
Yes, I really do believe there isn't any textbook that takes a more through slice through the interesting subjects in computer science than the dragon book. The amazing thing about it is that it ranges all the way from line-level implementation to some of the most far-out abstract ideas in the field. It's a profound realization that writing a parser (not even a compiler) requires, or at least is helped by, a concrete understanding of decidability, an idea created well before digital computers even existed.

>What's the best way to work through it from the start? Just start reading it? Or is there anything else you need to do first?
I took a 400 level course (although at a middling state university) called "theory of computing" but which commonly gets the "automata theory" name before reading it, I definitely feel like it helped but there was significant overlap too. Having some familiarity with automata theory would definitely be useful I think. The dragon book is pretty "down to earth" in terms of being implementation oriented so you might miss out on some of the theory if you didn't have a reasonable understanding of NDPDAs but I a bright student could probably work through it on their own

>the Hegel of programming.
lel

>NDPDAs
what is this?

hell yeah, i've read 3/4 of the god tier books.

thank's Sup Forums

does fampai got the pdf of the dragon book?

Concrete mathematics isn't hard, I finished (and understood) it in my second year of high school.

Yo man just got an A in my automata theory course. I wouldn't say decidability is that important to writing a parser, just make sure you do a leftmost derivation haha.

Nondeterministic Pushdown Automata

The Bible

Yes it is.

Not OP, but i'm inspired once again to learn programming. I always tried learning from online tutorials and c++ for dummies lol and always stopped.

I have a BSc. in physics so i have a decent background in mathematics. I have a year and a half of free time. Is it enough time?

Obviously dont mean a year and a half to become a master programmer. But year and a half to learn c/c++, python and maybe perl?

What are the three languages you think are essential to give a good foundation to be able to learn/understand other languages?

I've never read any of these books except K&R yet I'm designing C++ books daily.
Just skimmed through Design Patterns and Algorithms and it just seems stuff I've learned/discovered on my own in my last few years of programming.

How many exercises did you do?

Design patterns fall ibto two categories:
>obvious
>over-engineering
Most of them just make up for how bad a language Java/C++ is though

Haskell book for beginners is the best Haskell resource I've some across. Im in mobile so can't look it up. But it literally assumes no background and teaches from first principles.

Op

Of strongly argue before even picking up a CS book learn Discrete math and the rest of your CS career will follow.

Google mathematics for computer scientist and watch the lectures w d read the textbook

I always found that textbook messy af. I'd much prefer a more traditional math book structure.

Design patterns were created years before java existed. The defacto book for design patterns used smalltalk aND c++.

>no one has mentioned discrete math for ducks

Bookmark this.

cstheory.stackexchange.com/questions/3253/what-books-should-everyone-read

Types and programming languages is pretty important. It's not hard in mathematical content, but it is very formal.

>Learning c++ first.
That's such a turn off for new devs

Which language/s should be learned first?

Logo

Python or C++. Mostly because Python is quick not too involved and is everywhere these days.

C++ because it has actual useful graphics libraries that can make something passable. So new peeps can do little projects.

I disagree, it's a nice reference for beginners, but the lack of exercises makes it a horrible introduction.

this. few of them are actually worth reading and in my opinion the gang of four book is outdated and shouldn't be on this list.

python or java. c++ is a clusterfuck where everything is added and nothing is removed.
with java or python you can get a job, they and are easy to learn.

BASIC

...

Leave and never come back.

> outdated list
>v0.2 Dec 30, 2014
No shit.

>v0.2 Dec 30, 2014
that book is from 1994, it was outdated even two years ago. uml wasn't even a thing in that years so that book use it's own syntax.

Java didn't improve on shitty OOP desu

SICP second edition

are there big differences between lisp dialects or they are all pretty much the same thing?

Thoughts on the "Starting out with X" series?

There are big difference under the hood.
But they all have similar syntax, if you know Lisp you can read any dialect.

that feel when philosophy major and fell for the hegel meme

all that wasted time I will never get back. At least I realized stirner was a meme a few pages in.

thanks. can you give me some example of those big differences?

What is the best lecture video/online resource to learn java?

Also, what is the best resource/lecture videos to learn algorithms

assuming you don't have any knowledge about the subject, i would say algorithms by sedgeweek (java) and a random beginners java book.
if you're looking for something deep, then go with effective java (just to improve your programming skills) and introduction to algorithms.

Thanks. Just got the pdfs for sedgeweek (java + his algos book + CLRS). Do you know of any good online courses for java to follow along with?

don't waste your time with algorithms if you don't know any programming language. start with java, be comfortable with it and than go trough sedgewick book or clrs.
i don't have any online course to suggest you, but if you want learn a programming language be sure to exercise you a lot. it's like 95% practice + 5% theory

ok thanks, will follow this advice

Any good introductory to discrete mathematics book recommendations?

Why do people use books? Google has all the answers and is more up to date.

I;m reading mathematics for computer scientist from MIT OCW 2016 version. Don't yet know if it's the best.

Pic unrelated.


Books tell you what to learn next.
Google does not.

Books aren't disruptive when moving between topics.
Google is.

Google would be fine if I had an outline of everything I need in order. Then ya.

Google only works when you know what you are looking for.

I finished it in third grade.

Can't you just Google a list of topics and the order?

No. At least not a good one. Would be nice if that worked.

C++, Java & Python.

Actual Science? The Art of Computer Programming.

The way to succeed is to be programming alongside studying. You can apply what you learn as you learn it. I'd choose an easier language like Python to start.