• Post Reply Bookmark Topic Watch Topic
  • New Topic

Stanford Intro to CS online classes  RSS feed

Blake Edward
Ranch Hand
Posts: 106
Java Netbeans IDE Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Does anyone here have any opinions on these classes or any other online classes that one could participate in free of charge in their spare time. I really need something to bolster my study and start making me think beyond the small snippets of code that I look at and create on my own. I'm sure I could just jump right in, but I really want to do things right. I feel like I am fumbling around in a dimly lit room when I code and at times I feel very uncreative. I have a BFA in studio art so the uncreative part seems to come from not knowing my medium (Java) as well as a painter knows her paints.

I would welcome any comments or feedback. Self study, or just hacking code, can be lonely and fraught with wrong turns. I was thinking that an intro course like the one mentioned above, from a reputable institution that wasn't interested in taking money from me, might be a good thing.

Also, do any of you ever use "planning" as a form of procrastination? Lately I have been busy planning projects and study time but haven't actually done them. I see this as a way to convince myself that I did something positive towards mastering Java. But some weeks it just doesn't work and I feel guilty if I don't get something done. Alas...


Winston Gutkowski
Posts: 10575
Eclipse IDE Hibernate Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Blake Edward wrote:Does anyone here have any opinions on these classes or any other online classes that one could participate in free of charge in their spare time.

Fraid not, because I've never used them.

Also, do any of you ever use "planning" as a form of procrastination?

All the time.

I have at least three "open" projects in my IDE at the moment - a couple of which have been so for more than a year.

It's a fairly common phenomenon known as "development paralysis" and, in my case, simply boils down to a lack of discipline.

I liken it a bit to a "Wiki day" (and I'm sure you've had one of those): You start off in the morning looking at a page that interests you, and end up in the evening miles from where you started; often having forgotten what you were looking at to begin with. They're often great fun and very informative, but you haven't actually accomplished much - except perhaps to improve your chances at Trivial Pursuit.

An example for you, from one of my "open" projects:

I've long been fascinated with 'collections' of all kinds, and have often wondered how one might write a collection to store items that have very large (often numeric) IDs efficiently (preferably close to constant time) and with minimal space overhead.

Such items (for example barcodes, or bank account numbers) are often issued in "groups", so if there was some way of simply subtracting an "origin" from the actual number, we could store them in an array that only takes up as much space as the group it holds, despite the fact that the original "indexes" (or IDs) are enormous.

So far, what I've come up with is basically a "base-32-tree" that utilizes "groups" of items stored as arrays of 32 elements, where each level is directly indexed from the one above (so avoiding any lengthy "comparison" checks). The advantage of using a base like 32 is that:
  • The tree is very "shallow", so the space overhead of storing "parent" nodes is very low.
  • Each "level" index is the result of a simple binary mask and/or shift.
  • and all my testing so far seems to suggest that it is, indeed, a very fast structure.

    The problem is that all my efforts so far have concentrated on the "groups" and how they're put together - ie, the "low-level" stuff - and I've yet to do much work on the actual "List" (or Map) itself...

    Lack of discipline, you see. If I had a three-hundred pound defensive tackle standing over me with a bullwhip, I'd have got the job done long ago.

    nick woodward
    Ranch Hand
    Posts: 382
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Hello Blake,

    What sort of level are you at?

    I've done about half of the CS106 course, read about half the Learn java in 21 days book (very good if you ignore the 21 days bit!!!), read a decent amount of the AIO java reference guide for dummies, am currently reading the official java tutorials and the official OCA developer book. Oh yeah, and Derek Banas' video tutorials on youtube too (these are excellent).

    The point is that you can start any course, but ultimately much like your procrastination problem, you'll find yourself distracted - so multiple sources will naturally become the norm for you after a few weeks.

    As for the CS106a course / book:


    Excellent introduction for beginners. karel the robot is a good introduction to method calls, and the course with professor mehan (?) is all on youtube and excellent. You'll want 'the art and science of java' book to go with it.
    The book teaches java through an external library, ACM, which while making things slightly more abstract, is well worth it. I breeze through certain sections of most normal java texts because the course teaches you depth that other introductory texts seem to skim over. For example when using graphics.
    The (often levelled) criticism of the book that it does not provide answers to chapter questions forces you to understand rather than repeat parrot fashion. Although I will agree it is frustrating at times, the problems at the end of each chapter are there for a reason. Each of them is carefully designed to make you fall into obvious traps - the reason being that you then understand the problem if it ever comes up again. I've not seen anything that is as good in this regard.


    You'll have to switch to the standard java libraries at some point - but having done this I can say that it forces you to understand classpaths and external JARs earlier than you would in any other text.
    Its a fucking hefty book.
    I started to feel (when they introduced listeners), that I understood enough to make the jump to the Java libraries. The ACM abstractions (for example listeners are implemented by the extended 'GraphicsProgram' class) eventually become unecessary imho - but I'm 100% going to finish the book because I know it is invaluable regardless of its overall direction.

    Personally I'd read the book, watch the lectures, then go to derek banas' video tutorials and start applying your knowledge to the standard Java libraries. Not sure I would have done so well if I'd jumped straight in.

    Hope that helps buddy.

    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!