c语言毕业论文开题报告
来源:学术堂 作者:周老师
发布于:2018-04-20 共5016字
计算思维的本质是抽象和自动化。对于C语言程序来说,抽象就是使用程序、函数、函数调用以及数据类型、常量、变量、数组和链表等元素描述现实生活中的系统、功能、功能调用以及单个特征或特征组合等,自动化则体现为函数内部的语句在EIP寄存器加法操作支持下顺序自动地执行以及函数之间的调用在内存堆栈区支持下自动地进行跳转。以下是我们分享的c语言毕业论文开题报告,供你参考借鉴。
一、研究背景及研究意义
信息技术的快速发展加速了教育信息化的进程,在线教育系统与测试系统的出现为学生提供了一个可以提高和检测综合能力的便捷途径。另一方面,C语言教学在各大高校中都是必修课程之一,且在计算机相关课程教学中,针对某个理论性的知识点的考察,一般会以客观题的形式给出。由于答案具有唯一性,通过简单得匹配方式便能识别正确与否从而给出相应成绩。针对这类客观题的自动评分技术已经相当成熟,因此后续在自动评分方向的研究中主要集中于主观题的自动评判。在过去几年的积极探索阶段到现有的实际研究成果来看,有关C语言知识的检测中对编程题的考察是必不可少的。虽然检测的形式各不相同(填写空缺代码块完成完整程序,按题目要求编写整个程序),但终究是为了考察学生掌握编程技巧及编程思想的程度。
本课题研究的主要目的是结合编程实现的特征,为一个正在初始运营中的在线测试平台提供一个能查重与自动评分的功能模块。其中最终评分包括两个部分,一是对每个学生提交的程序代码文件相互之间进行相似度检测,当相似度超过预定阈值作为抄袭处理,此为查重检测。二是将学生程序与模板程序匹配检测相似度并由此计算最终得分。
程序语言与自然语言在各自适用领域上有较大差异,其语言虽然都有词法、语法规则等,但编写程序语言时并没有自然语言那么的灵活,不会出现一词多义,一义多词,他只有固定的关键字,标识符编写规则,功能实现结构等,所以较于自然语言来说识别起来要容易一些。国内外对编程题相似度检测及自动评分都有不少的研究,现也有一些系统比较成熟。
目前,各大高校对C语言课程考察方式一般还是以传统的纸质化考试为主。
这样的考试方法在人工阅卷的过程中存在着些许的不确定因素,随着教育的普及,能力测试之后需要批改的试卷绝不是一个小数目。这单一单调的工作很容易使得批改人员疲惫不堪,从而阅卷出错率将会被动的提高。利用计算机完成自动阅卷将杜绝这一问题的出现,同时,其运行速度快能及时的给学生反馈结果也没有人的感官情绪,能公平公正的对待每一份试卷。
对于主观题的自动评分技术还在不断的完善中,由于在主观题的识别所需的技术:人工智能、自然语言处理、模式识别等还处于起步阶段。所以主观题自动阅卷技术不能一蹴而就,还需要不断的实验研究。目前,探索开发出合理试用的主观题自动评分系统是一个技术难题,若能将开发的系统投入教学或是别的考察里面,将会大大的节省人力物力。
二、国内外研究现状
国外对文本相似度检测的研究早国内,在20世纪中期,就有学者提出让计算机同人工阅卷一般来对主观题如作文进行评阅。至今,经过数多学者的致力研究,出现了许多与教育结合的应用系统,并已投入使用。在对自然语言的文本分析处理方法的研究同时,随着计算机教育的普及,程序代码的检测也在逐渐兴起。
1966年,Ellis Page开 发 了 一 个 模 拟 人 工 评 分 的 系 统Project EssayGrade(PEG),该系统是总结学生提交文本的特征向量,然后将文本的特征进行量化,最后根据量化的结果对其文本进行判分。
1967年,Halstead提出了用属性计数法计算程序代码之间的相似度,所谓的属性是指代码的某些度量值,如:空行的数目,字符量,语句量,控制结构量等,在他的研究基础之上,1977年Otteiistein设计了检测FORTRAN编程语言的代码抄袭检测系统,该系统基于属性技术的相似度检测技术。基于属性技术求解程序代码之间相似度的系统还有Faidhi和Robinson的程序抄袭检测系统,以及Grier设计的Accuse程序抄袭检测系统。
单方面只考虑属性计数而忽略程序的结构组成,得出的代码相似度比值准确率较低,在1996年,Verco和Wise对Accuse程序抄袭检测系统进行了一系列可能性的测试,通过在源程序中加入不影响代码运行的字符串或用其他结构代替原结构等方式。在对测试结果分析研究之后指出:只是单纯的增加供于检测的程序属性数量,在程序相似度检测中并不能得到更加精确的检测结果。
G.Whal首次提出了程序结构方向的研究思路,通过分析程序的内部结构来匹配两源代码之间的相似度。在此后,学者们朝着这两个方向开始研究,同时也有将二者结合研究的。
G.Whal设计的Plague系统,Micheal Wise设计的YAP3系统,Sim系统都是采用的程序结构度量技术进行研究。Donaldson是结合了属性技术与程序结构度量两种技术完成对程序相似度的检测。
还有用token(标记)序列来表示程序的字符串匹配算法,是根据编译原理技术,将程序的语句进行分词的操作,然后将得到的单词存入token序列。然后使用字符串匹配算法计算相似度。常用的字符串匹配算法有:最长公共子序列(LCS)算法、余弦算法、编辑距离(Levenshtein)算法等。采用这种方法的有Duploc、NICAD、Dup、Clone Detective、CCFinder、CP-Miner等。
现在使用比较广泛是 Online Judge 系统,简称 OJ,是一个在线的判题系统,系统通过对用户提交的代码进行编译和运行,对于能够运行的程序通过预先设定的测试集来检测代码运行的结果,以及运行时间是否在规定范围之内。该系统最早使用在 ACM-ICPC 国际大学生程序设计赛和 OI 信息学奥林匹克竞赛中。该系统的返回结果有 7 种:Wrong Answer : 答案不完全正确;Time Limit Exceeded :
运行超出时间限制;Memory Limit Exceeded : 超出内存限制;Output LimitExceeded: 输出超过限制;Runtime Error : 运行时错误;Compile Error : 编译错误;Accepted : 程序通过。该系统采用的是动态评分方式。
三、研究内容
本文的主要研究内容以及创新点有:
1)研究文本相似度检测技术,分别比较点阵图法、空间向量的余弦算法、最长公共子序列LCS算法、最小编辑距离Levenshtein distance算法对源程序相似度检测效果。提出基于LCS的C语言程序查重算法。并对源代码进行适用于LCS算法匹配的预处理操作,改进匹配方式以提高算法匹配效率,提取源代码的特征属性求解阈值。
2)研究程序识别相关技术,以及自动评分的两种常见方法:动态评分;静态评分。本文主要研究静态评分方法,将程序抽象提取为SDG的表现形式,分析结构语义对源代码进行预处理,并提出基于控制流程匹配度的C语言自动评分算法。
3)分析 C语言程序的结构,分析抽象语法树的表现形式,将程序划分为多个不同粒度的子程序,并转换为结构树。运用编译原理技术分析数据依赖、控制依赖完成树的构建。因此提出基于最小子程序匹配的C语言自动评分算法。
四、提纲
摘要
ABSTRACT
第 1 章 绪论
1.1 研究背景及研究意义
1.2 国内外研究现状
1.2.1 国外研究现状
1.2.2 国内研究现状
1.3 本论文的主要研究内容
1.4 论文组织安排
第 2 章 相关理论及技术介绍
2.1 正则表达式
2.1.1 正则表达式的符号元
2.1.2 正则表达式的使用的规则
2.1.3Java字符串匹配
2.2 编译原理技术
2.2.1 词法分析
2.2.2 语法分析
2.2.3 语义分析
2.3 系统依赖图
2.3.1 结构化程序设计
2.3.2 程序流程图
2.3.3 程序依赖图
2.3.4 系统依赖图
2.4C语言
2.4.1C语言程序设计
2.4.2C语言结构特点
2.4.3C语言基础概述
2.4.4C语言代码多样性分析
2.5 本章小结
第 3 章 基于LCS的C语言程序查重算法
3.1 代码抄袭概述
3.2 抄袭常用方法
3.3 源代码查重预处理
3.4 程序代码查重算法
3.4.1 文本相似度算法
3.4.2LCS最长公共子序列
3.4.3 阈值分析
3.4.4 检测代码重复率
3.4.5 算法分析
3.5 实验结果及分析
3.6 本章小结
第 4 章 基于流程控制匹配的自动评分算法
4.1 流程控制结构图
4.1.1 流程控制结构划分
4.1.2 流程控制结构划分细节说明
4.1.3 结构依赖关系划分
4.1.4 结构依赖关系划分说明
4.2 程序流程控制结构图
4.2.1 代码预处理
4.2.2 自定义函数分析
4.2.3 生成流程控制结构图算法
4.3 程序流程控制结构图匹配算法
4.3.1 匹配单位元素定义
4.3.2 程序代码自动评分算法
4.3.3 算法分析
4.4 实验结果及分析
4.5 本章小结
第 5 章 基于最小子程序匹配的自动评分算法
5.1 子程序的概述
5.1.1 子程序的定义
5.1.2 定义基本语句单元
5.2 基于结构树的程序中间表示
5.2.1 代码预处理
5.2.2 结构树定义
5.2.3 生成树状图算法
5.3 最小子程序匹配评分算法
5.3.1 划分最小粒度子程序
5.3.2 子程序匹配描述
5.3.3 子程序匹配的自动评分算法
5.3.4 算法分析
5.4 实验结果及分析
5.5 本章小结
第 6 章 总结与展望
6.1 结论
6.2 展望
参考文献
致谢
五、组织安排
整个论文包含个章节,整体组织结构如下所示:
第一章绪论,根据研读的国内外文献简要描叙一下本文所研究主题的背景、意义,然后介绍国内外相关研究方法及成果,以及自己研究的内容简介。
第二章介绍了完成本文实验的相关理论知识:正则表达式的应用、编译原理技术、程序与图的关系、C语言编码特性、多样性等。
第三章介绍程序查重算法动态求解最长公共子序列。
第四章介绍了基于流程控制匹配的自动评分算法第五章介绍了基于最小子程序匹配的自动评分算法。
第六章总结了整个算法实现过程中主要工作,分析优缺点,并对后续的工作进行展望。
六、进度安排
20XX年11月01日-11月07日 论文选题、
20XX年11月08日-11月20日 初步收集毕业论文相关材料,填写《任务书》
20XX年11月26日-11月30日 进一步熟悉毕业论文资料,撰写开题报告
20XX年12月10日-12月19日 确定并上交开题报告
20XX年01月04日-02月15日 完成毕业论文初稿,上交指导老师
20XX年02月16日-02月20日 完成论文修改工作
20XX年02月21日-03月20日 定稿、打印、装订
20XX年03月21日-04月10日 论文答辩
七、参考文献
[1]王甜甜。结构语义相似的程序识别方法研究[D].哈尔滨工业大学, 2009.
[2]Gupta S, Dubey S K. Automatic Assessment of Programming assignment[J]. ComputerScience & Engineering, 2012, 2(1)。
[3]刘月霞,牛志尧,吴宁。面向大规模在线开放课程的编程题多特征综合自动评分方法[J].西安交通大学学报, 2016, 50(10):64-70.
[4]Jacobi R P, Ayalarincón M, Carvalho L G, et al. Reconfigurable systems for sequencealignment and for general dynamic programming.[J]. Genetics & Molecular Research Gmr,2005, 4(3):543.
[5]Guo P, Deng Y W, Zhang H Y. A CAPTCHA Image Recognition Algorithm Based on EditDistance[J]. Key Engineering Materials, 2011, 474-476:2203-2207.
[6]Al-Anzi F S, Abuzeina D. Toward an enhanced Arabic text classification using cosinesimilarity and Latent Semantic Indexing[J]. Journal of King Saud University - Computer andInformation Sciences, 2016.
[7]Ducasse S, phane, Rieger M, et al. A language independent approach for detecting duplicatedcode. In: ICSM[J]. 2000:109--118.
[8]Roy C K, Cordy J R. NICAD: Accurate Detection of Near-Miss Intentional Clones UsingFlexible Pretty-Printing and Code Normalization[C]// The, IEEE International Conference onProgram Comprehension. IEEE Computer Society, 2008:172-181.
[9]Baker B S. On finding duplication and near-duplication in large software systems[C]//Reverse Engineering,1995. Proceedings of, Working Conference on. IEEE, 1995:86-95.
[10]Baker B S. Parameterized Duplication in Strings: Algorithms and an Application to SoftwareMaintenance[J]. Siam Journal on Computing, 1997, 26(5):1343-1362.
[11]Juergens E, Deissenboeck F, Hummel B. Clone Detective - A workbench for clone detectionresearch[C]// IEEE, International Conference on Software En
[12]Higo Y, Kamiya T, Kusumoto S, et al. Method and implementation for investigating codeclones in a software system[J]. Information & Software Technology, 2007,49(9–10):985-998.
[13]Livieri S, Higo Y, Matushita M, et al. Very-Large Scale Code Clone Analysis and Visualization of Open Source Programs Using Distributed CCFinder:D-CCFinder[C]//International Conference on Software Engineering. IEEE, 2007:106-115.
相关内容推荐
-
计算机研究生开题报告范文
计算机研究生开题报告包括计算机系统结构、计算机软件与理论、计算机应用技术三个方向,不同计算机硕士专业研究主题各有特点,其开题报告形式却大体一致,下文以“PHP技术应用于中小企业网站开发”课题为例,拟定计算机研究生开题报告范文。...
-
软件开发开题报告模板精选
软件开发涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。如何写好软件开发毕业论文开题报告呢?这里我们给大家分享的是软件开发毕业设计开题报告模板。1、本课题的研究意义2、本课题的基本内容,预计可能遇到的困难,提出解...
-
计算机毕业论文开题报告
短短的几十年计算机的发展从无到有从大到小,从简单到复杂,从能够从事单一的功能发展到多功能,可谓是朝夕间变化万千,各行各业都离不开计算机这个万能的常用工具。计算机跟社会发展有着紧密的联系。它们相互影响着彼此。接下来是一篇计算机毕业论文开题报...
-
最新计算机毕业设计开题报告精选
开题报告是提高选题质量和水平的重要环节。是指开题者对科研课题的文字形式的说明材料,在课题方向确定之后,课题负责人在调查研究的基础上撰写的报请批准的选题计划。下面是我们为计算机专业的同学们准备的计算机毕业设计开题报告的范文。计算机毕业设计开...
-
gps导航计算机毕业设计开题报告精选
全球卫星定位系统(GPS)能全天候全天时提供高精度的位置、速度和时间信息,在军事和民用上显现出越来越重要的用途,其应用前景远远超出人们的想象。尽管GPS已成为高精度的导航定位系统,但它仍存在一些重大误差源。只有深刻理解这些误差,才能了解GPS的局限...
-
最新计算机硕士毕业论文开题报告范文
计算机自发明以来极大地改变了人们的生产生活,提高了工作效率和准确度,可以说是人类的重要发明之一。学术堂在这里为你提供了一篇计算机硕士开题报告的范文,作为写作论文之前的参考。题目:爱恩斯坦棋计算抓博弈系统的研究与实现1.研究背景:1.1人工...
-
网络专业毕业论文开题报告最佳范文
随着时代的发展,网络发展在生活中扮演者愈渐重要的角色,互联网+时代成为潮流主题,对于网络专业的学生们,毕业论文要求也越来越高,下面是小编整理的一篇网络毕业论文开题报告范文,欢迎大家阅读。...
-
javaweb毕业设计开题报告精选
JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java技术对Web领域的发展注入了强大的动力。以下是我们整理的javaweb毕业设计开题报告,希望对你有所帮助。题目:基于地质灾害群专结合监测预警系统的研制...
-
最新计算机硕士论文开题报告
众所周知,计算机包括软件和硬件两个方面。今天我们将从软件方面为各位硕士研究生们整理一份计算机硕士论文开题报告范文,欢迎各位鉴赏。
...
-
plc毕业设计开题报告
对于很多刚接触课题研究的学生对于如何撰写plc毕业设计开题报告比较茫然,不知道从何下手,往往因为不得要领,走了很多弯路,plc毕业设计开题报告一般包括课题来源、选题背景、研究现状、研究大纲、参考文献等等,下面我们就以PLC先进控制策略研究与应用为例...