2005年06月25日

1.刚参加完高校咨询会,大部分家长和学生都盲目的收集完所有高校的宣传资料然后走人,绝大部分学生都茫然不知该选择什么,专业、方向和学校。没有人能说清楚自己对什么感兴趣,家长只关心分数线和就业率,无数人就这样近乎随机的选择了未来,是阿,我们在对世界和自己都一无所知的时候却必须要做这样的影响一生的决定。

2.见到了太多的学生估计自己只能考400分甚至只有300多分,也就是说每门课都不及格,可是他们一样可以进入大学,呵呵愿意交钱就可以。

3.又开始疯狂的玩游戏,搞怪碰碰球。时间如流水一样飞逝~

4.终于keso和王健硕都提到了芙蓉jj,呵呵

2005年06月15日

今天继续补课

1终于看完了王建硕的(becky抓回来的近期的),很喜欢他的很多想法。然后是和菜头,呵呵,开心的文字。

2泡网转贴了一篇blog50牛人,只看到前30,没有梅子,下面跟贴有人质疑。

3学校又多了一堆事情(烦恼琐碎而无趣),论文仍然没有修改。呵呵,然而还是如释重负的开心,我知道我将要结束一个包袱,将要开始做自己爱做的事。可是将要到何时呢?

^_^

2005年06月14日

1.今天下午一直在补课,这么多天没有看一篇blog,今天一下午几乎看了个遍。一边看,一边增加新的blog的RSS到我的becky中。

2.很喜欢刘韧写blog的方式,呵呵,现在的1,2,3,4就是跟他学的。自以为很适合用来写blog

3.有两篇文章很喜欢,全部来自王建硕,易用性的三原则中国的互联网现状究竟相当于美国的哪一年?后者,王又加了很多对此相关的评论,一一看了,包括keso的,很多和他的观点相左,他们各自的理由和立场我都能够理解,但是印象最深的还是王的文章,忽然就觉得,王其实是个文字很不错的人,立刻就订阅了他的Rss

4.看到有文章提到土豆,以前也接触过这个词,这次就去仔细看了看,呵呵,很喜欢,于是申请了帐号,呵呵,现在在各处申请的帐号真是太多了,自己都不太记得了,于是在搜藏夹里增加了一个目录专门放自己到处申请的blog、帐号。

5.希望从今天开始逐步恢复正常生活,包括这里的blog ^_^

2005年05月06日

  前几天加了donews掌门人(这个词正在被用滥,但是真想不到其他合适的词了 呵呵)刘韧的blog。今天翻看帖子看到这篇"Donews Blog的开发、营运中的经验教训"。能够清楚地明白,donews的人正在为改善服务性能而努力。立时就对donews充满信心。

  从这件事想到2点:1、沟通相当重要2、blog使得沟通更加容易

2005年05月02日

唉~ :(

2005年04月28日
原义光
浏览次数: 617

 

SCORM序列与导航概述(SN)

序列是LMS所应该具备的功能,所谓序列就是对内容对象(SCOs或Assets)的发送次序进行排列,而且能够允许SCO传递导航请求,为学习者提供导航控制能力。包含以下几个主题:

  1. 序列的概念和技术(如学习活动,活动树,簇);
  2. 序列定义模型(如能被应用在活动上的序列规则的详细内容和需求);
  3. 序列行为模型(如LMS所采取行为的描述,该行为由相关的序列规则、学习尝试以及学习内容决定的);
  4. 导航控制和需求;
  5. 导航数据模型;

使用序列和导航在内容和LMS间通讯是非常容易的,如在运行时基于学习者的选择以及学习进展上提供学习内容。使用序列与导航机制,当学习内容递送的学习者面前时, LMS就能够跟踪学习者的学习进展和学习成绩。

SCORM序列概述

SCORM序列的部分是基于IMS的简单序列(SS)规范所定义的。SCORM SN定义了如何在SCORM环境中应用和扩展IMS SS规范。它定义了一些必须的行为以及在运行时一个符合SCORM结构的LMS必须处理的序列信息。更明确的说,它描述了一个学习活动树中的学习流程和学习分支,这些分支与流程是根据学习者与内容对象互动的结果以及内容作者的序列规则。

SCORM没有规定在运行时LMS何时、何地、怎样创建活动树,以及在内部怎样描绘和管理活动树。

SCORM序列依赖:一个定义好的学习活动结构;活动树;定义好的序列策略,序列定义模型;SCORM序列行为;

SCORM导航概述

导航表现为存在的用户接口可以触发导航事件。导航可以由LMS提供,也可以由内容对象自行提供。当一个学习者触发了(导航)事件,LMS将事件转换为导航请求,处理请求,然后或许将下一个学习活动发送给学习者。

SCORM没有规定导航所使用的用户界面(UI)。

序列概念

内容结构和内容树

使用图能清晰表示内容结构,它能展示一次学习尝试中的内容层次关系。在IMS SS规范中定义了一个名为活动树的简单概念,它描述了学习活动的结构。活动树允许用SCORM序列和导航模型来描述信息和处理请求。

活动树如下图所示:

SCORM没有规定LMS必须用树结构来描绘活动树,以及何时、如何建立活动树。所以的实现都是由LMS自行决定。

SCORM CAM为学习内容的组织定义了一个层次结构。在内容包中,内容组织是由单个的<organization>来表示的。每一个在层次结构中的条目(item)都表示为一个有结构的学习单位。条目(item)能够嵌套任意的深度,而且可以代表一个学习分类,例如:一个课程、一个模块、一堂课等等。

因为SCORM序列是定义在有结构的学习活动上的,这意味着必须为活动树提供一个开始点。内容组织(<organization>元素)是活动树的根,每一个<item>相应为一个活动。序列定义模型元素能被应用于item元素上,为之定义一个在运行时的序列动作。

内容组织和活动树之间的关系可以用以下几点描述:

  1. 一个活动树描绘了一个概念上的内容结构;
  2. 一个符合SCORM的LMS能够将内容组织转换成活动树;
  3. 当一个学习者与活动树进行交互,则LMS必须评估序列请求以及跟踪学习者的信息来决定学习活动的序列。也就是说,学习活动的序列由内容开发者以及学习者与内容对象交互结果两者所决定的。

 簇(Cluster)

Cluster专指那些含有子活动的的活动。

一个Cluster包含单亲活动和它的直接子活动,不包含后代(孙代和孙代以后)的活动。所以一个叶子活动不会是一个簇。

簇在活动树里面是一个基本建构快,而且很多序列定义模型都应用于簇上。在簇上,它的父活动将包含有关序列规则的信息。

在内容包中使用子清单

定义在内容结构中的内容组织能够包含一个(子)清单。一个<item>元素能够在其作用域内使用标识符来引用一个<resource>元素或一个(子)<manifest>元素。

当处理一个叶子活动引用了(子)清单的时候,它的内容组织结构与活动的树转换需要做更多的事。引用(子)清单的叶子<item>必须被(子)清单中的内容组织所替换(默认是子清单中的<organization>)。

如下图所示:

学习活动

一个学习活动可以为学习者提供一个学习资源,或许它还包含几个静态的子活动。如下图:

子活动可以包含子活动,而且这种嵌套任意层。不包含子活动的活动称为叶子活动,叶子活动总有一个内容对象与之关联。LMS总是根据学习者先前的学习活动、学习目的以及内容作者定义的序列信息,在运行时确定学习活动的序列。

尝试(Attempts)

尝试是指完成一次学习活动所做的努力,在尝试期间,没有达到或者达到了一些学习的目标。在给定的时间内,活动树中有且仅有一个叶子活动能被尝试。当一个活动被确认后,LMS将运行学习活动,一次学习尝试开始,当活动结束的时候,LMS会根据序列信息来确定下一个学习活动。

作为在一个学习活动上的一个尝试,或通过外部的管理行为,一个学习活动的跟踪状态能被改变。当一个学习活动的跟踪状态改变了,活动的祖先活动的跟踪状态也可能受到影响——这称为Rollup。

开始和结束一个序列会话

一个序列会话从活动树的根活动开始,直到学习尝试结束。SCORM规范仅仅定义了哪些导航请求能开始一个序列会话,而没有规定何时以及怎样触发这些导航请求。一般上,一些LMS会将导航请求识别为系统事件,例如登录、开始课程等等。

活动状态跟踪

SCORM序列动作依赖于序列跟踪状态模型中的值,根据该值来控制序列动作。对于学习者每一个学习活动上的尝试而言,学习活动将会和一个跟踪状态数据所关联。学习者和内容对象进行交互,可能会影响到与该学习内容对象相关联的那个学习活动的跟踪数据。跟踪数据被用于在处理不同的序列时影响他们的动作。

延缓和恢复活动

在一个学习活动上的尝试可以被延缓,并且在将来的某一时刻恢复。对于一个学习活动而言,恢复一个被延缓的活动不能记为新的一次尝试。当学习者延缓一个学习尝试时,LMS需要保存该活动的最后状态,并且结束学习尝试,当学习者在某一时刻再度恢复该学习尝试时,LMS必须同时将上次所保存学习活动的状态恢复,以保证学习者继续上次的学习尝试。

数据持久

SCORM和IMS SS都没有规定怎样使数据(例如序列信息和跟踪状态数据)持久保存,所以数据持久的策略由LMS自行定义。

学习目标

学习目标和学习活动是互相分离的。SCORM没有限制学习目标与学习活动如何关联,也没有定义内容对象如何使用学习目标。SCORM没有假定学习目标的解释(例如由资格,掌握了,简单了解等等)。

学习活动由一个以上的学习目标与之关联。默认一个活动的学习目标状态信息位于活动本身,为了共享目标状态信息,多个活动能引用多个全局的共享目标。在LMS中全局共享目标可以被单个活动树所关联,也可以被多个活动树所关联。

序列定义模型

概述

SCORM数列定义模型定义了一些元素的集合,内容开发者使用该集合可以定义特定的序列动作。模型元素能被应用于在活动树上下文中的学习活动。每个元素都有一个默认值。序列定义模型元素仅能影响SCORM序列行为。

序列控制模式

Sequencing Control Choice

Sequencing Control Choice Exit

Sequencing Control Flow

Sequencing Control Forward Only

Use Current Attempt Objective Information

Use Current Attempt Progress Information

强制选择控制

Constrain Choice

Prevent Activation

 序列规则描述

Condition Combination

Rule Conditions

Rule Condition Referenced Objective

Rule Condition Measure Threshold

Rule Condition Operator

       Rule Action

界限条件

Attempt Limits

Attempt Absolute Duration

辅助资源

 Rollup规则描述

Condition Combination

Rollup Condition

Rollup Condition Operator

Rollup Child Activity Set

 Rollup Action

Rollup控制

Rollup Objective Satisfied

Rollup Objective Measure

Rollup Progress Completion

……

序列行为

IMS SS规范包含了两种定义在活动树中每一个活动上的数据模型,一是维护一个活动的状态的数据模型,二是当一个处理一个活动的时候内容开发者所定义的序列意图的数据模型。序列处理利用了三个模型的信息,三个模型分别是:

  1. 跟踪模型:当学习者与内容对象互相交互时所捕捉的一些相关信息,这是一个动态运行时数据模型。
  2. 活动状态模型:管理活动树中的每一个活动的序列状态以及活动树的全局状态。也是一个运行时动态数据模型。
  3. 序列定义模型:描述了不同的序列处理利用和解析跟踪模型信息来对活动进行排序,以产生定义的序列动作。

序列行为互相之间是独立的,每一个序列行为可以由其他序列行为和子行为组成,但是不能直接依赖其他的行为,就是说一个序列行为不能直接调用其他的序列行为。

跟踪模型

为了对学习活动进行有条件的序列化,学习者与发布的内容对象的交互信息必须被维护和管理。IMS SS规范描述了必须对活动树中的每一个活动进行维护。描述这些跟踪信息的的数据模型元素称为跟踪模型。SCORM没有规定表现和管理跟踪模型是如何实现的。

一个跟踪模型是一个动态序列状态信息的集合,它和活动树中每个活动以及学习者相关联。SCORM定义了所有跟踪模型元素的默认值。在一次学习体验中,根据当前的学习内容对象与学习者交互的情况,跟踪模型将被更新。

SCORM运行时数据模型被用来作为学习者和内容对象交互通信的基础。一些SCORM运行时环境数据模型元素和跟踪模型的数据元素相符和。

下图显示了活动树、特定的活动的跟踪信息、活动相关联的内容对象以及运行时内容对象集合间的概念上的关系。

所有的活动都关联相关的跟踪状态信息,这些信息与不同的学习者相关联。如果某些活动关联了SCO,则他们会有通信的联系,LMS会通过与SCO通信来管理跟踪模型。而对于Assets而言,由于没有通信的关系,所以一些预定义信息来帮助LMS管理Assets相关联活动的跟踪信息。

改变一个活动的跟踪模型元素的值也许会影响到其父活动的跟踪模型元素的值。由于子活动的跟踪状态改变而导致重新评估本身跟踪状态所做的处理称为Rollup。

LMS必须维护每一个定义好的活动的跟踪状态,而对于SCO来说,LMS必须能将SCO的运行时数据映射到适当的跟踪模型元素上去。

一个跟踪模型定义了下列跟踪信息的集合:

  1. Object Progress Information:描述了学习者的学习进展所关联的学习目标。
  2. Progress Information:描述了学习者在一个活动上的学习进展。这个信息描述的是在一个学习活动上的所有学习尝试(Attempt)所累计的学习进展。
  3. Attempt Progress Information:描述了学习者在一个活动上的学习进展。该信息描述了一个学习活动上每一个学习尝试。
  4. Activity State Infotmation:描述了每一个学习者在每一个学习树上的一个学习活动的状态。

 Object Progress Information

 //活动状态模型

 //序列定义模型

SCORM导航模型

LMS会为提供一个用户接口(UI)装置集,用户利用该集合可以发送导航请求。内容开发者可以指定LMS为用户提供哪些接口集合。用户接口装置的外观呈现,风格以及放置位置等内容,SCORM并没有规定。

触发导航请求

SCORM导航模型仅仅应用与学习活动间的导航。SCORM导航模型不会应用于SCO中的多个页面间的导航,这是由SCO来完成的。

SCORM定义了一个能被触发的导航事件集合,这些事件可以由LMS和内容对象提供的用户接口装置触发,也可以由SCO直接触发。

导航事件:

  •     Start
  •     Resume All
  •     Continue
  •     Previous
  •     Choose
  •     Abandon
  •     Abandon All
  •     Suspend All
  •     Unqualified Exit
  •     Exit All

处理导航请求

当学习者或内容对象通过某种机制触发了一个导航请求,LMS会处理相应的导航请求,并调用序列系统。导航处理的结果总是下列几种中的一种:

如果导航请求是在活动树中结束当前的学习尝试,则LMS需要处理Exit All导航请求。

忽略导航请求

处理导航请求

  •     确定一个学习活动
  •     没有确定学习活动
  •     在处理中发生异常

//通过导航来结束一个内容对象

原义光
浏览次数: 886

 

运行时环境概述

SCORM运行时环境模型定义了:发布内容对象、在LMSs和SCOs之间建立通信机制以及根据LMSs和SCOs之间的通信信息来管理跟踪信息。在SCORM中,内容对象有两种:
 ● 可共享内容对象(SCOs), SCOs可以在运行时与LMS通信;
 ● 素材(Assets),Assets在运行时不与LMS通信;
运行时环境主要处理:
 ● 将内容对象传递到学习者的浏览器中(例如发布学习内容);
 ● 在需要时,内容对象如何与LMS互相通信;
 ● 内容对象的什么信息应该被跟踪以及LMS如何管理这些信息;

SCORM的目的是学习资源可以在不同的学习管理系统中重复使用和具有互操作性。要使这些成为可能,必须有公共的方法启动学习资源、公共的机制使学习资源和LMS进行交流,并要有预定义的语言和词汇形成这种交流的基础。实时运行环境(Run-Time Environment)就提供了这种公共机制。实时运行环境有三个方面: 运行(Launch)、应用编程接口(API)和数据模型(Data Model)。

 ● 运行(Launch)处理为LMSs定义了一个通用的方法来启动内容对象。在SCORM中定义了两种内容对象:Assests和SCOs。运行处理确立了在运行的内容对象与LMS之间的通信机制,这种通讯通过公共的API进行标准化。

 ● API是内容对象与LMS之间传送的信息的一种通信机制,使用API可以开始、结束、获取、存储数据等动作。

 ● 数据模型(Data Model)主要描述了在SCO与LMS之间传送信息数据的模型,如SCO的跟踪信息,SCO的完成状态、一次测试的成绩等数据。在学习者会话中,LMS必须维护来自SCO数据模型的状态信息。而SCO需要利用这些预先定义的信息,以便在不同的LMS中重复使用。

管理运行时环境

当学习者与内容对象交互(学习尝试)时,LMS需要处理学习者的导航请求。当LMS确定一个学习活动请求对学习者时有效的时候(一个学习活动与一个内容对象相关联),LMS才会将内容对象发布到学习者面前。

运行时环境临时模型

当学习者与内容对象交互的时候,一个与内容对象(Asset或SCO)相关联的学习活动(Activity)被确定,并且被传送到学习者的浏览器中。在学习者的一次学习尝试中,有几个关键的概念需要明确定义:

 ● Learner Attempt(学习尝试):
使用内容对象来跟踪学习者一次学习活动的努力与满意情况。一次学习尝试可以跨越一个或多个学习者的课程,并且在课程间可能被悬挂(暂停学习)。
 ● Learner Session(学习会话):
指在学习者访问一个内容对象时的一个不间断的时间段。
 ● Communication Session(通信会话):
指在一个内容对象(如:SCO)与一个应用程序接口之间的一个活动连接。
 ● Login Session(登录会话):
指学习者开始一个会话(登录),直到学习者终止会话(登出)之间的时间段。

对于Asset来说,RTE仅由独立的学习尝试和学习会话组成,每个发布的Asset的学习尝试都有相应的学习会话。当一个学习活动被确认,并且传送到学习者面前,学习尝试就开始了。在学习尝试期间,学习者与内容对象(SCO或Asset)交互。当学习内容被传送到学习者浏览器内并开始使用时,学习会话开始了。当运行的内容对象时SCO时,SCO会与LMS进行初始化通信,这样通信会话就开始了。当SCO与LMS终止通信时,通信会话就结束了。当SCO处于暂停状态离开(学习者未通过SCO)或SCO处于正常状态离开(学习者通过SCO要求离开学习尝试)时,学习者会话结束。对于SCO来说,学习者在正常状态下结束学习会话时,学习尝试也相应结束。对于Asset来说,学习者结束Asset时,学习尝试也结束了。

LMS必须定义一些运行时数据集合,在Learner Attempt期间,SCO可以使用该集合与LMS互相通信。对于一个SCO来讲,当Learner Attempt开始时,LMS必须建立和初始化新的运行时数据集合,以供SCO访问和使用。SCORM不规定必须完全重新建立一个运行时数据集合,但是对于SCO来说,它在访问和使用该数据集合的时候,感觉象在使用一个新的运行时数据集合。
LMS可以选择保存运行时数据集合,以供其他地方使用,例如报表、审核、统计等。LMS也可以选择不保存先前的学习尝试的运行时数据。只有在学习尝试被暂停的情况下,LMS必须保存该学习尝试的运行时数据集合,以便该学习尝试恢复运行时使用。注意,当学习尝试被暂停,Learner Session和Learner Attempt都被结束了,因此当下一次Learner Session开始时,将会产生新的运行时数据集合,因此LMS需要将上次保存的运行时数据集合填充到新的运行时数据集合中去。

具有单个Learner Session的Learner Attempt。

具有多个Learner Session的Learner Attempt。在这里Learner Session被暂停多次,而Learner Attempt随后被重新继续,直到Learner Session于正常状态下被终止。

多个Learner Attempt和多个Learner Session。

应用程序接口(API)

概述

使用一个公共的API是为了提供一个标准的方法,使用该方法可以使的SCOs和LMSs之间互相通信,以达到互动性与重用性。怎样执行API进行通信是SCO开发者的事,同样服务器端的LMS怎样提供一个API实例以供SCO使用也不是由SCORM规定的,具体实现细节由LMS厂商决定。

由上图可以看到API只是一些函数的集合,SCO使用该函数集合与LMS进行通信。

 ● API执行(API Implementation)是一个功能函数的一部分,API执行函数的实现与SCO开发者无关。LMS需要提供API执行的实现,而且对客户端的SCO呈现出部分公共的接口。

 ● API实例(API Instance)是API执行的上下文和状态,是与SCO操作时的一个实例。
API是SCO与LMS之间的通讯机制。根据作用API的方法分为三类:

使用API方法必须注意以下几点:
 ● 所有的方法名称是大小写敏感的;
 ● 所有的方法的参数也是大小写敏感的;
 ● 所有通过参数传递的数据都是字符串的形式。

会话方法有:
●  Initialize(“”)
●  Terminate(“”)

数据转换方法有:
●  GetValue(parameter)
●  SetValue(parameter_1, parameter_2)
● Commit(parameter)

支持方法有:
●  GetLastError()
● GetErrorString(parameter)
●  GetDiagnostic(parameter)

通信会话状态模型
通信会话状态模型定义了API实例的状态模型。API实例的状态有三种:
●  未初始化
●  运行中
●  终止

未初始化(Not Initialized)状态:这个通信状态表示在运行SCO时但是SCO还没有调用Initialize(“”)方法之前的API实例的状态。在这期间,SCO需要搜索LMS提供的API实例。SCO可以调用下面几个API方法:
 ● GetLastError()
 ● GetErrorString()
 ● GetDiagnostic()

运行(Running)状态:这个通信状态表示在SCO成功调用Initialize()方法之后,并且SCO成功调用Terminate()方法之前的API实例的状态。在这个状态中SCO允许使用下列API方法:
 ● GetValue()
 ● SetValue()
 ● Commit()
 ● GetLastError()
 ● GetErrorString()
 ● GetDiagnositic()

终止(Terminated)状态:这个通信状态表示SCO成功调用Terminate()方法之后API实例的状态。在这个状态中SCO允许使用下列API方法:
 ● GetLastError()
 ● GetErrorString()
 ● GetDiagnositic()

API执行的错误代码

所有的错误代码都是整形数,并且通过转换成一个字符串返回。错误代码可以使用0到65535之间的数字。其中0到999是被保留使用的。所以1000到65535之间任意的数字是任意使用的。
所有的API方法在执行完都需要提供一个错误代码,除了支持方法:GetLastError()、GetErrorString()、GetDiagnositic()。SCO可以使用GetLastError()方法来获得最近一次API方法调用后的错误代码,使用GetLastErrorString()来获得错误的描述信息。下面就是错误代码的分类表格:

LMS的职责

SCORM规定LMS必须提供一个符合标准的API实例,该实例实现了SCORM所规定的API方法。为了给SCO提供API实例,LMS必须实现如何访问或定位API实例的功能。为了实现该功能,LMS必须提供一个名为”API_1484_11”的对象, LMS必须提供使SCO通过ECMAScript脚本能够访问到该API实例对象。

LMS可以在浏览器的子窗口中执行SCO,也可以在一个子Frame中运行SCO。而SCO通过ECMAScript来搜索和定位API实例。

SCO的职责

SCO的责任是通过API与LMS进行通信。SCO必须能寻找和定位API实例,这样SCO就可以通过LMS对学习者进行跟踪。
在SCORM环境中,内容对象是运行于web浏览器中,通过浏览器提供的DOM树可以定位API实例对象。DOM对一个页面中的所有对象的结构进行了组织。SCO在定位API实例时必须寻找下列位置:

 1. 搜索当前窗口的父窗口,父窗口的父窗口,一直追溯上去,直到最顶层的窗口;
 2. 搜索开启窗口,即打开当前窗口的那个窗口;
 3. 搜索开启窗口,如果开启窗口有父窗口的话,也必须一直追溯上去,直到最顶层的窗口;

SCO必须按照这种方式搜索API实例,直到API实例被发现,为了让SCO能找到API实例,IEEE为API实例对象在DOM树中定义了一个强制性名字:API_1484_11。

一旦SCO找到了API实例,则SCO就可以调用API方法,如Initialize(“”)和Terminate(“”)。

IEEE标准已经提供了一个用ECMAScript搜索API实例的实现,如下:

var nFindAPITries = 0;
var API = null;
var maxTries = 500;
var APIVersion = "";

function ScanForAPI(win){
   while ((win.API_1484_11 == null) && (win.parent != null)
           && (win.parent != win)) {
      nFindAPITries++;
      if (nFindAPITries > maxTries) {
         alert("Error in finding API instance — too deeply nested.");
         return null;
      }
      win = win.parent;
   }
   return win.API_1484_11;
}

function GetAPI() {
   if ((win.parent != null) && (win.parent != win)) {
      API = ScanForAPI(win.parent);
   }
   if ((API == null) && (win.opener != null)) {
      API = ScanForAPI(win.opener);
      if (API != null) {
         APIVersion = API.version;
      }
   }
}

SCORM运行时环境数据模型

概述

定义运行时数据模型的目的是为了在不同的LMS环境下,关于SCO的信息能被LMS所跟踪和记录。例如需要记录学习者的学习成绩,SCO必须通过一个公共的方法来向LMS提供学习者的学习成绩,如果没有这些公共的方法,LMS将不知道如果获取、存储和处理这些信息。

SCORM运行时数据模型基于IEEE LTST Computer Managed Instruction(CMI)的P1484.11.1草案标准。P1484.11.1标准定义了一些数据模型元素的集合,这个集合能被用于内容对象(如SCO)向LMS之间传递信息。集合可以包含有关学习者的信息、目标信息、成功状态以及完成状态。

SCORM运行时数据模型基于AICC CMI001,在SCORM版本1.2的时候,AICC完成了CMI001,并提交给了IEEE进行标准化。
为了标识数据模型,在SCORM运行时环境中,所有的数据模型元素的名称必须以”cmi”开头。它表示该数据模型元素是IEEE P1484.11.1数据模型定义的部分。因此你可以自己定义自己的数据模型的名称。唯一有限制的是,LMS必须实现数据模型所定义的动作。

所有的数据模型对于SCO来说都是选择使用的,SCO必须使用的API函数仅仅是Initialize(“”)和Terminate(“”)而已,而SetValue()以及GetValue()都不是必须使用的。

所有的数据模型元素都定义为ECMAScript的字符串类型,并使用的点符号(如cmi.success_status),

处理集合
有些数据模型元素表现为一个集合。在本文档中数据集合称为一条数据记录,一条数据记录应该被存放于数组的一个位置中。通过数组的索引号可以访问该数据记录,数组的索引号从0开始。下列数据模型元素被定义为数据记录的集合:

1. 来自学习者的注释(cmi.comments_from_learner)
2. 来自LMS的注释(cmi.comments_from_lms)
3. 目标(cmi.objectives)
4. 交互(cmi.interactions)

在调用GetValue()请求时,有两种情况下会发生错误:

1. 常规获取失败:
数据集合元素请求溢出。请求的数据记录在数组指定的位置不存在。
2. 数据模型元素值没有设置:
请求的数据记录存在于数组指定的位置,但是该位置的值没有被初始化。

在集合中的数据模型元素使用点-数字来表示(如n.):

cmi.objective.n.completion_status
_count数据模型的关键字用来确定当前集合中数据模型元素的数量。例如:
 var numOfObjectives = GetValue("cmi.objectives._count");
所有的集合型数据模型元素(除了cmi.comments_from_lms,这个数据元素对于SCO来说是只读的)能够有属于自己的子元素。

数据模型元素关键字
有三个数据模型关键字:_version、_count和_children。这几个关键字都是受LMS所管理,并且这些关键字反映的是其他数据模型元素的状态。这些关键字必须是只读的,如果SCO使用SetValue()来设置这些关键字,则LMS应该设置错误代码”404”(表示数据模型是只读的),并且返回”false”。_count和_children只能应用于某一个数据模型元素上。

 _version:_version数据模型关键字用在确定被LMS支持的数据模型的版本。该关键字不能用于任何数据模型元素上。
 _count:_count数据模型关键字用于确定一个集合中当前所有数据模型元素的总数量。该值可以用作确定集合中下一个存储的位置。该关键字仅能用于集合类型的数据模型元素。
 _children:_children数据模型关键字用户确定一个父数据模型元素集合所拥有的所有的子数据模型元素。一个有效的_children请求应该返回一个字符串,该字符串包含所有的数据模型元素,并且用一个通用的分隔符进行分割。该关键字仅能用于含有子数据模型元素的数据模型元素。

保留分隔符

数据类型
每个数据模型元素必须关联一个定义的数据类型
characterstring:
一个字符串,定义在ISO10646标准中,ISO10646标准与UNICODE标准兼容。
localized_string_type:
一个本地化的字符串,在字符串前包含使用语言的指示器,以确定该字符串使用什么语言导入。SCORM使用保留定界符来表示字符串的语言。
格式:
“{lang=<language_type>}”<actual characterstring>
例如:
“{lang=en}The content presented an excellent point dealing with the topic.”
{lang=<language_type>}是可选的,默认值是en(English)。
language_type:
 描述语言类型的数据类型,语言代码定义的格式:
 language_type ::= langcode [“-” subcode]*
 
long_identifier_type:
 
short_identifier_type:
 
integer:
 
state:
 
real (10,7):
 
time (second, 10, 2):
 
timeinterval (second, 10,2):

扩展SCORM运行时数据模型
SCORM运行时数据模型不应该被扩展,如果LMS收到一个带有未定义数据模型元素未参数的API请求,LMS必须:

1. GetValue(Parameter):LMS必须空的字符串,并且设置错误代码”401”——未定义的数据模型元素;
2. SetValue(Parameter_1, Parameter_2):LMS必须返回”false”,并且设置错误代码”401”——未定义的数据模型元素;

SCORM运行时环境数据模型

概述

定义运行时数据模型的目的是为了在不同的LMS环境下,关于SCO的信息能被LMS所跟踪和记录。例如需要记录学习者的学习成绩,SCO必须通过一个公共的方法来向LMS提供学习者的学习成绩,如果没有这些公共的方法,LMS将不知道如果获取、存储和处理这些信息。

SCORM运行时数据模型基于IEEE LTST Computer Managed Instruction(CMI)的P1484.11.1草案标准。P1484.11.1标准定义了一些数据模型元素的集合,这个集合能被用于内容对象(如SCO)向LMS之间传递信息。集合可以包含有关学习者的信息、目标信息、成功状态以及完成状态。

SCORM运行时数据模型基于AICC CMI001,在SCORM版本1.2的时候,AICC完成了CMI001,并提交给了IEEE进行标准化。
为了标识数据模型,在SCORM运行时环境中,所有的数据模型元素的名称必须以”cmi”开头。它表示该数据模型元素是IEEE P1484.11.1数据模型定义的部分。因此你可以自己定义自己的数据模型的名称。唯一有限制的是,LMS必须实现数据模型所定义的动作。

所有的数据模型对于SCO来说都是选择使用的,SCO必须使用的API函数仅仅是Initialize(“”)和Terminate(“”)而已,而SetValue()以及GetValue()都不是必须使用的。

所有的数据模型元素都定义为ECMAScript的字符串类型,并使用的点符号(如cmi.success_status),

处理集合
有些数据模型元素表现为一个集合。在本文档中数据集合称为一条数据记录,一条数据记录应该被存放于数组的一个位置中。通过数组的索引号可以访问该数据记录,数组的索引号从0开始。下列数据模型元素被定义为数据记录的集合:

1. 来自学习者的注释(cmi.comments_from_learner)
2. 来自LMS的注释(cmi.comments_from_lms)
3. 目标(cmi.objectives)
4. 交互(cmi.interactions)

在调用GetValue()请求时,有两种情况下会发生错误:

1. 常规获取失败:
数据集合元素请求溢出。请求的数据记录在数组指定的位置不存在。
2. 数据模型元素值没有设置:
请求的数据记录存在于数组指定的位置,但是该位置的值没有被初始化。

在集合中的数据模型元素使用点-数字来表示(如n.):

cmi.objective.n.completion_status
_count数据模型的关键字用来确定当前集合中数据模型元素的数量。例如:
 var numOfObjectives = GetValue("cmi.objectives._count");
所有的集合型数据模型元素(除了cmi.comments_from_lms,这个数据元素对于SCO来说是只读的)能够有属于自己的子元素。

数据模型元素关键字
有三个数据模型关键字:_version、_count和_children。这几个关键字都是受LMS所管理,并且这些关键字反映的是其他数据模型元素的状态。这些关键字必须是只读的,如果SCO使用SetValue()来设置这些关键字,则LMS应该设置错误代码”404”(表示数据模型是只读的),并且返回”false”。_count和_children只能应用于某一个数据模型元素上。

 _version:_version数据模型关键字用在确定被LMS支持的数据模型的版本。该关键字不能用于任何数据模型元素上。
 _count:_count数据模型关键字用于确定一个集合中当前所有数据模型元素的总数量。该值可以用作确定集合中下一个存储的位置。该关键字仅能用于集合类型的数据模型元素。
 _children:_children数据模型关键字用户确定一个父数据模型元素集合所拥有的所有的子数据模型元素。一个有效的_children请求应该返回一个字符串,该字符串包含所有的数据模型元素,并且用一个通用的分隔符进行分割。该关键字仅能用于含有子数据模型元素的数据模型元素。

保留分隔符

数据类型
每个数据模型元素必须关联一个定义的数据类型
characterstring:
一个字符串,定义在ISO10646标准中,ISO10646标准与UNICODE标准兼容。
localized_string_type:
一个本地化的字符串,在字符串前包含使用语言的指示器,以确定该字符串使用什么语言导入。SCORM使用保留定界符来表示字符串的语言。
格式:
“{lang=<language_type>}”<actual characterstring>
例如:
“{lang=en}The content presented an excellent point dealing with the topic.”
{lang=<language_type>}是可选的,默认值是en(English)。
language_type:
 描述语言类型的数据类型,语言代码定义的格式:
 language_type ::= langcode [“-” subcode]*
 
long_identifier_type:
 
short_identifier_type:
 
integer:
 
state:
 
real (10,7):
 
time (second, 10, 2):
 
timeinterval (second, 10,2):

扩展SCORM运行时数据模型
SCORM运行时数据模型不应该被扩展,如果LMS收到一个带有未定义数据模型元素未参数的API请求,LMS必须:

1. GetValue(Parameter):LMS必须空的字符串,并且设置错误代码”401”——未定义的数据模型元素;
2. SetValue(Parameter_1, Parameter_2):LMS必须返回”false”,并且设置错误代码”401”——未定义的数据模型元素;

原义光
浏览次数: 1444

SCORM Content Aggregation Model(CAM)概述

SCORM内容集合模型的目的是提供一个公共的方法,把学习资源组合成学习内容。它还定义了如何确认和描述学习内容,怎么整合成一个课程或课程的一部分,学习内容如何在学习管理系统和内容知识库这样的系统之间移动。许多组织在SCORM的开发方面做出了重要的贡献,如欧洲远程教学和分布式网络联盟(ARIADNE)、航空工业计算机培训委员会(AICC)、电气和电子工程师协会学习技术标准委员会(IEEE LTSC)、教学管理系统全球化学习联盟(IMS)等。

SCORM内容集合模型由下面几个内容组成:

1. 内容模型:定义了一次学习体验的内容组件的命名。

2. 内容包装:定义了一次学习体验的固定动作(内容结构)以及如何在不同的环境中组合学习资源的活动(内容打包)。

3. 元数据:一种详细描述控制模型组件实例的信息的机制。

4. 序列和导航:一组定义规则集的模型,描述了活动的固定次序。

 

SCORM内容模型

SCORM内容模型组件

SCORM内容模型描述了从学习资源中构造一次学习体验所需的SCORM的内容组件。SCORM定义了如何把一些低等级的、可共享的学习资源组合成一些高等级结构的对象的方法。SCORM内容模型由素材(Assets)、可共享内容对象(SCOs)以及内容组织(Content Organization)组成。

Asset

素材(Asset)是一种以电子化表现的媒体,如文本,图像,声音,以及任何可以用Web方式呈现给学习者的内容。一个以上的素材能被组合成新的单个素材。

一个Asset可以用Asset Meta-data来描述,并通过这些数据来在线搜索,从而可以增加重用的机会。将基本元素绑定到Meta-data的机制称为内容打包。

共享内容对象

一个共享内容对象由一个或多个素材(Asset)组成,它对外表现为一个学习资源,并且共享内容对象能够与所有学习管理系统(LMSs)通信。一个共享内容对象表现为一个细粒度,低等级的学习资源,它能通过SCORM运行时环境数据模型与学习管理系统通信。共享内容对象与资源的不同点是:共享内容对象使用标准IEEE ECMAScript应用程序接口与学习管理系统通信。

SCOs必须使用Initialize与Terminate方法通知LMS初始化与结束。下类列表列出了SCO需要提供的功能:

1. 发现LMS提供的API实例;

2. 使用API实例与LMS进行初始化通信和使用GetValue()和SetValue()方法读取或设置值。

3. 使用API实例通知LMS结束。

  SCO可以利用下列SCORM RET所提供的特性:

1. 任何符合SCORM RTE的LMS都能发布和跟踪SCOs,而不管这个SCOs是怎样产生的。

2. 任何符合SCORM RTE的LMS都能跟踪任何SCO,并且知道将何时开始和结束它。

3. 任何符合SCORM RTE的LMS都能使用相同的方法发布SCO。

 

内容组织

一个内容组织是一个类似于图表示方法来表示映射关系,它详细描述了所有学习活动的组织结构,如显示一些活动的彼此关联。学习活动可以由一些子活动组成,这样的结构可以嵌套任意深度。所有的叶子活动(没有子活动的活动)将会与一些学习资源想关联(SCO或素材)。含有子活动的活动称为簇(Clusters)。任何在内容组织中的活动能够引用其他的活动元数据。

序列与导航

序列仅作用于活动。LMS有责任解析定义在内容组织中的序列信息,并根据序列信息采取相应的动作。在SCORM中,序列信息定义在内容组织中,与有关的学习资源相分离。当一些学习资源具有自己的条件分支的情况下,它的序列是由自己控制,因此这些序列信息不能定义在内容组织中。

SCORM内容包
IMS内容包规范的目标是定义一个标准的结构模式,使之在不同系统间互换内容。

一个IMS内容包包含两个组件:

1. 一个清单文件(imsmanifest.xml),该文件描述了关联包内资源的结构。清单文件必须定义在内容包的根目录中。

2. 一些物理文件包装成的内容包。

包(package)

一个包指一个学习单位。它可以是课程的一部分或一个课程或一个课程集合,并且可以被独立分发。包可以被任意分解或组合,这样包必须自含有所有关于描述包本身的必须信息。

清单(Manifest)

清单是一个XML文档,它包含了关于包内内容结构的描述。一般的规则是一个包总是包含单个顶极的清单,该顶极清单包含一个或多个(子)清单。清单必须满足下列要求:

1. 清单文件应该是一个名为imsmanifest.xml的文件。

2. 清单文件imsmanifest.xml和任何它的控制文件(如DTD,XSD)必须放在内容包的根目录下。所有的控制文件必须是有效的XML格式,并含有元素。

3. 任何元素必须符合定义在IMS内容包XML绑定规范。

包交换文件(Package Interchange File,PIF)

包交换文件(PIF)为一个压缩文件,它包含了imsmanifest.xml,所有的控制文件和内容包中的资源引用。

清单文件的组成

一个清单文件描述了关于包内内容的信息。

 

清单文件由4个主要部分组成:

1. Meta-data:内容包数据描述的入口。

2. Organizations:包含了学习资源的组织或内容结构作为一个单位。

3. Resources:在内容包中定义的学习资源束(集合)。

4. (sub)Manifest(s):嵌套的子清单。

 

Meta-data

Meta-data是一种描述数据的数据。元数据用来描述整个内容包。元数据提供了内容包的自搜索和自发现的功能。它提供了一种描述内容包特征的机制。

Organizations

组织用来描述在内容包中的内容的组织方式。它可以包含一个或多个组织组件。IMS和SCORM都没有规定是否根据学习分类来定义组织。所以命名方式留个了内容开发者。

Resources

清单中的资源组件用于描述外部资源,也用户在包中定位物理文件。这些文件或许是媒体文件,文本文件,评估对象或其他的一些可表示为电子数据的内容。概念上文件之间的分组和关系表现为资源组件。联合资源通常被称为“内容”。

单个资源能被多个组件包含。在SCROM中,这些组件就是简单的Asset。如果这些组件能与LMS通信,则称之为SCO。

 

内容打包

将内容对象(Asset、SCOs等)绑定到Meta-data的机制称为内容打包。当使用XML绑定时需要遵守以下内容:

1. XML的格式需要符合W3C的XML1.0规范。

2. XML的格式必须符合IMS内容包信息模型所定义的结构。

  SCORM内容包应用特征:

1. 资源包应用程序特征:一个没有定义学习资源组织(SCOs或Asset)的学习资源集合的内容包。这些学习资源相互之间没有任何关系。

2. 内容集合包应用程序特征:一个由学习资源集合以及它们的静态结构和序列所组成的内容包。

清单文件

清单是一个关于包内容的目录组织结构,所有的清单都定义在imsmanifest.xml文件中。

 

内容层次结构

一个学习资源集合通常被组织成一个层次结构。一个层次的活动依赖于资源,它提供了特定的学习体验。只有叶子item(没有孩子的item)能引用一个学习资源。其他的条目必须包含至少一个条目。SCORM规定一个学习资源必须是连种类型之一,SCO或Asset。

如图所示:

 

SCORM元数据

概述

最重要的观点是,对于内容开发而言SCORM被描述为特定的建构块(SCORM内容模型组件)。SCORM描述了如何建构成内容集合以及在不同系统间打包和分发这些建构块。一旦SCORM内容模型组件被建构,这些组件将有一致的格式。用meta-data来描述这些组件,可以使组件在不同的系统中被搜索和发现。LMS能使用meta-data来得到关于内容组织的信息(如课程、模块等)。Meta-data也能在运行时确定什么样的模块组件需要传送到学习者面前。

Meta-data的目的是提供使用一个通用的方法和通用的命名来描述学习资源。通过元数据可以系统地搜索到学习资源并且返回学习资源以重复使用。

内容组织Meta-data

内容组织Meta-data用来描述内容组织整体,它描述了内容组织是什么,什么人能使用它,什么人能控制它等等,以及如何搜索它,如用它的title、version、简介等搜索。使用该Meta-data可以在内容仓库中或不同的系统更加容易地发现内容组织,已达到内容组织的重复使用目的。

 

活动Meta-data

活动Meta-data描述了一个活动的详细信息。

  

SCO Meta-data

SCO  Meta-data描述了一个SCO的详细信息。

 

Asset Meta-data

Asset Meta-data描述了一个Asset的详细信息。

  

SCORM序列

这部分描述了如果用XML中获取序列信息。这些信息定义在IMS清单文件中的某一活动。有两种方法建立序列规则:

1. 元素。元素为活动提供所有必须的序列规则和策略。

2. 元素。元素为几个活动提供所需的序列规则和策略的集合。

3. 任何元素必须符合定义在IMS内容包XML绑定规范。

包交换文件(Package Interchange File,PIF)

包交换文件(PIF)为一个压缩文件,它包含了imsmanifest.xml,所有的控制文件和内容包中的资源引用。

清单文件的组成

一个清单文件描述了关于包内内容的信息。

 

清单文件由4个主要部分组成:

1. Meta-data:内容包数据描述的入口。

2. Organizations:包含了学习资源的组织或内容结构作为一个单位。

3. Resources:在内容包中定义的学习资源束(集合)。

4. (sub)Manifest(s):嵌套的子清单。

 

Meta-data

Meta-data是一种描述数据的数据。元数据用来描述整个内容包。元数据提供了内容包的自搜索和自发现的功能。它提供了一种描述内容包特征的机制。

Organizations

组织用来描述在内容包中的内容的组织方式。它可以包含一个或多个组织组件。IMS和SCORM都没有规定是否根据学习分类来定义组织。所以命名方式留个了内容开发者。

Resources

清单中的资源组件用于描述外部资源,也用户在包中定位物理文件。这些文件或许是媒体文件,文本文件,评估对象或其他的一些可表示为电子数据的内容。概念上文件之间的分组和关系表现为资源组件。联合资源通常被称为“内容”。

单个资源能被多个组件包含。在SCROM中,这些组件就是简单的Asset。如果这些组件能与LMS通信,则称之为SCO。

 

内容打包

将内容对象(Asset、SCOs等)绑定到Meta-data的机制称为内容打包。当使用XML绑定时需要遵守以下内容:

1. XML的格式需要符合W3C的XML1.0规范。

2. XML的格式必须符合IMS内容包信息模型所定义的结构。

  SCORM内容包应用特征:

1. 资源包应用程序特征:一个没有定义学习资源组织(SCOs或Asset)的学习资源集合的内容包。这些学习资源相互之间没有任何关系。

2. 内容集合包应用程序特征:一个由学习资源集合以及它们的静态结构和序列所组成的内容包。

清单文件

清单是一个关于包内容的目录组织结构,所有的清单都定义在imsmanifest.xml文件中。

 

内容层次结构

一个学习资源集合通常被组织成一个层次结构。一个层次的活动依赖于资源,它提供了特定的学习体验。只有叶子item(没有孩子的item)能引用一个学习资源。其他的条目必须包含至少一个条目。SCORM规定一个学习资源必须是连种类型之一,SCO或Asset。

如图所示:

 

SCORM元数据

概述

最重要的观点是,对于内容开发而言SCORM被描述为特定的建构块(SCORM内容模型组件)。SCORM描述了如何建构成内容集合以及在不同系统间打包和分发这些建构块。一旦SCORM内容模型组件被建构,这些组件将有一致的格式。用meta-data来描述这些组件,可以使组件在不同的系统中被搜索和发现。LMS能使用meta-data来得到关于内容组织的信息(如课程、模块等)。Meta-data也能在运行时确定什么样的模块组件需要传送到学习者面前。

Meta-data的目的是提供使用一个通用的方法和通用的命名来描述学习资源。通过元数据可以系统地搜索到学习资源并且返回学习资源以重复使用。

内容组织Meta-data

内容组织Meta-data用来描述内容组织整体,它描述了内容组织是什么,什么人能使用它,什么人能控制它等等,以及如何搜索它,如用它的title、version、简介等搜索。使用该Meta-data可以在内容仓库中或不同的系统更加容易地发现内容组织,已达到内容组织的重复使用目的。

 

活动Meta-data

活动Meta-data描述了一个活动的详细信息。

  

SCO Meta-data

SCO  Meta-data描述了一个SCO的详细信息。

 

Asset Meta-data

Asset Meta-data描述了一个Asset的详细信息。

  

SCORM序列

这部分描述了如果用XML中获取序列信息。这些信息定义在IMS清单文件中的某一活动。有两种方法建立序列规则:

1. 元素。元素为活动提供所有必须的序列规则和策略。

2. 元素。元素为几个活动提供所需的序列规则和策略的集合。

  看了这篇文章,我前面所说让人晕头的SCORM的大部分疑问已经解决,现在终于有点明白js文件的作用,难怪看它的代码觉得很简单,但是究竟干嘛的说不上来。而为什么那些文件只有一个imsmanifest.xml,没有其他xml,主要是因为那还是初级阶段,直接用imsmanifest.xml将各个asset串起来。
  而我后来确实下载了LRN,发现它也只能生成imsmanifest.xml而不会帮助你生成SCO的xml

来自:online-edu初级:
把所有现有教材,都当作 Asset,只用 imsmanifest.xml 把它们串起来。
作法:用 MS LRN 之类的工具即可。

中级:
把教材当作 SCO,加上一些 metadata 描述, 同样用 imsmanifest.xml 串起来。
作法:用 LRN 再配合一些写 metadata 的 tool,或者如果你懂 XML ,直接用 Notepad 写也无妨。

高级:
把教材当做 SCO,每个 activity 教材单元都要配上 APIWrapper.js, SCOFunctions.js这两支 javascript,并至少呼叫 LMSInitialize()跟 LMSFinish() 这两个 API。
作法:用软件 (手工当然也行) 把两个 js 加到 activity 中,并在 onload 事件里触发LMSInitialize(),在nunload 事件触发LMSFinish()。(不一定每个 SCO 都在此二事件中 init 或 finish SCORM,视实际情况而取决)

专业:
在【高级】做法中,详细规划该 activity 所要读取、记录的信息,去使用适当的 API。


如果要记录 USER 对所有教材的阅读记录的话,那教材至少要做到哪一个等级呢?就 SCORM 的规划来看,只有呼叫 API 才能记录阅读  时间、次数,因此最少也要【高级】再加上用 LMSSetValue()去记录时间,才能达到这个要求。所以,教材中的 Asset, SCO 是无法有阅读记录的。因为它们没有 CMI data 产生,自然没地方可记。  如果课件只做到初、中级,岂不是毫无阅读记录可言?依照「不产生 CMI data,就没有记录」的情况来看,的确是如此。但是如果 LMS 本身就有记录阅读的能力,而非单借 SCORM API 来记录,那么还是能记录。你会问:如果我的教材到非 SCO 的 activity。这就是我曾经说过,LMS 选择的要点之一,是要同时具备兼容 SCORM 兼容与非SCORM 相容两种教材。

2005年04月26日

  以前看过关于苏格拉底对话启发方法的教学故事,叹为观止,但是当时没有记录下来,今天查scorm的时候竟然在这里看到了这篇帖子,呵呵,赶紧zt

  不过要做到这样的启发可不是普通的老师所能做到的阿,唯大智慧者方可

会议中的思考之启发式提问的先祖   - [建构主义]



  古希腊著名哲学家、教育家苏格拉底用“对话”(提问)进行教育活动。他用讨论问题的方式与人交谈,但不把结论直接教给别人,而是指出问题所在,并一步步引导人最后得出正确的结论。这种方法被后人称之为“苏格拉底方法”或称“产婆术”。

    一位名叫欧谛德谟的青年,一心想当政治家,为帮助这位青年认清正义与非正义问题,苏格拉底运用启发式方法和这位青年进行了下面的对话(以下皆是苏问,欧答): 
    问:虚伪应归于哪一类?
    答:应归入非正义类。 
    问:偷盗、欺骗、奴役等应归入哪一类?
    答:非正义类。 
   问:如果一个将军惩罚哪些极大地损害了其国家利益的敌人,并对他们加以奴役这能说是非正义吗?
    答:不能。 
    问:如果他偷走了敌人的财物或在作战中欺骗了敌人,这种行为该怎么看呢?
    答:这当然正确,但我指的是欺骗朋友。 
    苏格拉底:那好吧,我们就专门讨论朋友间的问题。假如一位将军所统帅的军队已经丧失了士气,精神面临崩溃,他欺骗自己士兵说援军马上就到,从而鼓舞起斗志取得胜利,这种行为该如何理解?
    答:应算是正义的。 
    问:如果一个孩子有病不肯吃药,父亲骗他说药不苦、很好吃,哄他吃下去了,结果治好了病,这种行为该属于哪一类呢?
    答:应属于正义类。 
    苏格拉底仍不罢休又问:如果一个人发了疯,他的朋友怕他自杀,偷走了他的刀子和利器,这种偷盗行为是正义的吗?
    答:是,他们也应属于这一类。 
    问:你不是认为朋友之间不能欺骗吗?
    欧谛德谟:请允许我收回我刚才说过的话。 
    从这一段生动的对话可以看出,苏格拉底启发式教学的特点是:抓住学生思维过程中的矛盾,启发诱导,层层分析,步步深入,最后导出正确的结论。 

  再例如:苏格拉底与一个士兵讨论“什么是勇敢”时这样提问
 苏:什么是勇敢
 兵:勇敢就是在情况变得艰难时能坚守阵地
 苏:但是,假如战略要求撤退呢
 兵:假如这样的话,就不要使事情变得愚蠢。
 苏:那么,你同意勇敢既不是坚守阵地也不是撤退
 兵:我猜是这样,但是,我不知道
 苏:我也不知道。或许它正好可以开动你的脑筋。对此你还有什么要说的
 兵:是的,可以开动我的脑筋,这就是我要说的。
 苏:那么,我们也许可以尝试地说,勇敢是在艰难困苦的时候的镇定–正确的判断
 兵:对。