ossu / computer-science

:mortar_board: Path to a free self-taught education in Computer Science!
MIT License
165.59k stars 20.92k forks source link

Just to be safe #496

Closed ghost closed 5 years ago

ghost commented 5 years ago

I think it would be a good idea to recommend books that can substitute and/or complement an entire curriculum subsection (Core CS, Core Math, etc.) by it's sets of courses (for example, Core programming has 3 sets of courses: How To Code, Software Construction and Programming Languages, so the curriculum would recommend 3 or more books for each set).

Many good books are available for free by the author such as How To Design Programs that, if I'm not mistaken, is what the set of courses "How to code" is based on. Taking in account that "How To code - Complex Data" has been locked behind a paywall, recommending the base book for this set of courses (or some better alternative) would greatly benefit students.

I suggest the community to not hold back on recommending paid books as well, even when no free option is available, since the book plan is also a fail-safe if the free course it substitutes get behind a paywall, and let's be honest, you can download many books online for free if you really don't have any money (not that I'm encouraging it, I think it's better to look for good prices on what you want or buy used books, for example, I got the elements of computing systems for 8 dollars, but that's because I prefer paperback books, some people prefer the Kindle version, that can be even cheaper, and public libraries can have quality books if you have one near you).

I understand the idea behind OSSU, but I think suggesting free and paid books at all sections (whenever possible) of the curriculum can greatly improve it.

vapeurs commented 5 years ago

One of the main goals is to ensure everything is free to access for everyone. Some courses are supplemented with books, some even have entire websites dedicated to learning the content (nand2tetris comes to mind).

there exists a great deal of resources already on programming books. If this is something that interests you, perhaps you could compile your own list of recommendations and make a pull request?

https://github.com/EbookFoundation/free-programming-books/

https://github.com/learn-anything/books

https://old.reddit.com/r/books/comments/ch0wt/a_reading_list_for_the_selftaught_computer/

ghost commented 5 years ago

I could make a list for every set of courses by just analysing their syllabus, but this wouldn't tell me if each topic is covered thoroughly in the course.

So to not risk creating a shallow list that doesn't substitute or supplement each set of courses, I'd need to complete everything in the curriculum, and/or depend on students reviews about the courses and what material they used to supplement it

Since I'm going through the curriculum myself, I wouldn't mind the work, and I already have some books in mind that could supplement CS50 very nicely (I don't know any book that can substitute it, since it presents so many topics in the same course, such as dynamic programming, web programming, low level programming, etc.)

amadeann commented 5 years ago

It's a bit hard to find, but there is already a list of books in this repo:

https://github.com/ossu/computer-science/blob/dev/extras/readings.md

ghost commented 5 years ago

@amadeann

The list is fine, the only problem is that it doesn´t tell you when to read some book, of course you´d know what books are worth reading after completing core cs, but you could have greatly benefited from reading some book before/while doing a specific set of courses.

For example, I´d highly recommend beginners to watch youtube videotutorials on C and python and/or read either C primer plus, Programming in C, Head first C, or another good C tutorial book, and Think Python, or another python tutorial book, before they begin CS50

vapeurs commented 5 years ago

I think that would be very helpful. Making reference to the books to supplement the courses.

cs50 requires no programming exp, and mit 6.00 spends a great deal of time teaching the basics of programming. I suppose for some learners taking some basic beginner programming courses will help, but as has been mentioned by MIT staff in the past, it requires no prerequisite knowledge.