I've had this idea of a possible good way to help persons old and new to the world of programming to learn new languages and generally have fun. It's based around the CodeApplet that I've been developing, and which you can try out now by following the previous link. I think it's in quite usable form now for this purpose, though development on it continues.

The idea that I've had so far is to organize specific times, perhaps weekly or otherwise, to meet for CodeApplet sessions. The schedule would include which language/topic would be the focus, and, when necessary, we would make sure that at least one appropriate "guru" would be on hand to answer questions.

I ask anyone who is interested in this idea to leave a comment on this page indicating things like:

General OnlineEducation ideas not related to this proposal should go on that page, not this one.

-- AdamChlipala

Trial sessions

I think the applet is working well enough to organize some trial sessions and see how this feature works out. Right now SchemeLanguage is the only language available, and since it probably has the best combined overall quality, inherent learnability, and availability of online learning material, I think it makes sense to use it for initial trials.

So, any suggestions for the structure? We have some online books linked from LearnProgramming. How about picking one of those and setting a time for people to come try the exercises for a particular chpater together? It looks like How to Design Programs has a good set of exercises.

Would anyone like to volunteer to serve in a "guru" position to answer any big questions that come up?

What about good times to have these?


No one has responded, so I am going to say that we will have something some time next Saturday. Any suggestions for times? -- AdamChlipala

Comments

a) I'd prefer something on functional or logic programming languages. Just something interesting or different than imperative languages. Pretty much everyone has some experience with some kind of imperative language, be it C or C++ or Perl or whatever. I doubt we see very many people here who are completely new to programming, but you never know. One thing we need to keep in mind though, is the ability to find or write an interpreter that will live in the Java applet. I doubt people would want to write their own ML or Prolog or Haskell implementations in Java. But who knows; there may be a way around this.

b) Now that it's summer time, pretty much everything is OK for these first few weeks. But come late June I start working, and only evenings would work. Weekends, however, are good.

c) This sounds like an interesting idea to me. I think it's just going to be dependent on participation.

-- ctkrohn


Actually, there are ML and Prolog implementations in Java. The only ML implementation that I know is a compiler, though, so it would have to be server-side only.

-- AdamChlipala


It seems to me that you could use the Process class in java to use a non-java interpreter, expanding the range of available interpreters to, well, almost anything. If we're prepared to stuff around with user mode linux, the CodeApplet could have the concept of an interpreter accessed over the network, and the server could use user mode linux to host an interpreter that the CodeApplet would use. That would allow almost any language to be used, if that was deemed desirable.

Anyway, it sounds like fun. I have problems with seeing how functional programming can be used to create a real application, where I might for instance need to open a file, write to it, and close the file - I can't see the functional way of doing that. The CodeApplet might provide an interesting way to provide demonstrations of such things.

-- IainMcCoy


I don't know if you've thought about security issues, but right now I have all file operations disabled in the Scheme interpreter. It's just too dangerous to take a chance with them when anyone can run any code in them on the server, as I see it. I think it would be even harder to get standard, native out-of-the-box interpreters into such a safe state, but it might be possible.

-- AdamChlipala


I love the idea and I think it would help me understand the practical uses of functional programming, just as Iain said. I am somewhat of a beginner to programming and when I see all these things like "parametric polymorphism" I say, "hmm, this looks cool, and it makes sense, but when will I be able to really use it?" Yes, I know they are very useful, but when learning about them in the very beginning I fear that when the time comes that I actually need them, I will have forgotten about them. So anyway, I'd be most willing to learn a functional language using the group coding sessions. As you can probably tell by the amount of time I spend on IRC (usually ranting incessantly), I am available almost always.

-- MikeNolan


Yes, Adam, I had thought about security. The notion of using User Mode Linux to host an interpreter accessed over the network had the sole purpose of sandboxing the interpreter. Anyway, After I said that stuff about CodeApplet as a way of demonstrating functional idioms, I realized that that could happen just as well over IRC; CodeApplet could merely streamline the process somewhat. Still, streamlining processes is not to be sneezed at.

-- IainMcCoy


Oh, sorry; I wasn't familiar with User Mode Linux. Still, the trouble would be separating the privileges that the daemon needs from the privileges to give the interpreters. I don't know how easy that would be.

-- AdamChlipala

GroupCodingSessions (last edited 2008-07-09 05:47:50 by localhost)