Programming in Scala
Martin Odersky, Lex Spoon, et al.
4.7 on Amazon
42 HN comments
The Art of Doing Science and Engineering: Learning to Learn
Richard W. Hamming and Bret Victor
4.7 on Amazon
40 HN comments
The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World
Pedro Domingos
4.4 on Amazon
40 HN comments
Operating Systems: Three Easy Pieces
Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
4.7 on Amazon
40 HN comments
Start with Why: How Great Leaders Inspire Everyone to Take Action
Simon Sinek
4.6 on Amazon
36 HN comments
Java Concurrency in Practice
Brian Goetz , Tim Peierls, et al.
4.7 on Amazon
34 HN comments
Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon
Kim Zetter, Joe Ochman, et al.
4.7 on Amazon
34 HN comments
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager
Michael Lopp
4.4 on Amazon
33 HN comments
The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution
Walter Isaacson, Dennis Boutsikaris, et al.
4.6 on Amazon
31 HN comments
Elements of Programming Interviews: The Insiders' Guide
Adnan Aziz , Tsung-Hsien Lee , et al.
4.6 on Amazon
31 HN comments
Accelerated C++: Practical Programming by Example
Andrew Koenig , Mike Hendrickson, et al.
4.2 on Amazon
31 HN comments
The Ascent of Money: A Financial History of the World: 10th Anniversary Edition
Niall Ferguson
4.5 on Amazon
30 HN comments
Programming Rust: Fast, Safe Systems Development
Jim Blandy, Jason Orendorff, et al.
? on Amazon
28 HN comments
Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython
Wes McKinney
4.6 on Amazon
28 HN comments
Think Python: How to Think Like a Computer Scientist
Allen B. Downey
4.6 on Amazon
27 HN comments
mahyarmonAug 20, 2014
cshenoyonOct 21, 2010
ThoroughlyRonSep 13, 2012
Where did you get the background picture?
MostAwesomeDudeonAug 4, 2011
asicsponAug 14, 2019
[1] https://automatetheboringstuff.com/
[2] https://greenteapress.com/wp/think-python-2e/
[3] https://runestone.academy/runestone/static/thinkcspy/index.h...
babulonJune 26, 2008
westurneronOct 11, 2017
https://en.wikipedia.org/wiki/Computational_thinking
> 1. Problem formulation (abstraction);
> 2. Solution expression (automation);
> 3. Solution execution and evaluation (analyses).
This is a good skills matrix to start with:
http://sijinjoseph.com/programmer-competency-matrix/
https://competency-checklist.appspot.com
"Think Python: How to Think Like a Computer Scientist"
http://www.greenteapress.com/thinkpython/html/index.html
K12CS Framework is good for all ages:
https://k12cs.org
westurneronJuly 7, 2013
Think Python: How To Think Like a Computer Scientist http://www.greenteapress.com/thinkpython/thinkpython.html
Think Complexity: Exploring Complexity Science with Python : http://www.greenteapress.com/compmod/
Think Stats: Probability and Statistics for Programmers : http://www.greenteapress.com/thinkstats/index.html
arsalanbonJuly 8, 2014
"How to think like a computer scientist"
jrs99onFeb 10, 2014
Javascript in my opinion will take longer to get up and running because the language syntax and frameworks are not as straightforward to grasp for a complete beginner.
Ruby and Python have awesome books for beginners and intermediate. I recommend Think Python by Allen Downey and Learn to Program by Chris Pine for beginners. Both are interesting, relatively small, and give you a taste of the language, and both are free.
Both Ruby and Python have frameworks (Rails and Django) that are used by many, many people making it easy to ask around if you have any questions.
davidf18onDec 31, 2014
Downey's Think Python might be a good place to start (free download, but I'd recommend getting the hard copy)
http://www.greenteapress.com/thinkpython/
For reviews: http://www.amazon.com/Think-Python-Allen-B-Downey/dp/1449330...
You might consider this book or related ones listed on Amazon:
http://www.amazon.com/Python-Kids-Playful-Introduction-Progr...
There is this Intro iOS/Swift programming book that claims to teach non-programmers.....
http://www.amazon.com/Introducing-iOS-8-Steve-Derico/dp/1491...
This book also seems very interesting and doesn't seem to require much/any programming experience:
Analyzing Baseball Data with R
http://www.amazon.com/Analyzing-Baseball-Data-Chapman-Hall/d...
I do think it is very important that somebody be readily available to teach/help with some of the concepts....
tsurantinoonSep 15, 2012
It is commonly expressed that in Python there should only be one way, and only one way to do something (Pythonic). In Ruby, you can express yourself in a number of ways. Not in ways that are subjective to your taste, but subjective to the needs of your solution.
The way Ruby approaches blocks (and closures) is unique. There is no substitute and Python, and it forces you to code in a manner that is unique to the language. It exposes you to different design patterns and a new way of thinking.
---
To keep it short, learn what language best suits your needs. If you are doing this for fun and are just starting out, I recommend Python. Ruby does way too many things implicitly that it'd be hard to keep track for a beginner (but you can be pragmatic and learn as you go).
For resources, here are my recommendations per language:
Python:
- Udacity's courses are fantastic. They are engaging & challenging. They will teach you the language features as well as resources. They also handle domains from debugging, to simple console software, to web applications. http://www.udacity.com/ is your reference.
- Learn Python the Hardway is usually a good way to breeze through the syntax.
- Think Python - a fantastic book.
- Dive Into Python 3 - also a great short intro.
Ruby:
- PickAxe. Google this. Must read book. Absolutely amazing reference. I don't think you need anything else if you read this.
- Rubymonk, if you want to do fun exercises. Also a good intro to the syntax.
fohlinonJune 13, 2014
naishonJan 26, 2009
http://www.greenteapress.com/thinkpython/thinkpython.html
It is due to be published by Cambridge University Press under the title Python for Software Design. The link above is for the same content, available for free.
eritainonFeb 7, 2017
The good news for Perl 6 is that books are incoming. O'Reilly has taken on both Learning Perl 6 (by the formidable teacher brian d foy) for a summer 2017 release, and Think Perl 6 (a translation of Think Python by Laurent Rosenfeld and Allen B. Downey; unedited draft available now). Moritz Lenz is developing his manuscript of Perl 6 by Example publicly on his blog (perlgeek.de), and Ken Youens-Clark has released an e-book on doing metagenomics in Perl 6, which includes a substantial Perl 6 tutorial.
As to CPAN, with Inline::Perl5 the entire Perl 5 CPAN is available to Perl 6 -- and if you call now, we'll throw in Inline::Python for no additional cost!
ChicagoBoy11onDec 11, 2016
The fact is that there is such a wealth of resources out there that beginners often-times quickly get derailed. The most important thing to start is actually to try to find a way to dull out the noise and actually learn solid principles. Someone trying to get into web development today can quickly spend a week trying to set up Babel and PostCSS and get tremendously discouraged before they realize they are actually going about it the wrong way.
My suggestion to people who are new to coding is to actually go into a domain where that ISNT going to happen. If you have the motivation/time, don't try to learn to program by learning web dev. Instead, pick something like "Think Python" or some other resource that you can use as the CANONICAL resource for truth, and that will give you a linear path to progress to. Your advice about doing it yourself and pushing and the 80/20 rule is all gold, but I think it will be met with limited success if a person doesn't have a clearly established guiding path like that from the getgo.
And once that friend gets comfortable enough with programming principles and wants to then explore specific application domains, I would again make the same recommendation as before. Find that ONE canonical resource that can move you to the next step, and proceed with it as your bible until you have enough under your belt that you can then go out and explore concepts -- which you now can hang onto the solid foundation you built. For web, for instance, Steve Huffman's course at Udacity is pretty excellent at giving you the barebones of how a web application works. Do that. Forget styling, forget responsiveness, forget everything... but use that as your one-stop-shop to understand how a website works. Ok, now do your own. Ok, now explore that a little. Confident enough? Great, find another canonical source for SPAs. ng-book is great if you want to do angular (and I'm sure their react book is just as solid). Done all the examples in the book and feel confident? Ok great, now go read blogs about these things. Lather, rinse, repeat.
malandrewonMar 29, 2011
Beyond that, I would reiterate the following suggestions put forth by others:
-- How to Design Programs (get version 2. Racket, the IDE for this book, is practically plug-and-play, so you won't waste time prepping your development environment)
-- Think Python by Allen Downey (i haven't read this one, but it comes very highly recommended. the excerpts I've read show that Allen communicates the concepts very clearly)
-- Eloquent Javascript (very good introduction, all examples can be done directly in the browser with the specially-made console. This eliminates the time and confusion you will experience trying to set up a development environment with other languages.)
On top of those I'd also add:
-- The C Programming Language by K&R (if you are interested in C)
-- Dive into HTML5 (if you are interested in web development. HTML is a markup language, but you are going to need it to be able to build web stuff. This book complements Eloquent Javascript nicely)
-- Land of Lisp
-- DOM Scripting (Pair this book with Eloquent Javascript. It's the best introduction to the DOM that I've seen and will bridge the gap between HTML and Javascript)
The best books on coding are those that place equal emphasis on good prose and good programming practice and that de-emphasize syntax.
Also, look for books where the examples are real-world examples. i.e. things that people have actually had to implement at one time or another. Avoid books with completely imaginary examples that use made up names like foo, bar, widget, etc.
blotter_paperonMay 7, 2019
avinasshonMay 27, 2015
Many of the books at Green Tea Press[1] are available for free:
- Think Python: How To Think Like a Computer Scientist
- Think Bayes: Bayesian Statistics in Python
- Think Complexity: Exploring Complexity Science with Python
- Think Stats: Probability and Statistics for Programmers
- The Little Book of Semaphores
- Physical Modeling in MATLAB
- Learning Perl the Hard Way
few others. Do check the site.
Secondly, books by Al Sweigart[2] are also freely available. They include:
- Automate the Boring Stuff with Python[3]
- Hacking Secret Ciphers with Python
- Invent Your Own Computer Games with Python
- Making Games with Python & Pygame
[0] - https://github.com/vhf/free-programming-books
[1] - http://www.greenteapress.com/
[2] - https://inventwithpython.com/
[3] - https://automatetheboringstuff.com/
mkuhnonFeb 26, 2009
Also I can recommend Dive Into Python: http://www.diveintopython.org/
epequenoonDec 22, 2011
http://greenteapress.com/thinkpython/thinkpython.html
vitovitoonNov 25, 2012
I learned to program typing in code from books and magazines, and, later, from reading and rewriting parts of open source projects that did things similar to things I wanted to do.
There's lots of ways to learn development like that today, online, including great open source books like Dive Into Python and Think Python and Learn Python the Hard Way.
There isn't so much of that for design. Not online, anyway.
I don't write about "how to design" because, like programming, it's something you have to learn by doing. There's no Learn UX the Hard Way, but maybe there should be.
One of the projects I tried once was running design workshops, so I could tease out repeatable design exercise and publish those: http://vi.to/workshop/premise.html I ran fifteen workshops, and ultimately discovered they were structured great for the attendees, but wrong for my goals.
There's a book, The Non-Designer's Design Book, which is pretty proscriptive, but does give you exercises you can try and repeat. There are other books, like Editing By Design, which tell you "why" certain things are important, but doesn't include exercises.
Critique is a related problem: most interactive designers today didn't go to school for it, so they're missing the common cultural and academic background that fine artists, architects and industrial designers have, where they've learned the history of the practice, learned fundamentals, and practiced constructive criticism for years.
I don't know if you're any good as a writer or a designer, but if you're looking to write about design and make an impact on non-designers, you could do worse than to take a design pattern or an element of design and make exercises around it. Give people ways to practice them, to study an implementation, to apply it something new, and to critique it, repeatably.
epequenoonOct 28, 2012
Think Python: How to Think Like a Computer Scientist http://www.greenteapress.com/thinkpython/
It's a pretty good overview of basic concepts of Computer Science, it's focus is Object-Oriented but does cover functional programming as well.
I would also pair any of the suggestions offered here with http://pythontutor.com/ adding the visual component of program execution will help absorb the material much quicker and get you used to the nuances of python.
PostOnceonOct 10, 2012
I'm hoping this will be as good, but all the negative comments here leave me skeptical. Perhaps this is the crowd that would enjoy K&R C more than Think Python. The former is more of a reference to me than an introductory tome. Perhaps everyone here is just better at math than I am.
idoescomputersonJuly 6, 2013
AdmiralAsshatonDec 8, 2014
- Google's Python course (https://developers.google.com/edu/python/)
- Learn Python the Hard Way (http://learnpythonthehardway.org/book)
- ThinK Python: How to Think Like a Computer Scientist
(http://www.greenteapress.com/thinkpython/thinkpython.pdf)
Also working on the O'Reilly Python book.
Three books later, I still don't really feel like an "expert" with Python. I mean, I know the syntax well enough, I know basic programming idioms, I just need something of intermediate complexity to work on, somewhere between "Learn Python From Scratch!" and the Python Standard Library. Coming from a C background, I don't need to be told what most of these concepts are, I just need to know how Python does them.
I also made the mistake of trying to learn several languages (e.g. Java, Javascript, and Python) simultaneously, and by poor choice or poor availability of free materials, nearly all of them ended up being along the lines of these "Learn X Language with no programming background!" The end result being if I have to hear someone tell me again what an "if" statement and a "for loop" are, my head is going to explode.
To reiterate, where does one look for an Intermediate level Python book?
joelhausonJuly 3, 2011
If you don't like Scribd: http://mit.edu/6.01/mercurial/spring11/www/handouts/readings...
Think Python, How to Think Like a Computer Scientist: http://www.greenteapress.com/thinkpython/thinkpython.pdf
Whiteboard Demos [videos]: http://alawi.csail.mit.edu/~alawi/as3/