孙婷 辽阳职业技术学院
C语言是国内外广泛流行和推广的一种计算机语言。C语言简洁、紧凑,使用方便灵活,功能强大,在计算机语言的发展进程中,C语言一直保存着较强的生命力。作为计算机专业的一门基础课程,掌握好C语言对于学生来说十分重要。但是由于C语言本身的特点,初学者理解C语言具有一定的难度。另外,每个学生的学习特点、理解能力、接受能力都不一样,所以不同的学习者在C语言学习的过程会碰到不一样的问题。然而教师的讲解是面对整体班级的教学,对于不理解的问题,学生需要自己课后进行再学习,使得学生学习效率得不到提高,教师的讲课进度也受到限制,最终导致学生学习积极性不高。
目前,各种辅助学习系统在不断的研究中,图像处理在线辅助学习系统,研究者采用ASP、VML、Web Services技术标准进行设计,计算机基础教学网上辅助学习系统采用了ASP技术和Browse/Server模式来实现对计算机基础的教学,随着人工智能技术的不断发展,多媒体智能化教学系统的研究受到广泛学者的关注,智能化C语言自学习系统的设计与实现采用云计算技术和统一认证技术进行设计一个平台让学生体验丰富的C语言编程,通过动态测试和静态分析的综合技术智能化模拟教师对学生的行为作出客观评价和反馈比较详细的帮助信息。
本系统主要以C语言课程为例,运用智能化推理技术,设计一个C/S模式的智能化个别化辅助学习系统。该系统可以筛选出每个学生学习知识过程的重点和难点,然后根据学生的信息,提供适合学生学习的资料,再通过跟踪记录学生的学习过程,了解学生学习进度,调整学生学习策略并对学生的学习进行测试评价和建议,实现智能化个别化学习目的,使每个学生找到适合自己的学习方法。
2.1 零基础初学者原则。传统学习C语言程序设计需要预先学习计算机组成原理、计算机操作系统原理等课程,我们构建的智能化C语言自学系统面对零基础初学者的原则。
2.2 交互式智能化原则。通过设置交互式智能化的教学模式,引领指导学生逐步实现C语言源程序检查、分析、校核、不断修正的C语言程序设计的学习实训过程。
3.1 功能需求分析
根据当前学习c语言的一般过程和常见问题,要求自学系统具有以下功能:首先,通过系统浏览,可以得到c理论的明确分类,包括基本语法、函数、以及相关的算法;二是为学习者提供相应的例子练习和测试,并能正确判断我们学生提交的答案;三是具有错误的题库功能,在我们的账户下收集我们的实践和测试结果,形成一个错误的问题库,并进行有针对性的指导练习。同时,要求系统具有安全性、可靠性、稳定性、可伸缩性等非功能性要求。
3.2 设计与实现
3.2.1 框架设计
我们可以通过任何pc或移动端口浏览器访问系统内容,减少客户端的开发压力,统一系统在服务器上的核心功能。浏览器使用网络服务器连接到sql数据库以完成数据交换。以实现多重编译和运行环境接触,为我们提供AIX,NETBSD,WINDOWS等常见的操作系统通过云计算的方式运行与虚拟机当中,我们便可通过远程登录进行编写、运行的练习。
3.2.2 存储设计
根据学习需要,系统中需要存储多种数据,包括C语言理论知识数据、习题数据、测验数据以及编写程序的数据等内容。系统按照模块的方式分别将数据存储于云端的SQL数据库中,并根据命令语言完成数据的读取和写入。同时,在网络条件下,实现知识的自学与自验功能,系统运用NFS方式提供一个具有安全防护性的网络空间进行统一存放,创建唯一可识别的学生共享账号,我们学生在该账号下的基于任何操作系统的相关数据都可以借助mount命令远程加载到该文件夹上。
3.2.3 关键模块实现
根据智能自学习系统的功能要求,我们尝试用模块化结构来设计该系统。系统包括基础知识学习模块、实例模块、自测试与评价模块、用户模块、系统模块等。基本知识学习模块和示例模块是C语言学习的基本模块。他们详细分类了18大类的c语言学习和下面包含的70多个主要知识点。用户可以通过点击鼠标来查看相应列表下的知识内容。设置搜索模块。用户输入关键字,系统自动识别并显示相关的类别和知识点。示例模块收集典型案例,并配合详细的实例代码和答案分析,以帮助用户快速理解知识点。自我测试和评估模块在整个系统中发挥着重要作用。他们可以帮助我们的学生改正错误,在没有指导的情况下提升自己。本系统引入了时下流行的网络课程制作软件包moodle。作为一个开源软件,我们可以在其基础上根据自身需求进行开发。C语言测试与普通的测试相比具有特殊性,它要求系统能够识别我们提交编程文件的语法错误、逻辑错误等内容。因此结合moodle软件包设计了动态测试源代码及静态分析源代码。我们提交的C语言源程序经过测试源代码功能进行可执行文件编译,并产生进程执行,读入若干组测试数据,对输出的结果进行比较,我们的成绩按照百分制进行显示,并对发生错误的部分进行显著标识,列出相应的知识点。对本系统进行教学实践可以发现,大多数学习者都可以借助该学习系统完成基础知识的学习和相关练习,并根据系统测评反馈结果进行自我调整和完善。
3.3 静态分析源代码
目前比较流行的静态分析源代码方法是程序切片方法。其基本思想由M.Weiser 于 1979 年在其博士论文中首次建立。对源程序进行比较彻底的程序切片分析目前还是比较困难,因此本系统采用一种简化形式的简单切片方法,并使用开源工具 ctool 进行二次开发实现。例如,同样是阐述的平年闰年判定任务,如果源代码出现语法错误,那么就不能采用前面的动态测试方法而需要静态分析。这里有一个前提,就是假定题目规定学生编写程序必须使用变量名year 保存待判定的年份。首先使用 ctool 把给定的 C 语言源程序转化为抽象语法树,然后对该源程序关于变量 year 进行切片,分析该切片是否包含 if 或 switch 等分支结构,是否包含 year%4==0、year%100 !=0或者 year%400 ==0等表达式,最后按照所包含的特征数量计算百分比并给出百分制分数。
3.4 统一认证
学生登录到各个Unix/Linux系统一般都需要单独使用不同的用户名和密码,另外登录Moodle系统也需要一套用户名和密码,这种分散式单独管理帐号的方式显然不好。目前比较普遍使用的统一认证方法是基于LDAP协议的单点统一认证。本系统使用其中一个Linux发行版,安装BerkeleyDB数据库和OpenLDAP软件充当认证服务器,其他所有操作系统作为客户端访问。Moodle系统本身就已经支持LDAP认证,因此不需要额外改造。
3.5 构建用户管理模块实现用户验证管理
由于智能c语言自学系统包含多个作业系统及其他相关的应用软件,在学习过程中需要经常输入用户名及密码才能登入,并建立使用者验证的统一管理,以达到使用者验证的目的,这有利于提高学习效率。ldap目录服务数据库由分布式类型数据库和一组优化后用于查询、浏览和搜索的访问协议组成。它适用于存储课程信息、用户身份信息、公共证书和安全密钥。建立基于ldap目录服务的分布式数据库软件平台,智能c语言自主学习系统用户身份信息数据库,身份认证机制和接口实现课程资源信息和学生身份信息的统一管理;并确保信息数据的一致性和完整性。通过智能c语言自学系统的设计和实施以及试运行,基本达到了预期的教学效果。今后在教学实践中,我们将继续改进和提高系统的功能和性能。
结束语:基于云计算技术的多种操作系统环境可以为学生提供丰富的c语言编程经验。漫游网络存储空间可以让学生随时随地访问自己的程序数据。基于动态测试和静态分析的综合技术可以在一定的智能水平上模拟教师对学生语言源程序的客观评价和反馈。统一认证技术的应用,为学生使用该自学系统取得了简单的效果。