You are here

A killer idea for code

You know what I'd like to see? I'd like the various Free software groups (whether they use "open source" or "free software" doesn't matter) get together to produce the greatest educational tool the world has ever seen:

A website dedicated to Free / Open Source code. Not programs. Code.

Right now, there are a few sites out there that have search interfaces to Free software code, such as the most excellent Koders (which is itself ironically proprietary). But, I have found no place specifically dedicated to small code samples, designed specifically for education and discussion.

This is really just one small step in a direction I believe to be essential for the continued development of Free software: widespread computer literacy. Not your base literacy, in which mad, mad MS-Office skillz makes you a computer expert. I am referring to the basic ability to code, and to code well.

In my experience, coders who know the basics of coding are much better programmers than those who have lived entirely in a Visual Studio-like environment. I'm not saying fancy high-level IDEs aren't useful. They are. But a car mechanic equipped with the latest computerized diagnostic tools still needs to understand internal combustion engines to excel at his craft.

My argument isn't against IDEs. It's for computer knowledge. And to that end, I humbly suggest that a high-profile Free (or Open Source) entity might possibly further the cause by creating an education site for Free software; a site suitable for schools and the self-educated, that concentrates on code, code samples, and the art (and science) of programming.

This site doesn't even need to evangelize the freedom of Free code. As people use this resource, many will come to understand the importance of openness and freedom, as it relates to information and code. As they benefit directly from the free transfer of ideas, they will understand there is intrinsic value to the sharing of information and code.

Most importantly, it results in an open education framework, in which the code snippets can be reviewed and criticized, and the educational materials may be periodically revised to match the evolving world. It can become a resource for the experienced programmer looking for the best method to accomplish a specific task. (A recent example from my own world: how do you alter the process name of a running process?)

Finally, a code resource like this would help mitigate the effect of Microsoft's push into secondary and post-secondary education. Not that I'm worried Microsoft may be able to crush Free software. I believe Microsoft's stranglehold on the industry is doomed, though it will take years to sort it all out. Mostly, I'm concerned about the damage they may do in the meantime, to our students, our education system, and to computing in general.

Ultimately, our society requires decent, open education. We can't necessarily fix broken education systems in any particular country, but we can help out in the important area of computer science. All it takes is a dedicated website, and the resources to manage it. I don't have those resources, but there are organizations in the Free / Open Source community who do have sufficient resources.

If there is a site like this, in which the discussion of Free software code snippets as an educational tool is the primary focus, please let me know. If this already exists, it deserves our support.

I get a surprising number of people coming in to those posts from Google searches for simple things like converting a number from one base to another. So a big site that had lots of examples would probably do pretty well.

I've been thinking along a similar line for a while. For example "The Ruby Way - book" has almost two pages of ways to step through an array done as code snippets. On one hand it is useful (and in its context I think intended) to show the flexibility of the language and variety of ways to do things.

But I would like just one way shown for each, such as one way to iterate a range, one way to iterate each element of a container, one way to loop until a condition is met.

Additionally I want to mix onto it comparable constructs to other languages.

What I haven't concluded is the best way to organise it to make it browsable as I think a layered browsing approach is more important to beginners or people wanting to glance through a new language than search ability.

Or do you think that there needs to be a new single site effort with custom infrastructure to handle source code syntaxes

Perhaps like the "Java Developers Almanac" but more fleshed out, with best practices already in there.
http://www.exampledepot.com/egs/index.html

I have noticed most articles and books always state that this is not what you would want for a production system. So your idea would be to list a concept or task that woul dneed to be coded, and then have articles/entries showing how to do it.

Allow for different lanuages doing the same thing. In your example link I would like to be able to find out how to do the same thing (Howto change a UNIX process and child process...) using python.

Perhaps this could be folded into the http://www.google.com/codesearch or http://code.google.com/ efforts.

www.uselesspython.com has a lot of very simple source code examples (and I can still honestly claim to be the largest single contributer with 7 scripts to my name, lol). While learning python I went their numerous times, looked for a program that did what I wanted and just read the code to see how they did it.

I started my career as a developer using Perl. I quickly came to love and respect the CPAN repository. I believe it should be the envy of every other language. For those that are unfamiliar, CPAN houses a vast number of reusable libraries for the Perl programing language. If you need to get something done in Perl and you its something someone else has done before, you will find it on CPAN. I have never found anything like it for any other language.

My point in bringing this up is that such a site for ALL languages would be awesome for both the collection reusable code as well as an educational tool if it had the appropriate search tools.

I have a server, time and some interest in seeing something like this develop. I have not started anything but would like to.

I'm no programmer but it looks like O'Reilly's code search is a good resource. Also, all books in Prentice-Hall's Bruce Perens' Open Source Series are released under the Open Publication License and may be a source for such a project.

A lot of users do not even know how to compile source code, what it's doing etc, let alone how to read source code, let alone how to program.

No doubt that when developers tell people, "if you don't like this, if you want something, etc. code it in yourself" the users will be able to actually do that if a website exists that helps users learn the whole process and code from beginning to end.

Albeit the fact that this i a great idea, maintaining such a project would require some serious resources. Also. a lot of other trivial things like IPR, cpoyrights, liscence, etc. might interfere.
Just my 2 cents.

Many thanks for linking to my website. But the link that was more directly of interest to you was: codes.widged.com. That provides a set of small code snippets to solve specific problems ;-). Comments and suggestions on how to improve this are welcome. Note that this kind of service abound. Check out snipplr for a nice web2.0 version.

On this "Most importantly, it results in an open education framework, in which the code snippets can be reviewed and criticized, and the educational materials may be periodically revised to match the evolving world. It can become a resource for the experienced programmer looking for the best method to accomplish a specific task. (A recent example from my own world: how do you alter the process name of a running process?)"

What is needed, I believe, is not so much code snippets but the expression of many education problems in terms of design patterns. There is some explanation of what is implied by this at Design Patterns for Exercise Content. There is a live example on my exercist project cms. You cannot edit them for now (I mean you have to contact me to become an editor) but editing is done via a very simple form, that even the most technophobe teacher could manage.

On opencourseware, please visit the excellent website of my friend Gordon, iberry.com, the academic porthole, an Open Courseware Directory and other Higher Education Resources.

I have been an academic for 10 years. I taught in the best universities. I became a drop out because I got fed up of the right tools and infrastructures not existing. I am trying to set them up, one by one... but I started only a year ago and this takes time. Anybody interested in doing something similar is welcome to contact me to try to synchronize our efforts ;-).

Many thanks for linking to my website. But the link that was more directly of interest to you was: codes.widged.com. That provides a set of small code snippets to solve specific problems ;-). Comments and suggestions on how to improve this are welcome. Note that this kind of service abound. Check out snipplr for a nice web2.0 version.

On this "Most importantly, it results in an open education framework, in which the code snippets can be reviewed and criticized, and the educational materials may be periodically revised to match the evolving world. It can become a resource for the experienced programmer looking for the best method to accomplish a specific task. (A recent example from my own world: how do you alter the process name of a running process?)"

What is needed, I believe, is not so much code snippets but the expression of many education problems in terms of design patterns. There is some explanation of what is implied by this at Design Patterns for Exercise Content

There is a live example on my exercist project cms

You cannot edit them for now (I mean you have to contact me to become an editor) but editing is done via a very simple form, that even the most technophobe teacher could manage.

On opencourseware, please visit the excellent website of my friend Gordon, iberry.com, the academic porthole, an Open Courseware Directory and other Higher Education Resources.

I have been an academic for 10 years. I taught in the best universities. I became a drop out because I got fed up of the right tools and infrastructures not existing. I am trying to set them up, one by one... but I started only a year ago and this takes time. Anybody interested in doing something similar is welcome to contact me to try to synchronize our efforts ;-).

Many thanks for linking to my website. But the link that was more directly of interest to you was: codes.widged.com. That provides a set of small code snippets to solve specific problems ;-). Comments and suggestions on how to improve this are welcome.

Check out snipplr for a nice web2.0 version of codes repository
----------------------------------------
Marielle Lange (PhD), http://widged.com
Bite-size Applications for Education

On this "Most importantly, it results in an open education framework, in which the code snippets can be reviewed and criticized, and the educational materials may be periodically revised to match the evolving world. It can become a resource for the experienced programmer looking for the best method to accomplish a specific task. (A recent example from my own world: how do you alter the process name of a running process?)"

What is needed, I believe, is not so much code snippets but the expression of many education problems in terms of design patterns. There is some explanation of what is implied by this at Design Patterns for Exercise Content. There is a live example on my exercist project cms. You cannot edit them for now (I mean you have to contact me to become an editor) but editing is done via a very simple form, that even the most technophobe teacher could manage.

On the link you give. The fairly linear structure of a wiki is not really good to organize bookmarks. All bookmarks will be reorganized with foksonomy tagging and presented within a web 2.0 interface. But I this will take me a few weeks to finish (more exactly, this will take me a few weeks to finish other projects before I can work on that one). You can see an early draft at education bookmarks, which gives you access to my personal collection of bookmarks.

If you type in etivities in the first box... then you will get a huge list of websites which contain examples of codes for learning activities. There is more on the reved wiki, under Snippets & Templates.

I could do with helping hands... I am too busy for now with other projects like writing educational software and working on some ideas for a viral education game.

Well, I have been an academic for 10 years. I taught in the best universities. I became a drop out because I got fed up of the right tools and infrastructures not existing. The problem within education is not about making codes and snippets available to teachers. The problem within education is that many teachers have great things to contribute but most cannot because of technical obstacles. You also have to take into account that most resources like koders or snipplr are not adequate for a teacher community. They simply don't have the time (or even not the interest) to browse through these large collections. You can estimate that a teacher has an hour or perhaps two to waste in a week. Not much more.

I am trying to design tools that let teachers do what they do best, create great content without having to become technical expert or design experts or being expected to spend long hours commenting, rating, or contributing resources to the community (like asking them to provide learning object metadata or uploading their courseware onto a directory, which most do not, however keen they are on the idea of free and open software -- I know, I didn't do it myself, I was simply too busy when working as an academic).

However, this takes time set them up, one by one,and I started only a year ago and this takes time. And I need to intermix these activities that bring no money with others that help me earn a living, somehow.

Anybody interested in doing something similar is welcome to contact me to try to synchronize our efforts ;-).

My own understanding of the obstacles to the development of better resources within the education arena is described here The Problems that eXercist is trying to solve. The pyramid graphic there is relevant to an educational context in general, not just this exercist project. I would be interested to hear comments on this.

On open source code/software relevant to education, don't forget to check out eduforge.org. "Eduforge is an open access environment designed for the sharing of ideas, research outcomes, open content and open source software for education. You are welcome to use our community resources or start your own project space." Nothing prevents you from using it to share code rather than full software.

Author information

Biography

Tony Taylor was born, causing his mother great discomfort, and has lived his life ever since. He expects to die some day. Until that day, he hopes to continue writing, and living out his childhood dream of being a geek.