Teaching "Thinky" Programming (original) (raw)
Computing At School
School of Computer Science-- The University of Birmingham
In collaboration with The University of Sussex: Centre for Research in Cognitive Science
This is part of theFree Poplog Portal
All the tools required to run the examples below are
AVAILABLE FOR USE FREE OF CHARGE, WITH OPEN SOURCE
in Linux or in VirtualBox on Windows or Apple OSX,
as described inhttp://www.cs.bham.ac.uk/research/projects/poplog/ova/
Enquiries to A.Sloman@cs.bham.ac.uk
(This is all free and open source software, thanks to the Universities of Sussex and Birmingham.)
Link to this web site:
http://www.cs.bham.ac.uk/research/projects/poplog/examples/thinky.html
Many examples of thinky (and some other) types of programming can be found in
http://www.cs.bham.ac.uk/research/projects/poplog/examples/examples.html
Video tutorials on some of this material:
http://www.cs.bham.ac.uk/research/projects/poplog/cas-ai/video-tutorials.html
Introduction
The idea of "Thinky" programming is introduced on thisweb page, which also introduces several other types of programming, including numbery, bumpy, gadgety, arty, and exploratory programming. (The categories are not all mutually exclusive.)
The key features of "thinky" programming includes getting a computer to perform some cognitive task that is similar to or inspired by things humans or other animals can do, such as seeing, planning, playing a game, or using a natural language to communicate, such as English of Urdu. This has typically been the domain of research in AI and cognitive science, and is very difficult to do well enough to match human and animal competences. But it is possible to introduce some of the ideas and techniques by focusing on simplified versions of those tasks, samples of which are provided here.
How to simplify the introductory examples
In general developing working "thinky" programming can be very difficult partly because of the need to provide the program with access to whatever it is thinking about, e.g. giving it eyes and manipulators, if it is thinking about physical objects that can be moved around, or giving it a speaking voice and microphone if it is to engage in conversational interaction, as well as some sort of body to which people can relate when interacting with it.
But AI researchers and teachers have found ways of simplifying the tasks for beginner students so as to make introductory teaching feasible.
The simplification can include any or all of the following
- Choosing an artificially simple type of behaviour or interaction, e.g. a simple chat-bot that does not really understand its inputs and outputs, or a program that interacts with a simple model of some world rather than the complex external reality that a future robot might have to interact with.
- Providing library programs that perform some parts of the task or provide models of the world that the learner's program is to interact with or reason about. For example, a very simple planning program could use simulated actions in a simplified world modelled by a teacher's program; and a simple chatbot exercise might be based on a program whose architecture is provided by the teacher so that beginner students need only focus on the rules to be used by the chatbot.
- Instead of requiring the learner to do everything using a general purpose programming language, and using standard primitive data-types (e.g. numbers, strings, arrays, records, etc.) the teacher can provide a problem-specific higher level language allowing the learner to think about the problem using a language suited to the problem rather than having to think all the time about the syntax of the base programming language.
This requires a programming language that is extendable by defining new syntactic constructs suited to particular applications. Many languages allow macros to be defined that extend the language. Some, likePop-11, allow more powerful extensions to the language, introducing constructs that would not have been expressible in the original language. A programming language that supports creative teachers in providing specific learning environments could have a core subset that is general purpose as well as features that allow the problem specific extensions to be provided in sharable libraries. This technique has been used for many years at Sussex university, at Birmingham University and some other universities, and also some industrial/commercial organisations using the Poplog system.Initially this may be daunting for teachers, but if different teachers build useful and interesting learning "packages" of this sort, all using the same base programming language, then they can share their work with other teachers, and some of the simpler packages, e.g. a library defining a microworld, can be combined with other packages, e.g. a library with resources for natural language processing, to allow students to work on projects that build in the combination, e.g. designing a program that interacts in (a subset of) natural language, conversing about the domain.
Example microworlds
- Simple chatbots
- A micro-language supporting actions performed in a simple puzzle world, e.g. the world of a 'river crossing puzzle'
- A combination of the previous two to provide a conversational program that can talk about the river world, obeying commands and answering questions
- A variant of the above might be a simulated conversational vending machine (some students like to produce a "stroppy" variant of such a machine.
- A microworld in which simple actions can be performed that change locations and relationships of objects, and in which goals can be achieved that require the program to plan combinations of actions to achieve a new state.
- A microworld using an 'agent simulation package' that allows students to build models of interacting agents, e.g. a sheepdog manipulated by a mouse and sheep that try to move away when the dog approaches.
- A variant of that in which the dog works out how to steer one sheep, then later several sheep, into a pen.
- A microworld in which some individuals have to be guarded against predators or other dangers by a nursemaid.
- Many other simulations using microworlds supported by teacher-created libraries.
Required resources
Not all programming languages will be equally good at supporting such diverse forms of teaching. Some of the requirements for languages and programming environments to enable creative teachers to inspire their students were discussed in this paper:
Beginners need powerful systems, by Aaron Sloman, in New horizons in educational computing, Ed. Masoud Yazdani, Ellis Horwood Series In Artificial Intelligence, pp. 220--234, 1984, http://www.cs.bham.ac.uk/research/projects/cogaff/81-95.html#45,
Online videos
A draft incomplete set of videos introducing some of these examples and the tools required to implement them can be found here.Additional videos will be added, illustrating more techniques and more types of learning.
Suggestions for improvement are welcome.
This file maintained by:
Aaron Sloman
Installed: 1 May 2012
Last Updated: 1 May 2012; 10 Jul 2015 (format)