views:

471

answers:

7

I have an intense job and large family. Finding time and energy to explore/expand technical skills on my own is difficult. I'd like to find some courses on advanced software topics without having to enroll in a PhD program. I'm not quite sure where to start.

There are some great resources out there for learning different programming topics on your own... books and websites for example. But these approaches haven't worked well for me.

Local training classes are usually more focused on fundamental programming concepts. I spent my formative programming years in OS development, so need none of the basics. My OO skills are solid. By the way - I don't program for a living now... I sold my programming soul to do agile project management.

One particular topic I want to explore is functional programming. I've downloaded F# (.NET is my most recent technical platform) and Haskell (never opened it) and have been thinking of playing with Clojure (though have no JVM background... have eschewed Java my whole career).

I'd consider distance learning options, though would prefer a class in person. I'd prefer something focused (spend an intense week rather than one day a week over 3-6 months). I live in South Florida - perhaps someone knows of options down here? Anybody else in a similar boat who'd like to collaborate on an approach?

+5  A: 

F# and functional programming is a good start, especially since you are familiar with the .Net Framework. However, the tools are just a means to an end.

You haven't explained what you mean by "advanced." Do you want to mathematical research, or perhaps explore the intricacies of design patterns as they relate to machine learning? Have you an affinity for orbital mechanics, or gene research?

In other words, what are your interests? I suggest you explore something that jazzes you, especially since programming is not currently your mainstay. Who knows where it might lead.

Once you have an area of interest, you can find classes that focus on that. There are also resources such as online PhD theses that can give you an idea about current areas of research.

Robert Harvey
+8  A: 

Are there any user groups in your area? You could try them, my experience of them is you get a mixture of really smart people there (who like to show you how smart they are), a bunch of people who want to learn/network and some people who just like running things. In other words - normal people.

The other thing you could look at is the M.I.T Open Courseware stuff. Don't they have podcasts, online materials etc. The iTunes University has links to loads of great audio and video material that you may find more useful than books and websites.

But you should get used to books and websites - thats how a lot of courses are disseminated these days!

Fortyrunner
A: 

Why not just start working on a project that interests you, such as a game, perhaps, in F#, or something with WPF, so you can take advantage of the .NET framework.

You can also d/l VS2010 for free as a starting point.

F# is probably your best choice, as you can leverage your experience with .NET.

When you have a problem, just post some code and ask questions here. I am stuck, how do I do ...?

A game may be nice, as you can do it with your children helping to design it, perhaps.

James Black
+1  A: 

Well, it's quite far from you but it seems to fit so well in here that I'd like to mention it anyway: the University of Oxford is offering a part-time software engineering programme. It's a number of intense one-week courses on a variety of subjects, and they also offer a course on functional programming. This is taught by Jeremy Gibbons - he once said on LtU that he's usually got at least one student from North America per course. You can take individual courses that interest you without applying for a "complete" study.

One good thing about these courses compared to other one-week courses for professionals is that you get an assignment to take home with you - you can send back your solutions and get it marked, but that's only required if you want to study for an award.

Yeah, I know it's quite far from you but it seems to tick many of the boxes you mentioned (intense one-week course, class in person, functional programming) and Oxford is a really nice place.

(FYI: I was a student on the programme, so I can say the courses I took were all very high quality, but I wasn't on the FPR course as I certainly know a bit too much Haskell myself already. I heard from other students, though, that FPR is an excellent course)

Rüdiger Hanke
+1  A: 

There are some good FP learning materials from MIT on google video, it's Lisp-based but that doesn't matter: http://video.google.com/videosearch?q=lisp+mit&emb=0&aq=f#q=%22Introduction+to+Lisp+1A%22&emb=0

I would consider taking λ-calculus classes if I had to. It's what I've learned during my college years: λ-calculus for theory, OCaml and Lisp for practice.

As a language, I'd definitely recommand using F# (both interactive and compiled). Then doing personnal project in F#.

Stringer Bell
+2  A: 

Some links that, I am sure, you will find useful:

  1. SICP - Video Lectures by Hal Abelson and Gerald Jay Sussman and the associated text book.
  2. Free computer science classes from Stanford.

I especially recommend SICP.

Vijay Mathew
A: 

Just out recently, Eric Meijer doing a whole series on Functional Programming fundamentals on Channel9

Benjol