Learning to program with Linux

Birmingham University's Prof Aaron Sloman has been exploring ways of providing an environment for school students interested in learning about programming and AI under Linux, as part of the Computing At Schools project. This might well be of interest to schools who would like to facilitate collaboration between their students and those studying elsewhere, as well as those who are hesitant about providing their own Linux box for students to work on.

He writes:

I have now had a detailed discussion with our senior computer officer. He thinks one of our linux servers ('tinky' running CentOS 5 (Free version of Red Hat Enterprise Linux) could be used for CAS people who would like to experiment with remote learning/teaching and collaboration. The machine has 4GBytes Ram, four Intel Xeon 2.4Ghz CPUs, and fast network connections to our departmental file store, which is backed up every night. The machine runs all day every day, and is also used by staff and students for project work, but at present usage is light.

This machine could support quite a lot of users who are mostly reading (or writing) documentation, working in an editor, and compiling and testing programs, without a huge amount of graphical traffic or audio.

Our support team would not be able to provide any help for external users, apart from setting up their accounts, so that would depend on our users (like me) being willing to answer questions, etc. When I know who wants to try using our system, I'll collect volunteer helpers. (We already have a 'linux-users' email list.)

If you are interested in using this facility, please write to me about what you would like to do, where you are, etc.

Anyone who wants to try using this will have to be registered as a user. This will require filling in and signing this form

http://supportweb.cs.bham.ac.uk/account-apply/account_apply.pdf

and being accepted as an 'Honorary research associate' (e.g. collaborating with me).

As I've mentioned previously, one of the program development environments we can make available for this purpose is Poplog, which includes support for several languages, Pop-11, Common Lisp, Prolog and Standard ML, along with a lot of teaching material for AI and general programming at various levels of sophistication from absolute beginner onwards, introducing a wide range of control constructs and data-types, as well as packages extending the language to support particular programming paradigms.

I have provided sample pointers to a small subset of the 'teach' files here (all of which can be browsed via the web, but are also included in Poplog if you download it to a local machine):

http://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html#teaching

They are all usable, but in need of improvement! (I can make that section of the file available as a separate file, if that will help anyone).

If anyone would find it useful, I could assemble various components of the existing documentation into a package to give someone who is not already a programmer a taste of several different styles of programming, and different ways of composing program fragments into a functioning whole.

My aim would be to undermine many common myths about programming, e.g. that it involves composing lists of instructions, or that all programming rests on manipulation of numbers, or numbers and strings. For instance, intermediate stages in understanding or generating a sentence in English could involve assembling a tree structure, as could forming a plan. It is even possible (easy in Pop-11, Lisp, Prolog, Scheme) for a program to create new programs, undermining the notion that there's a distinction between programs and data.

Anyone reading the existing Poplog documentation may be puzzled by some aspects of the format. It has that format because when the documentation is read in the Poplog editor (Ved or XVed) the documents and program libraries are automatically hyperlinked to one another. So if a document says 'See TEACH * LISTS' then a user can put the editor cusor on the asterisk, type ESC then 'h' and the editor will find and display a tutorial file on lists. If the file includes LIB * TURTLE then ESC+h will make the editor search for a program library file called turtle.p (This was developed long before internet browsers.)

The files can also be read through another preferred editor or web browser, though the links will not work.

A separate unix/linux shell window is needed to compile and run code.

I suspect a similar mode of working would be required for the other languages on our system, including python, perl, bash, tcsh, ruby, java, C, C++, haskell (ghc), and probably several more.

Probably other institutions can provide a different mix of offerings.

I have been looking (briefly) at a few of the graphical programming environments now on offer for young children and I have very serious doubts about what they can achieve, which I'll try to summarise later.

(Compare learning to use a jukebox vs learning to play a musical instrument or read/compose music.)

There'll be a chance to see these tools in action in Prof Sloman's session at the forthcoming Unconference; his session his scheduled for 11:55 in Seminar Room 1a.

aaronsloman's picture

Since the above notice was circulated, I have learnt about the superb Xming program which allows a Windows user to run programs across a network on a linux machine, which could be on a local network or somewhere else in the world. Xming needs to be used with PuTTy, or another SSH client program, switched to allow 'X11 forwarding'. After starting Xming you can log through to a unix or linux machine, and give commands that would normally run on a linux-user's local display. But because linux uses the X window system, which supports remote graphical interaction, you can run the same programs remotely.

For more information, see this tutorial on installing Xming and setting it up gears.aset.psu.edu/hpc/guides/xming/

and you can download Xming (and the Linux fonts package it requires) here www.straightrunning.com/XmingNotes/

You can download PuTTy from www.chiark.greenend.org.uk/~sgtatham/putty/ and SSHWindows from sshwindows.sourceforge.net/download/ or sourceforge.net/projects/sshwindows/files (most people will need the 32-bit option for Windows)

If you are already using cygwin and can log in to a remote linux/unix machine and run graphical programs you don't need any of the above.

I am told that many system administrators running computing systems in schools are reluctant to support linux in any way, which prevents teachers and pupils from gaining experience of an alternative to Windows (or Mac). Since installing Xming and a SSH client on a windows machine is much simpler than setting up a linux service, it may be simplest for teachers in such schools to have access to a remote linux machine, such as we are offering at the School of Computer Science University of Birmingham. With luck other Linux using organisations will also offer this. Perhaps it could be one of the services of the BBC's new Learning Open Lab backstage.bbc.co.uk/openlab/

I have a draft document on an approach to computer education that is very different from what is currently specified in national syllabuses in the UK, here: "Teaching AI and Philosophy at School?" www.cs.bham.ac.uk/~axs/courses/ai-syllabus.pdf A very similar philosophy is defended by Michell Resnick at the MIT Media Lab, web.media.mit.edu/~mres See the papers on his publications page: web.media.mit.edu/~mres/papers.html

This sort of philosophy, which emphasises the importance of learning through playful exploration goes back earlier, including the ideas of Seymour Papert and John Holt, among others. It seems to have got lost in a system that over-emphasises performance measures, league tables, and uniformity/standards, as opposed to deep learning.

Comments and criticisms welcome. My email address is on my web site. www.cs.bham.ac.uk/~axs

tbateson's picture

Thanks very much the article. As a school that is using Linux relatively heavily as a server operating system. I can vouch for the fact that as far the 11-16 syllabus goes it has been tough to break out of the more traditional OS and software packages.

Moodle has been one of our most succesful projects, but the end users have no idea that moodle run on OSS/Linux. But it does not allow me to be more vocal about OSS/Linux to staff and students! I have still not managed to convince our ICT department to stop using MS Publisher very heavily for some of their course materials. I have not given up hope of getting them switched over to Scribus or at least the free version of Serif Page plus!

Over the summer break I intended to further investigate Ulteo OVD http://www.ulteo.com/ which has been developed by the original creator of Mandrake. Ulteo OVD is VDI based solution that allows Linux programs to run on the Windows desktop and Windows programs to run on a Linux Desktop.

For me implementing Linux/OSS in an 11-16 school has been a lonlely path with virtually no support from my own school,LEA or surrounding schools (Or nationally for that matter). I had hoped that this site would act as more vibrant portal for schools working together to make more us of open source technologies. But maybe this is getting off topic now!