Learning Lounge Rebuilding

An essay by Marc Santoro.

Educating the Masses The Future of Tunes

The Tunes project has been in existence for several years, and has gone through many cycles of active growth and stagnation. Currently, it seems that Brian Rice is the most active participant, and it also seems that he is dissatisfied with the inactivity of the current crop of members. As he has said on IRC today, and this seems to be true, most people who make a commitment to Tunes tend to vanish shortly afterwards. I think this happens perhaps because the current direction of Tunes is not agreeable to the people who might otherwise contribute. For example, most of the work being done seems to be in the form of Slate and the Cliki. While both of these are major projects, and are worthy as well, these two factors tend to be unimportant in drawing attention. I also think that there are a substantial number of people who want to learn. But there are also a lot of things that are keeping people from learning. Interactively teaching people through the internet is very difficult for both parties; non-interactive education has it's own set of problems.

It seems like the current Tunes approach towards education is "Read these books/papers, learn these languages, then get in touch" -- short, sweet, and overwhelming. There also does not seem to be any sort of sustained interaction between people of different skill levels. I would aim to solve both these problems.

The first is the most important because people may not have the time commitment or motivation to learn the corpus of knowledge. Rather than disregard these people as valuable potential contributors, though, I would post this example: I have several friends who are electrical engineers. They understand circuits and electronics on a level way over my head, and are fairly smart people. They may have vague interests in programming, but their interests are mostly limited to things that would let them learn more about electronics. They do, however, recognize the value of knowledge, and the value of understanding systems outside their studies.

Perhaps someone unwilling to make the time commitment to learn the full body of Tunes would be willing to make the time commitment to implement a particular algorithm in a particular language that interests them. Perhaps a student studying compiler design might aid in the creation of a compiler that would fulfill a need of Tunes.

Secondly, it has been my experience that sustained interaction is important, throughout the entire process. Learning is always process, and people should not be expected to make giant leaps before being able to participate in the development of a project.

I will propose two things:

1) I think that the "Learning Lounge" needs a drastic change. It should be rewritten and reorganized perhaps as follows. This design is based around a programmatic structure, intended to get people involved and keep them involved in interactive learning processes. I don't think people need to understand the breadth of the subject matter presented on the website to develop Tunes. My example here is GNU/Linux: Most GNU/Linux developers have limited understanding outside of their specialty; but still GNU/Linux is an good OS (relatively). I think that GNU/Linux's principle downfallings come in the architecture it is based in, not the talent of the developers. Likewise, a compiler or a library can be written without understanding material unrelated to that compiler and library. The trick here is to get people hooked and get them specialized and working, not to churn out a bunch of well-read theorists, who while may understand more than a neophyte Tunes hacker, have yet to produce any code. I think it would also be useful to show how some of the Tunes-like ideas in existance today can be taken advantage of to write interesting software. I take this position because I imagine that Tunes will be big. I think that Tunes could potentially evolve out of this work.

To continue, then. The goals are, firstly, to provide an introduction to advanced computing concepts that are Tunes-like. Provide an elegant path through these topics that is adaptable to people with prior experience as well as people with very little experience in Tunes-like concepts. I would propose that each course take approximately 20 hours worth of self-study (the reading of a good book or two), along with - at the bare minimum - an equal time of code writing. These courses also assume that a student is fairly self-motivated and fairly intelligent. It would be nice if these were geared towards writing code, so as to attempt to trigger a "larval stage"[1] among students who are ready. I would like to see each path broken into sections that may take, perhaps, 2 hours to work through. I am certainly not proposing we write books for each section -- but that perhaps, we create a syllabus based in as much free material as reasonably possible.

Path:

2) That mailing lists be created for the support of fledgling Squeak/CL developers - and eventually, other languages. These lists should only be created as they are staffed. These lists will serve as the "interactive education", whereas the paths above will serve as "non-interactive education". I would propose for these lists a "friendliness" policy - no flaming, vulgarity, limited off-topic messages (but don't berate people for it), no RTFMs (but a pointer to an URL would probably be acceptable).

In writing this, I am reminded of a story about a robot, who upon crashing on Mars, creates the human species and directs them so that they would eventually produce a part that would allow him to repair his spaceship. While educating the masses may not be directly applicable to the goals of Tunes, I believe that in an indirect way it will produce people who could contribute to these goals. [Are you thinking of "The Sirens of Titan"?]

[1] - Larval stage as mentioned in the "Hacker" entry of the jargon file.


How about adding "Structure and Interpretation of Computer Programs" to this list. In particular the exercises are invaluable and cover many basic aspects of programming that are simply never covered as thouroughly in some computer science courses (such as the difference between recursion and iteration), which is a shame.

Also the videos of the lectures are quite good for beginners.

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start

--Codeburnt