[racket] New user wanting to know where to go
> I was introduced to Racket recently, and immediately found it intriguing and began writing programs in it for whatever purposes I saw appropriate (previously I knew only C++ and Java, I am still a high school student with little in the way of formal computer science education)
>
> So, I was wondering, other than obviously waiting and taking college courses, what routes anyone would suggest to learn the language. So far I have relied on the help of a couple of friends who are CS majors and the docs online, and looking at the questions on this list most things go over my head. I have seen a lot about the book How to Design Programs here, would that be a good option?
Yes, _How to Design Programs_ changed the way I think about programming (not to mention teaching it). The book is, however, 11 years old, and many parts of it no longer represent what most of us actually do in the classroom. Most notably, most of us now use a lot more graphics and GUI programming than we did in 2000; we still use the same design recipe, but have improved the terminology in places. To get a more modern take on things, you could look at
(a) _How to Design Programs_ Second Edition, which isn't finished but which is available on-line for free at http://www.ccs.neu.edu/home/matthias/HtDP2e/
(b) my book _Picturing Programs_, which is available on-line for free at http://www.picturingprograms.org/download/
Both of those are really "how to program" books that happen to use Racket, so some parts of them will be old hat to you... but you'll probably learn a new take on some things that you _thought_ you had learned in Java or C++. Once you've gotten through those, I would suggest looking through various parts of the DrRacket help: for example, the "universe" teachpack provides a beginner-friendly way to explore client-server network programming; the "Continue" chapter discusses how to write interactive web apps using continuations (which make it MUCH easier than web apps in most other languages); macros give you power and flexibility that isn't available in most other languages; etc. etc.
Stephen Bloch
sbloch at adelphi.edu