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 the
Free 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 in
http://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.)
The idea of "Thinky" programming is introduced on this web 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.
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
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.
- 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, like Pop-11, allow more powerful extensions to the language, introducing constructs that would not have been expressible in the original language.
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.
Beginners need powerful systems, by Aaron Sloman, inNew 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,
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.
This file maintained by:
Aaron Sloman
Installed: 1 May 2012
Last Updated: 1 May 2012; 10 Jul 2015 (format)