Ivar T. B. Ørstavik

38
Ivar T. B. Ørstavik A research project on future eLearning systems

description

A research project on future eLearning systems. Ivar T. B. Ørstavik. AITeL’s academic profile practice driven & oriented eLearning system development. Ivar’s academic profile practice driven & oriented applied linguistics the art of programming. Background. SIMAS’ academic profile - PowerPoint PPT Presentation

Transcript of Ivar T. B. Ørstavik

Page 1: Ivar T. B. Ørstavik

Ivar T. B. Ørstavik

A research projecton

future eLearning systems

Page 2: Ivar T. B. Ørstavik

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.

Page 3: Ivar T. B. Ørstavik

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.

Page 4: Ivar T. B. Ørstavik

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).

Page 5: Ivar T. B. Ørstavik

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)

Page 6: Ivar T. B. Ørstavik

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’

Page 7: Ivar T. B. Ørstavik

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!

Page 8: Ivar T. B. Ørstavik

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

Page 9: Ivar T. B. Ørstavik

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

Page 10: Ivar T. B. Ørstavik

Ivar T. B. Ørstavik

Designing Multi Agent Systems

using Java as an inter-program language

Page 11: Ivar T. B. Ørstavik

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

Page 12: Ivar T. B. Ørstavik

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.

Page 13: Ivar T. B. Ørstavik

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

Page 14: Ivar T. B. Ørstavik

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

Page 15: Ivar T. B. Ørstavik

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

Page 16: Ivar T. B. Ørstavik

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

Page 17: Ivar T. B. Ørstavik

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

Page 18: Ivar T. B. Ørstavik

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

Page 19: Ivar T. B. Ørstavik

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

Page 20: Ivar T. B. Ørstavik

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

Page 21: Ivar T. B. Ørstavik

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

Page 22: Ivar T. B. Ørstavik

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

Page 23: Ivar T. B. Ørstavik

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

Page 24: Ivar T. B. Ørstavik

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

?

Page 25: Ivar T. B. Ørstavik

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

Page 26: Ivar T. B. Ørstavik

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

Page 27: Ivar T. B. Ørstavik

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

Page 28: Ivar T. B. Ørstavik

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

Page 29: Ivar T. B. Ørstavik

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

Page 30: Ivar T. B. Ørstavik

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/[email protected]/ ProgramA java -jar agentcore2.4.jar http://the.hist.no/[email protected]/ ProgramB

til ProgramB: the useAnothersDictionary("i dette språket er det vanlig med sammensatte ord");

3

Page 31: Ivar T. B. Ørstavik

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

Page 32: Ivar T. B. Ørstavik

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

Page 33: Ivar T. B. Ørstavik

Sør-Trøndelag University College - www.hist.no 33

Page 34: Ivar T. B. Ørstavik

Sør-Trøndelag University College - www.hist.no 34

Page 35: Ivar T. B. Ørstavik

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

Page 36: Ivar T. B. Ørstavik

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

Page 37: Ivar T. B. Ørstavik

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

Page 38: Ivar T. B. Ørstavik

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