ivar t. b. Ørstavik a research project on future elearning systems
Post on 18-Dec-2015
217 Views
Preview:
TRANSCRIPT
Sør-Trøndelag University College - www.hist.no 2
Background
AITeL’s academic profile practice driven & oriented eLearning system development
Ivar’s academic profile practice driven & oriented applied linguistics the art of programming
SIMAS’ academic profile practice driven & oriented the art of programming prototyping
MAS (adaptive services) for eLearning.
Sør-Trøndelag University College - www.hist.no 3
Practice driven and oriented
What do we mean by ‘practice’? recurrent human activities (using/developing technology) research into practices is research into human activities (and technology
use/development) What are AITeL’s practices?
teaching, studying, eLearning, write learning material use and development of ICT systems
Practice oriented? research into eLearning research into system use and development
Practice driven? Our practices (AITeL’s education, eLearning experiences, evaTest?,
theJ) is the laboratory (material) for our research.
Sør-Trøndelag University College - www.hist.no 4
Method & research material
The ‘driving’ practices behind our research the corner stone of our method the bulk of our research material
Example We study ‘use of LMS’. Through practice at AITeL we
experience ‘use of LMS’. We write about our experiences. -> Our LMS-practices is the method by which we gather our material (experiences).
Sør-Trøndelag University College - www.hist.no 5
List of possible research ‘practices’ at AITeL teaching learning eTeaching eLearning system development system use
Our ‘best practices’ at AITeL ‘Use of eLearning
systems’ ‘programming’
(practical system development)
Sør-Trøndelag University College - www.hist.no 6
SIMAS - ‘programming future eLearning systems’
Trying to combine AITeL’s best research practices with my best research resources
Practice driven & oriented driven by the art (i.e. practice) of programming oriented towards the problems (and phenomena)
behind the ‘practice of eLearning system development/programming’
Sør-Trøndelag University College - www.hist.no 7
Problems of eLearning system development System development in general:
1. Business: Service-oriented architecture (SOA)
2. Research: Adaptive services (MAS)
eLearning system development:1. integration
2. individualization
These are the same pair of problems, they’re just viewed from different angles!
Sør-Trøndelag University College - www.hist.no 8
Temporary results
Integration (run-time/use-time) depends on program code adaptivity which is a deep-rooted phenomena within the art/practice of programming Forms of time and chronotope in programming – run-time as
adventure-time? theJ
Individualization and SOA requires a different art of programming (and architecture) which needs to be developed Designing Multi-Agent Systems
using Java as an inter-program language the.hist.no
Sør-Trøndelag University College - www.hist.no 9
My goal for future eLearning systems Prototype a next generation eLearning service
able to adapt to individual users interaction needs at use-time able to integrate with other eLearning systems at run-time
Build on previous results and practices be driven by programming practice orient towards ‘service for learning programming practices’
theJ and the.hist.no: eServices that are used for new and old programmers to learn
programming practices theJSearchEngine.hist.no WhatsWrongWithMyCode.hist.no SuggestCodeImprovements.hist.no theJLanguageProcessor.hist.no
Sør-Trøndelag University College - www.hist.no 11
Outline
1. Interpretation - a core problem when designing / implementing a MAS.
receiver (our main research object) message generation (done by hand)
2. Message syntax – a central tool for interpretation
3. Look at the Java syntax as an inter-program language in a simple case
Sør-Trøndelag University College - www.hist.no 12
Comments on approach
Practical, not theoretical Academic models (AI and linguistics) are interesting,
but not as interesting as how we can realize agent systems -
both in our minds and as programs I code to reveal problems
not to develop solutions I am no computer expert,
just an average programmer / applied linguist.
Sør-Trøndelag University College - www.hist.no 13
The problem of MAS
Different agents / programs run at the same time
They need resources from each other
They collaborate in order to solve complex tasks
Run-time, not design-time
Agent A Agent B
1
Sør-Trøndelag University College - www.hist.no 14
An academic description of MAS
MAS is a collection of agent Proactive:
each has its own tasks and interests Autonomous:
separate entities with their own control Reactive:
service providers for each other possibly co-dependent
Adaptive: they adapt dynamically to service
each other’s specific needs Symbolic:
messages (such as text, source, bytecode) is sent and interpreted by the agents in order to react and adapt to others and proactively use others
1
Agent A Agent B
Sør-Trøndelag University College - www.hist.no 15
A Java solution for MAS problems
MAS is a system of agents where Each agent is a Java program
Proactive Autonomous
exchanging messages interpreting these messages run-
time Reactive Symbolic
dynamically loading/rearranging resources (i.e. classes and objects) to service each other run-time Adaptive
ProgramA ProgramB
??
1
Sør-Trøndelag University College - www.hist.no 16
Syntactic strategies
The message syntax useful to express functionality essential for interpretation
3 message and interpretation syntaxes:1. protocol-based
2. RPC-based
3. Java-based
2
Sør-Trøndelag University College - www.hist.no 17
Syntax tools – protocol-based Interpretation internal tools protocol
syntax provides: a) separate different
categories (data) a) describe functions for
categories (metadata) external tools protocol
syntax provides: b, b2 & c) lexical
connections between message and classes, objects
CP:
a)
b)
c)
b2)Proto
2
Sør-Trøndelag University College - www.hist.no 18
Syntax tools – RPC-based Interpretation internal tools RPC syntax
provides: a) referring by name to
registered procedure a) passing parameters and
return value external tools RPC syntax
provides: b & b2) setting return and
parameter types dynamically (run-time)
c) locate objects by name within run-time register
CP:
a)
b)
c)
b2)RPC
2
Sør-Trøndelag University College - www.hist.no 19
Syntax tools - Java-based Interpretation Internal tools the java syntax
provides: a) method/object reference (RPC) a) control structures, loops, if, etc. a) local variables at different
levels a) nested expressions a) simple math, etc.
External tools the java syntax provides: b) references to classes b2) references to external classes
through lexical means c) references to objects through
lexical means(implict: with known location)
CP:
a)
b)
c)
b2)Java
2
Sør-Trøndelag University College - www.hist.no 20
Java-based Interpretation - how to implement it message received as Java
1. compile Java code2. instantiate a class3. load class into CL-hierarchy4. invoke a method using
reflection What do these reactions
involve? existing functionality and
data of the interpreting program
new functionality and data from the querying program
.java
.class
1)
2)
3) 4)
CP:
2
Sør-Trøndelag University College - www.hist.no 21
Benefits/drawbacks with Java-syntax as inter-program basis Same language within and without
Programmers use and train the same skills in both areas Powerful language
Java is the very best language for expressing program actions – and interaction
Drawback 1: Lacks syntactic support of RPC: object registry and lookup load external classes run-time (RMI)
Drawback 2: known, powerful and complex syntax opens up for loopholes in security
2
Sør-Trøndelag University College - www.hist.no 22
A case for Java MAS
ProgramA: The spellchecker
ProgramB: asks ProgramA to
spellcheck its text according to its own
spellchecking needs and return the result
the way ProgramB wants
ProgramA ProgramB
??
3
Sør-Trøndelag University College - www.hist.no 23
ProgramA and ProgramBProgramA
?
Dictionary- String[] words- boolean spellcheck(String)
- String[] findWords(String)
ProgramB
?
want’s to spellcheck with ProgramAs dicitonary but want to correct for compound words
3
Sør-Trøndelag University College - www.hist.no 24
Programming for interpreted interaction
3
ProgramB
- String[] text.Parser.findWords(String text)Dictionary- boolean spellcheck(String word)
ProgramA
?
Sør-Trøndelag University College - www.hist.no 25
Inter-program message from ProgramB to ProgramA
ProgramB
ProgramA
Dictionary- String[] words- boolean spellcheck(String)
- String[] findWords(String)
code
Pseudokode1. use the other program’s
dictionary to spell check its input
2. split each result into different partial word combinations and spell check each combination
3. send me the result as a String array through a special transfer channel
3
Sør-Trøndelag University College - www.hist.no 26
public String[] doActions(){ java.util.Vector result = new java.util.Vector(); String[] words = text.Parser.findWords("here is the composite text data"); for (int i = 0; i < words.length; i++) { String word = words[i]; if (spellcheck(word)) continue; if (! splitAndCheck(word)) result.add(word); } return (String[])result.toArray(new String[0]); }
public static boolean splitAndCheck(String word) { boolean state = false; if (spellcheck(word)) return true; for (int j = 0; (j < (word.length()-1) && ! state); j++) { String[] split = new String[]{ word.substring(0,j+1), word.substring(j+1)}; if (spellcheck(split[0])) state = splitAndCheck(split[1]); } return state; }
public void sendMe() throws IOException { java.net.Socket s = new java.net.Socket("server.com", 7007); java.io.ObjectOutputStream out = new java.io.ObjectOutputStream( new java.io.BufferedOutputStream(s.getOutputStream())); out.writeObject(doActions()); out.close(); s.close(); }
3 Inter-program message in Java
ProgramB
ProgramA
Java
Sør-Trøndelag University College - www.hist.no 27
public void interpret(){ java.util.Vector result = new java.util.Vector(); String[] words = text.Parser.findWords("here is the composite text data"); for (int i = 0; i < words.length; i++) { String word = words[i]; if (c)spellcheck(word)) continue; if (! b2)MyToolB.splitAndCheck(word)) result.add(word); } b2)MyToolA.returnAction(result.toArray(new String[0]), “server.com", 7007); }
public class MyToolB{ public static boolean splitAndCheck(String word) { boolean state = false; if (c)spellcheck(word)) return true; for (int j = 0; (j < (word.length()-1) && ! state); j++) { String[] split = new String[]{ word.substring(0,j+1), word.substring(j+1)}; if (c)spellcheck(split[0])) state = splitAndCheck(split[1]); } return state; }}
public class MyToolA [ public static void returnAction(Object o, String server, int port) throws IOException { java.net.Socket s = new java.net.Socket(server, port); java.io.ObjectOutputStream out = new java.io.ObjectOutputStream( new java.io.BufferedOutputStream(s.getOutputStream())); out.writeObject(interpret()); out.close(); s.close(); }}
3
CP:
a)
b)
c)
b2)Java
Sør-Trøndelag University College - www.hist.no 28
public void interpret(){ java.util.Vector result = new java.util.Vector(); String[] words = text.Parser.findWords("here is the composite text data"); for (int i = 0; i < words.length; i++) { String word = words[i]; if (the spellcheck(word)) continue; if (! http://on.any.net/MyToolB.splitAndCheck(word)) result.add(word); } http://on.any.net/MyToolA.returnAction(
result.toArray(new String[0]), “server.com", 7007); }
public class MyToolB{ public static boolean splitAndCheck(String word) { boolean state = false; if (the spellcheck(word)) return true; for (int j = 0; (j < (word.length()-1) && ! state); j++) { String[] split = new String[]{ word.substring(0,j+1), word.substring(j+1)}; if (the spellcheck(split[0])) state = splitAndCheck(split[1]); } return state; }}
3
CP:
a)
b)
c)
b2)Java
Sør-Trøndelag University College - www.hist.no 29
ProgramA
CP:
a)
b)
c)
b2)
ProgramB
java.util.Vector result = new java.util.Vector();String[] words = text.Parser.findWords(
"here is the compound text data");for (int i = 0; i < words.length; i++) { String word = words[i]; if (the spellcheck(word)) continue; if (! http://on.the.net/MyToolB.splitAndCheck(word)) result.add(word);}http://on.the.net/MyToolA.returnAction(
result.toArray(new String[0]), “server.com", 7007);
3
Sør-Trøndelag University College - www.hist.no 30
theJ-Demonstration
ProgramA and ProgramB running in theJ java -jar agentcore2.4.jar http://the.hist.no/ivar.orstavik@hist.no/ ProgramA java -jar agentcore2.4.jar http://the.hist.no/ivar.orstavik@hist.no/ ProgramB
til ProgramB: the useAnothersDictionary("i dette språket er det vanlig med sammensatte ord");
3
Sør-Trøndelag University College - www.hist.no 31
Summary
Advanced program collaboration benefits greatly from an advanced inter-program language
the Java syntax is a great alternative but it could benefit from:
run-time object/method lookupa more net-oriented type morphology
3
Sør-Trøndelag University College - www.hist.no 32
theJ experiment
theJ is an ongoing research experiment for implementing JAVA MAS with a Java dialect as inter-program language
open for the public: http://the.hist.no
Sør-Trøndelag University College - www.hist.no 35
Motivation for a run-time solution
ProgramA has ‘closed source’ proprietary source too complex, too demanding
ProgramA is run-time situated ProgramA has functionality or data that are available
and situated in one run-time situation ProgramA is a vital service that cannot be shut down
ProgramB cannot rewrite ProgramA, but ProgramA and ProgramB needs to collaborate run-time.
3
Sør-Trøndelag University College - www.hist.no 36
public String[] doActions(){ java.util.Vector result = new java.util.Vector(); String[] words = text.Parser.findWords("here is the composite text data"); for (int i = 0; i < words.length; i++) { String word = words[i]; if (spellcheck(word)) continue; if (! splitAndCheck(word)) result.add(word); } return (String[])result.toArray(new String[0]); }
public static boolean splitAndCheck(String word) { boolean state = false; if (spellcheck(word)) return true; for (int j = 0; (j < (word.length()-1) && ! state); j++) { String[] split = new String[]{ word.substring(0,j+1), word.substring(j+1)}; if (spellcheck(split[0])) state = splitAndCheck(split[1]); } return state; } public void sendMe() throws IOException { java.net.Socket s = new java.net.Socket("server.com", 7007); java.io.ObjectOutputStream out = new java.io.ObjectOutputStream( new java.io.BufferedOutputStream(s.getOutputStream())); out.writeObject(doActions()); out.close(); s.close(); }
3
Sør-Trøndelag University College - www.hist.no 37
ProgramA
a dictionary object with a list of words
a spellcheck method a static findWord
method <SOURCE OF
DICTIONARY>
ProgramA
?
Dictionary- String[] words- boolean spellcheck(String)
- String[] findWords(String)
3
Sør-Trøndelag University College - www.hist.no 38
ProgramB
processes text needs to spell check its
text through another agent program
wants to extend the spellchecking process to include spellchecking of compound words
needs to define how the result should be delivered
3
ProgramB
?
want’s to spellcheck with ProgramAs dicitonary but want to correct for compound words
top related