I've started taking this online class that someone else mentioned on another forum, and I'm finding it to be especially good.
(I'm only up to week two, though)
Algorithms, Part I
Kevin Wayne and Robert Sedgewick, Princeton
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers basic iterable data types, sorting, and searching algorithms.
This session is theoretically over, but I think you can still sign up if you're willing to put up with the videos and online materials, and aren't worried about completing the assignments in time to get "the certificate." (or you can wait till the next session.)
Things I particularly like:
- An "algorithms" class is the first step up from an intro programming class to "real" computer science/engineering. You learn to use the language in relatively simple ways on simple problem-segments, reinforcing your knowledge of basic programming elements without being overwhelmed by a complex task. That seems to match the way the course is going.
- They use Java for programming, but at a simple level that should be easily transferrable to other languages. In particularly, they specifically reject the use of existing java libraries in favor of the actual language primitives, and avoid the trap of using flashy but "magic" graphics/etc.
- They provide a Java programming environment to use (if you don't already have one.) It's simplified, like Arduino, and the examples run from a command-line shell. (DrJava, if that rings a bell.)
- You do learn some "advanced" java that is "useful stuff" toward getting real work done, but is probably not covered in introductory classes. With asides on how to do similar things in other languages.
- The online materials are quite good. Coursea has a nice overall framework, and in this case the course presenters also wrote the (not required) textbook, and that has its own extensive set of online material (that you can access whether or not you've bought the textbook.)
- I like the lecture style.