Best self-teaching resources for Java, C++, others

Hey gang. I’ve been playing around here and there with things like HTML, CSS, Java, MySQL for years but have trouble getting past more basic implementations of Java and the C languages. Mostly because there has been no pathway set in front of me to help develop my skillset further.

I was wondering if anyone in the Stonehearth community well-versed in Java, C++, Python, Lua had recommendations as to good solid resources (preferably texts/books as opposed to web-tutorials, unless that’s the only way to go) that they might have used while learning that they could recommend to me.

Thanks in advance!

1 Like

For Lua try “Programming in Lua” by Roberto Ierusalimschy.

1 Like

For general programming methodology:
http://see.stanford.edu/see/courses.aspx

Start with CS106a and knock yourself out–lectures, materials, everything is now online. The language (java) is not immediately relevant to Stonehearth, but a good grounding in fundamentals is always useful.

6 Likes

Thanks @voxel_pirate and Steph!

Hoping to re-learn and then grapple with some basics before I try to tackle anything complicated. Definitely appreciate the push in the right direction!

1 Like

here’s a few references from the forums, that might steer you in the right direction… :+1:

2 Likes

Just have to say thanks again @sdee. This Stanford course looks perfect for what I had in mind.

I learnt the very basics of Python through the help of Mr. Thenewboston.
I also learnt the basics of Java through Thenewboston and then basic-intermediate through the help of Mr. TheChernoProject.

Thenewboston is a great teacher but not the best at coding and making his programs efficiently and to be efficient.
Thechernoproject is very wild but if you want to learn Java properly, I suggest him.
I guess having a(n internet) friend who is a pro Java-er helps a lot though.

EDIT: Actually, thinking on the Lua front, there’s this kids’ game called ROBLOX where you can make games and script them to do stuff using Lua. From what I’ve heard, it’s a good first building block. There’s a whole wiki on it ;).

1 Like

Tom, Tony and I have all taught multiple sections of the first course, CS106, at some point in our lives or another. We’re not up to date on the current assignments, but we know it’s super effective at cramming in the basics. :wink:

I love the fact that it’s all online now.

2 Likes

This guy makes probably the best programming tutorials i have ever come across. I’ve only bothered to watch his Java tutorial series. It starts of extremely simple, but gets very in depth eventually.

I take it that you and Karel are quite familiar then…? :wink:

When CodeHS (started by a bunch of CS106 alums) turned Karel the Robot into Karel the Dog, I was, shall we say, scandalized. :wink: Later charmed. And I suppose balls make more sense than beepers.

1 Like

i am sure i could use one or more of these quotes as leverage against you, in some form or fashion…

2 Likes

Balls always make more sense… always…

That is a very good teacher. I love how he thows candies at people asking questions.

good grief, the entire course materials are available, arent they? this is pretty impressive…

not that i’m dying to learn Linear Dynamical Systems… but should i ever have the urge, i’ll know where to go! :smile:

I did think that sounded quite interesting myself, I’m likely to lazy to actually look at it though. Then again I’m quite nerdy and thought that the language processing and machine learning sounded both useful and interesting, again the laziness and distractedness issues. Luckily for us Stoners I have a minor obsession with modding tools and modding games in general so I won’t abandon things too quickly, I’m sure I’ll finish at least one project by release (Possibly even playable release if we get some coding focused livestreams).

2 Likes

Linear Dynamic Systems aside, I’m pretty sure that 75% of entry-level software engineering job interview questions are addressed in CS106a, CS106b and CS107. Sometimes it feels like the best (unintentionally) kept secret in Silicon Valley.

1 Like

So, what I’m getting here is that these three are the lowest level of Java Beginning Programming classes?

1 Like

Not quite. Though CS106a is taught in Java, it’s really about laying a solid foundation for software design and implementation. The website specifically mentions: object-oriented design, decomposition, encapsulation, abstraction, and testing. In practical speak, this means: if you’ve taken this course, you can write code that other people can read and modify (which is super important for team projects). The language of the course actually changes as different languages come into vogue; when I took and taught it, it was in C.

CS106b moves to C++ (a natural step since Java abstracts away memory management) in order to introduce (in the website’s words): fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. In Silicon Valley hiring-speak, this means that if you’ve taken this course AND CS106a, you can now write efficient code which re-uses popular, existing patterns. Again, the language is less important than the theory.

CS107 traditionally touches a wide variety of languages (when I took it, each week’s assignment was in a different language) as if to drive home the point that if you’ve learned how to think about programming, you can program in anything. This configuration of the class looks like it also covers advanced memory management, so that you know what your program is doing at a fundamental level when it’s executing (really useful for debugging not just your code, but the libraries on top of which it is written).

Mastering a coding language is undoubtedly useful. It’s like being an architect who really understands the material properties of wood. You can build any wooden structure! But mastering the fundamentals is like being an architect who really understands houses. You can build anything you want out of the best tool for the job. It’s the key difference (in my experience) between knowing how to code and being a software engineer, and valley companies anyway, seem to hire for the second, not the first.

6 Likes

thats very insightful, and painfully obvious in lots of industries… for me, in both Oil & Gas and Healthcare, i’ve had many a brilliant colleague, who would i would not classify as a software engineer… myself included… :wink:

you’re stock just went up a bit Ms. Dee…

1 Like