
Ask HN: Are there any good intermediate level programming courses? - SnowingXIV
I&#x27;ve been doing doing a wide variety of basic development work but I still feel like I don&#x27;t know anything. I&#x27;ve tried to find courses or other material that is more than explaining what data types are or going through if statements&#x2F;loops etc. There are tons of these courses out there which is great but they aren&#x27;t what I&#x27;m looking for.<p>When attempting to find &quot;intermediate&quot; or &quot;advanced&quot; courses it&#x27;s often way beyond what I know and I feel like I&#x27;m missing a bunch of knowledge. I wish I could jump in and learn things about ML as that seems interesting.<p>I&#x27;ve built a few applications and notably one larger one. (Most of these are never built without looking things up and copying and pasting problems I run into from Stack Overflow).<p>Routinely I spend a bunch of time doing things like code fights and hacker rank which is fun but also gives a false sense of satisfaction. &quot;Neat, I can code these weird loops that check the index and solves whatever the problem is.&quot; It&#x27;s akin to doing well on a math test because you know how to solve those kinds of problems because you&#x27;ve done the chapter review.<p>Currently I maintain and build pretty basic websites and focus on performance and semantics. I&#x27;ve had to write some simple js to interact with APIs for mail and forms to feed into systems. Nothing complex so this doesn&#x27;t really grow me. Most of the time it&#x27;s adding more html&#x2F;css. It&#x27;s updating the website and making sure it&#x27;s up to snuff.<p>Other routes I&#x27;ve attempted to take is latching onto a framework to build something but most of those guides you spend the majority of the time setting up it&#x27;s environment with a million dependencies and then hours later you have a to do app. Again, zero knowledge gained.<p>Is there a book out there or even a class on coursera (or other something similar) that skips all the basic syntax and gets right into solving problems or how to approach them but also holds your hand really close?
======
panta
I can't recommend courses, because I don't have direct experience of any, but
given what you say, my suggestion would be to take a bit of a pause from
pragmatic problems, and dedicate some time to learn the foundations of
computer science, in particular about algorithms and data structures. I'd
recommend a couple of books: "The Algorithm Design Manual" by Steven Skiena if
you want something not too theoretical, or "Introduction to Algorithms" by
Cormen, Leiserson, Rivest, if you want a bit more breadth and theory:

[https://www.amazon.com/Algorithm-Design-Manual-Steven-
Skiena...](https://www.amazon.com/Algorithm-Design-Manual-Steven-
Skiena/dp/1849967202)

[https://www.amazon.com/Introduction-Algorithms-3rd-MIT-
Press...](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-
Press/dp/0262033844)

As a second suggestion, I'd recommend to learn a language somewhat different
from JavaScript-like (or C-like) languages, something that challenges your
mind to think a little differently and understand and create higher order
abstractions. There are many choices, but to avoid confusion and being my
favourite, I'll point to one: read the "Structure and Interpretation of
Computer Programs" by Abelson and Sussman. It teaches Scheme in a gentle and
inspiring way but at the same time it teaches how to become a better
programmer:

[https://mitpress.mit.edu/sicp/](https://mitpress.mit.edu/sicp/)

Or if you want made of dead trees:

[https://www.amazon.com/Structure-Interpretation-Computer-
Pro...](https://www.amazon.com/Structure-Interpretation-Computer-Programs-
Engineering/dp/0262510871/ref=sr_1_1?s=books&ie=UTF8&qid=1507563607&sr=1-1&keywords=structure+and+interpretation+of+computer+programs)

I can't recommend it enough. If you read it, do the exercises, don't limit to
read through them.

Maybe it's even better if you start with this, and THEN read the books on
algorithms and data structures.

Enjoy your journey!

~~~
SnowingXIV
SICP has continually showed up on my radar and before this post it's what I
was looking at getting into again but felt this the book might have been too
"meaty" and maybe was out of vogue. I think I just need to delve into it and
finish it. Awhile back I did the first couple chapters and it did seem to go
quite well though it's not for the faint of heart and really requires hard
focus and I'm okay with that! My hesitation was that I wasn't sure if it was a
solid starting point. Looks like it might be!

~~~
panta
It could have a bit of a "serious air", but don't let this intimidate you,
it's not that academic. Also you don't need to read it all to grasp the most
prominent benefits. Chapter 2 and 3 have a lot of juice (I remember in
particular the part on generic operations and the symbolic algebra example in
ch. 2 and the streams in ch. 3). If you decide to read it all, in the end
you'll learn how to write an interpreter for the scheme language, and this
will ingrain a very deep understanding on how an interpreter (and even a
compiler to a degree) works. But as I said, write the code yourself while you
read the book. It will be easier to follow and much more fun!

------
travmatt
If I’m understanding where you are currently, I’d recommend Michael Hartl’s
Rails Tutorial. It really bridged the gap between hello world type tutorials
and how a modern framework functions.

------
brudgers
_Paradigms of Artificial Intelligence: case studies in Common Lisp_ by Peter
Norvig is a great intermediate text on an interesting topic in a language that
is worth becoming familiar with for its own sake. It clearly explains search
and interpreters and pattern matching and DSL's and other useful programming
concepts in clear terms.

------
hsikka
Hey man, if you find any, I'd love for you to share it on www.learnsearch.xyz
:), we're trying to build a cool community

------
mazeway
Great Code Club seems nice, but it's a bit expensive

