380 likes | 562 Views
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
E N D
A research projectonfuture 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 • practice driven & oriented • the art of programming • prototyping • MAS (adaptive services) • for eLearning. Sør-Trøndelag University College - www.hist.no
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
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
teaching learning eTeaching eLearning system development system use Our ‘best practices’ at AITeL ‘Use of eLearning systems’ ‘programming’ (practical system development) List of possible research ‘practices’ at AITeL Sør-Trøndelag University College - www.hist.no
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
Problems of eLearning system development • System development in general: • Business: Service-oriented architecture (SOA) • Research: Adaptive services (MAS) • eLearning system development: • integration • individualization • These are the same pair of problems, they’re just viewed from different angles! Sør-Trøndelag University College - www.hist.no
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
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
Designing Multi Agent Systems using Java as an inter-program language Ivar T. B. Ørstavik
Outline • Interpretation - a core problem when designing / implementing a MAS. • receiver (our main research object) • message generation (done by hand) • Message syntax – a central tool for interpretation • Look at the Java syntax as an inter-program language in a simple case Sør-Trøndelag University College - www.hist.no
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
The problem of MAS 1 • 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 Sør-Trøndelag University College - www.hist.no
An academic description of MAS 1 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 Sør-Trøndelag University College - www.hist.no
A Java solution for MAS problems 1 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 Sør-Trøndelag University College - www.hist.no
Syntactic strategies 2 • The message syntax • useful to express functionality • essential for interpretation • 3 message and interpretation syntaxes: • protocol-based • RPC-based • Java-based Sør-Trøndelag University College - www.hist.no
Syntax tools – protocol-based Interpretation 2 • 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 Sør-Trøndelag University College - www.hist.no
Syntax tools – RPC-based Interpretation 2 • 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 Sør-Trøndelag University College - www.hist.no
Syntax tools - Java-based Interpretation 2 • 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) Sør-Trøndelag University College - www.hist.no
Java-based Interpretation - how to implement it 2 • message received as Java • compile Java code • instantiate a class • load class into CL-hierarchy • 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 Sør-Trøndelag University College - www.hist.no
Benefits/drawbacks with Java-syntax as inter-program basis 2 • 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 Sør-Trøndelag University College - www.hist.no
A case for Java MAS 3 • ProgramA: • The spellchecker • ProgramB: • asks ProgramA to spellcheck its text • according to its own spellchecking needs • and return the result the way ProgramB wants Sør-Trøndelag University College - www.hist.no
ProgramA and ProgramB 3 Sør-Trøndelag University College - www.hist.no
Programming for interpreted interaction 3 Sør-Trøndelag University College - www.hist.no
Inter-program message from ProgramB to ProgramA 3 Pseudokode • use the other program’s dictionary to spell check its input • split each result into different partial word combinations and spell check each combination • send me the result as a String array through a special transfer channel Sør-Trøndelag University College - www.hist.no
Inter-program message in Java 3 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)) returntrue; 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(); } Sør-Trøndelag University College - www.hist.no
3 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)) returntrue; 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(); } } Sør-Trøndelag University College - www.hist.no
3 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)) returntrue; 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; } } Sør-Trøndelag University College - www.hist.no
3 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); Sør-Trøndelag University College - www.hist.no
theJ-Demonstration 3 • 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"); Sør-Trøndelag University College - www.hist.no
Summary 3 • 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 lookup • a more net-oriented type morphology Sør-Trøndelag University College - www.hist.no
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
Motivation for a run-time solution 3 • 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. Sør-Trøndelag University College - www.hist.no
3 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)) returntrue; 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(); } Sør-Trøndelag University College - www.hist.no
ProgramA 3 • a dictionary object with a list of words • a spellcheck method • a static findWord method • <SOURCE OF DICTIONARY> Sør-Trøndelag University College - www.hist.no
ProgramB 3 • 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 Sør-Trøndelag University College - www.hist.no