- 相關(guān)推薦
c語言畢業(yè)論文開題報(bào)告
計(jì)算思維的本質(zhì)是抽象和自動(dòng)化。對于C語言程序來說,抽象就是使用程序、函數(shù)、函數(shù)調(diào)用以及數(shù)據(jù)類型、常量、變量、數(shù)組和鏈表等元素描述現(xiàn)實(shí)生活中的系統(tǒng)、功能、功能調(diào)用以及單個(gè)特征或特征組合等,自動(dòng)化則體現(xiàn)為函數(shù)內(nèi)部的語句在EIP寄存器加法操作支持下順序自動(dòng)地執(zhí)行以及函數(shù)之間的調(diào)用在內(nèi)存堆棧區(qū)支持下自動(dòng)地進(jìn)行跳轉(zhuǎn)。下面是小編為大家整理的c語言畢業(yè)論文開題報(bào)告,僅供參考,歡迎大家閱讀。
一、研究背景及研究意義
信息技術(shù)的快速發(fā)展加速了教育信息化的進(jìn)程,在線教育系統(tǒng)與測試系統(tǒng)的出現(xiàn)為學(xué)生提供了一個(gè)可以提高和檢測綜合能力的便捷途徑。另一方面,C語言教學(xué)在各大高校中都是必修課程之一,且在計(jì)算機(jī)相關(guān)課程教學(xué)中,針對某個(gè)理論性的知識點(diǎn)的考察,一般會以客觀題的形式給出。由于答案具有唯一性,通過簡單得匹配方式便能識別正確與否從而給出相應(yīng)成績。針對這類客觀題的自動(dòng)評分技術(shù)已經(jīng)相當(dāng)成熟,因此后續(xù)在自動(dòng)評分方向的研究中主要集中于主觀題的自動(dòng)評判。在過去幾年的積極探索階段到現(xiàn)有的實(shí)際研究成果來看,有關(guān)C語言知識的檢測中對編程題的考察是必不可少的。雖然檢測的形式各不相同(填寫空缺代碼塊完成完整程序,按題目要求編寫整個(gè)程序),但終究是為了考察學(xué)生掌握編程技巧及編程思想的程度。
本課題研究的主要目的是結(jié)合編程實(shí)現(xiàn)的特征,為一個(gè)正在初始運(yùn)營中的在線測試平臺提供一個(gè)能查重與自動(dòng)評分的功能模塊。其中最終評分包括兩個(gè)部分,一是對每個(gè)學(xué)生提交的程序代碼文件相互之間進(jìn)行相似度檢測,當(dāng)相似度超過預(yù)定閾值作為抄襲處理,此為查重檢測。二是將學(xué)生程序與模板程序匹配檢測相似度并由此計(jì)算最終得分。
程序語言與自然語言在各自適用領(lǐng)域上有較大差異,其語言雖然都有詞法、語法規(guī)則等,但編寫程序語言時(shí)并沒有自然語言那么的靈活,不會出現(xiàn)一詞多義,一義多詞,他只有固定的關(guān)鍵字,標(biāo)識符編寫規(guī)則,功能實(shí)現(xiàn)結(jié)構(gòu)等,所以較于自然語言來說識別起來要容易一些。國內(nèi)外對編程題相似度檢測及自動(dòng)評分都有不少的研究,現(xiàn)也有一些系統(tǒng)比較成熟。
目前,各大高校對C語言課程考察方式一般還是以傳統(tǒng)的紙質(zhì)化考試為主。
這樣的考試方法在人工閱卷的過程中存在著些許的不確定因素,隨著教育的普及,能力測試之后需要批改的試卷絕不是一個(gè)小數(shù)目。這單一單調(diào)的工作很容易使得批改人員疲憊不堪,從而閱卷出錯(cuò)率將會被動(dòng)的提高。利用計(jì)算機(jī)完成自動(dòng)閱卷將杜絕這一問題的出現(xiàn),同時(shí),其運(yùn)行速度快能及時(shí)的給學(xué)生反饋結(jié)果也沒有人的感官情緒,能公平公正的對待每一份試卷。
對于主觀題的自動(dòng)評分技術(shù)還在不斷的完善中,由于在主觀題的識別所需的技術(shù):人工智能、自然語言處理、模式識別等還處于起步階段。所以主觀題自動(dòng)閱卷技術(shù)不能一蹴而就,還需要不斷的實(shí)驗(yàn)研究。目前,探索開發(fā)出合理試用的主觀題自動(dòng)評分系統(tǒng)是一個(gè)技術(shù)難題,若能將開發(fā)的系統(tǒng)投入教學(xué)或是別的考察里面,將會大大的節(jié)省人力物力。
二、國內(nèi)外研究現(xiàn)狀
國外對文本相似度檢測的研究早國內(nèi),在20世紀(jì)中期,就有學(xué)者提出讓計(jì)算機(jī)同人工閱卷一般來對主觀題如作文進(jìn)行評閱。至今,經(jīng)過數(shù)多學(xué)者的致力研究,出現(xiàn)了許多與教育結(jié)合的應(yīng)用系統(tǒng),并已投入使用。在對自然語言的文本分析處理方法的研究同時(shí),隨著計(jì)算機(jī)教育的普及,程序代碼的檢測也在逐漸興起。
1966年,Ellis Page開發(fā)了一個(gè)模擬人工評分的系統(tǒng)Project EssayGrade(PEG),該系統(tǒng)是總結(jié)學(xué)生提交文本的特征向量,然后將文本的特征進(jìn)行量化,最后根據(jù)量化的結(jié)果對其文本進(jìn)行判分。
1967年,Halstead提出了用屬性計(jì)數(shù)法計(jì)算程序代碼之間的相似度,所謂的屬性是指代碼的某些度量值,如:空行的數(shù)目,字符量,語句量,控制結(jié)構(gòu)量等,在他的研究基礎(chǔ)之上,1977年Otteiistein設(shè)計(jì)了檢測FORTRAN編程語言的代碼抄襲檢測系統(tǒng),該系統(tǒng)基于屬性技術(shù)的相似度檢測技術(shù);趯傩约夹g(shù)求解程序代碼之間相似度的系統(tǒng)還有Faidhi和Robinson的程序抄襲檢測系統(tǒng),以及Grier設(shè)計(jì)的Accuse程序抄襲檢測系統(tǒng)。
單方面只考慮屬性計(jì)數(shù)而忽略程序的結(jié)構(gòu)組成,得出的代碼相似度比值準(zhǔn)確率較低,在1996年,Verco和Wise對Accuse程序抄襲檢測系統(tǒng)進(jìn)行了一系列可能性的測試,通過在源程序中加入不影響代碼運(yùn)行的字符串或用其他結(jié)構(gòu)代替原結(jié)構(gòu)等方式。在對測試結(jié)果分析研究之后指出:只是單純的增加供于檢測的程序?qū)傩詳?shù)量,在程序相似度檢測中并不能得到更加精確的檢測結(jié)果。
G.Whal首次提出了程序結(jié)構(gòu)方向的研究思路,通過分析程序的內(nèi)部結(jié)構(gòu)來匹配兩源代碼之間的相似度。在此后,學(xué)者們朝著這兩個(gè)方向開始研究,同時(shí)也有將二者結(jié)合研究的。
G.Whal設(shè)計(jì)的Plague系統(tǒng),Micheal Wise設(shè)計(jì)的YAP3系統(tǒng),Sim系統(tǒng)都是采用的程序結(jié)構(gòu)度量技術(shù)進(jìn)行研究。Donaldson是結(jié)合了屬性技術(shù)與程序結(jié)構(gòu)度量兩種技術(shù)完成對程序相似度的檢測。
還有用token(標(biāo)記)序列來表示程序的字符串匹配算法,是根據(jù)編譯原理技術(shù),將程序的語句進(jìn)行分詞的操作,然后將得到的單詞存入token序列。然后使用字符串匹配算法計(jì)算相似度。常用的字符串匹配算法有:最長公共子序列(LCS)算法、余弦算法、編輯距離(Levenshtein)算法等。采用這種方法的有Duploc、NICAD、Dup、Clone Detective、CCFinder、CP-Miner等。
現(xiàn)在使用比較廣泛是Online Judge系統(tǒng),簡稱OJ,是一個(gè)在線的判題系統(tǒng),系統(tǒng)通過對用戶提交的代碼進(jìn)行編譯和運(yùn)行,對于能夠運(yùn)行的程序通過預(yù)先設(shè)定的測試集來檢測代碼運(yùn)行的結(jié)果,以及運(yùn)行時(shí)間是否在規(guī)定范圍之內(nèi)。該系統(tǒng)最早使用在ACM-ICPC國際大學(xué)生程序設(shè)計(jì)賽和 OI 信息學(xué)奧林匹克競賽中。該系統(tǒng)的返回結(jié)果有7種:Wrong Answer:答案不完全正確;Time Limit Exceeded:
運(yùn)行超出時(shí)間限制;Memory Limit Exceeded:超出內(nèi)存限制;Output LimitExceeded:輸出超過限制;Runtime Error:運(yùn)行時(shí)錯(cuò)誤;Compile Error:編譯錯(cuò)誤;Accepted :程序通過。該系統(tǒng)采用的是動(dòng)態(tài)評分方式。
三、研究內(nèi)容
本文的主要研究內(nèi)容以及創(chuàng)新點(diǎn)有:
1)研究文本相似度檢測技術(shù),分別比較點(diǎn)陣圖法、空間向量的余弦算法、最長公共子序列LCS算法、最小編輯距離Levenshtein distance算法對源程序相似度檢測效果。提出基于LCS的C語言程序查重算法。并對源代碼進(jìn)行適用于LCS算法匹配的預(yù)處理操作,改進(jìn)匹配方式以提高算法匹配效率,提取源代碼的特征屬性求解閾值。
2)研究程序識別相關(guān)技術(shù),以及自動(dòng)評分的兩種常見方法:動(dòng)態(tài)評分;靜態(tài)評分。本文主要研究靜態(tài)評分方法,將程序抽象提取為SDG的表現(xiàn)形式,分析結(jié)構(gòu)語義對源代碼進(jìn)行預(yù)處理,并提出基于控制流程匹配度的C語言自動(dòng)評分算法。
3)分析C語言程序的結(jié)構(gòu),分析抽象語法樹的表現(xiàn)形式,將程序劃分為多個(gè)不同粒度的子程序,并轉(zhuǎn)換為結(jié)構(gòu)樹。運(yùn)用編譯原理技術(shù)分析數(shù)據(jù)依賴、控制依賴完成樹的構(gòu)建。因此提出基于最小子程序匹配的C語言自動(dòng)評分算法。
四、提綱
摘要
ABSTRACT
第1章緒論
1.1研究背景及研究意義
1.2國內(nèi)外研究現(xiàn)狀
1.2.1國外研究現(xiàn)狀
1.2.2國內(nèi)研究現(xiàn)狀
1.3本論文的主要研究內(nèi)容
1.4論文組織安排
第2章相關(guān)理論及技術(shù)介紹
2.1正則表達(dá)式
2.1.1正則表達(dá)式的符號元
2.1.2正則表達(dá)式的使用的規(guī)則
2.1.3Java字符串匹配
2.2編譯原理技術(shù)
2.2.1詞法分析
2.2.2語法分析
2.2.3語義分析
2.3系統(tǒng)依賴圖
2.3.1結(jié)構(gòu)化程序設(shè)計(jì)
2.3.2程序流程圖
2.3.3程序依賴圖
2.3.4系統(tǒng)依賴圖
2.4C語言
2.4.1C語言程序設(shè)計(jì)
2.4.2C語言結(jié)構(gòu)特點(diǎn)
2.4.3C語言基礎(chǔ)概述
2.4.4C語言代碼多樣性分析
2.5本章小結(jié)
第3章基于LCS的C語言程序查重算法
3.1代碼抄襲概述
3.2抄襲常用方法
3.3源代碼查重預(yù)處理
3.4程序代碼查重算法
3.4.1文本相似度算法
3.4.2LCS最長公共子序列
3.4.3閾值分析
3.4.4檢測代碼重復(fù)率
3.4.5算法分析
3.5實(shí)驗(yàn)結(jié)果及分析
3.6本章小結(jié)
第4章基于流程控制匹配的自動(dòng)評分算法
4.1流程控制結(jié)構(gòu)圖
4.1.1流程控制結(jié)構(gòu)劃分
4.1.2流程控制結(jié)構(gòu)劃分細(xì)節(jié)說明
4.1.3結(jié)構(gòu)依賴關(guān)系劃分
4.1.4結(jié)構(gòu)依賴關(guān)系劃分說明
4.2程序流程控制結(jié)構(gòu)圖
4.2.1代碼預(yù)處理
4.2.2自定義函數(shù)分析
4.2.3生成流程控制結(jié)構(gòu)圖算法
4.3程序流程控制結(jié)構(gòu)圖匹配算法
4.3.1匹配單位元素定義
4.3.2程序代碼自動(dòng)評分算法
4.3.3算法分析
4.4實(shí)驗(yàn)結(jié)果及分析
4.5本章小結(jié)
第5章基于最小子程序匹配的自動(dòng)評分算法
5.1子程序的概述
5.1.1子程序的定義
5.1.2定義基本語句單元
5.2基于結(jié)構(gòu)樹的程序中間表示
5.2.1代碼預(yù)處理
5.2.2結(jié)構(gòu)樹定義
5.2.3生成樹狀圖算法
5.3最小子程序匹配評分算法
5.3.1劃分最小粒度子程序
5.3.2子程序匹配描述
5.3.3子程序匹配的自動(dòng)評分算法
5.3.4算法分析
5.4實(shí)驗(yàn)結(jié)果及分析
5.5本章小結(jié)
第6章總結(jié)與展望
6.1結(jié)論
6.2展望
參考文獻(xiàn)
致謝
五、組織安排
整個(gè)論文包含個(gè)章節(jié),整體組織結(jié)構(gòu)如下所示:
第一章緒論,根據(jù)研讀的國內(nèi)外文獻(xiàn)簡要描敘一下本文所研究主題的背景、意義,然后介紹國內(nèi)外相關(guān)研究方法及成果,以及自己研究的內(nèi)容簡介。
第二章介紹了完成本文實(shí)驗(yàn)的相關(guān)理論知識:正則表達(dá)式的應(yīng)用、編譯原理技術(shù)、程序與圖的關(guān)系、C語言編碼特性、多樣性等。
第三章介紹程序查重算法動(dòng)態(tài)求解最長公共子序列。
第四章介紹了基于流程控制匹配的自動(dòng)評分算法第五章介紹了基于最小子程序匹配的自動(dòng)評分算法。
第六章總結(jié)了整個(gè)算法實(shí)現(xiàn)過程中主要工作,分析優(yōu)缺點(diǎn),并對后續(xù)的工作進(jìn)行展望。
六、進(jìn)度安排
20XX年11月01日-11月07日 論文選題、
20XX年11月08日-11月20日 初步收集畢業(yè)論文相關(guān)材料,填寫《任務(wù)書》
20XX年11月26日-11月30日 進(jìn)一步熟悉畢業(yè)論文資料,撰寫開題報(bào)告
20XX年12月10日-12月19日 確定并上交開題報(bào)告
20XX年01月04日-02月15日 完成畢業(yè)論文初稿,上交指導(dǎo)老師
20XX年02月16日-02月20日 完成論文修改工作
20XX年02月21日-03月20日 定稿、打印、裝訂
20XX年03月21日-04月10日 論文答辯
七、參考文獻(xiàn)
[1]王甜甜。結(jié)構(gòu)語義相似的程序識別方法研究[D].哈爾濱工業(yè)大學(xué), 2009.
[2]Gupta S, Dubey S K.Automatic Assessment of Programming assignment[J].ComputerScience & Engineering, 2012, 2(1)。
[3]劉月霞,牛志堯,吳寧。面向大規(guī)模在線開放課程的編程題多特征綜合自動(dòng)評分方法[J].西安交通大學(xué)學(xué)報(bào), 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.
【c語言畢業(yè)論文開題報(bào)告】相關(guān)文章:
漢語言文學(xué)畢業(yè)論文開題報(bào)告范例03-03
畢業(yè)論文開題報(bào)告要求03-18
畢業(yè)論文開題報(bào)告的范文03-19
畢業(yè)論文開題報(bào)告封面03-18
銀行畢業(yè)論文開題報(bào)告03-08
畢業(yè)論文開題報(bào)告格式03-26
畢業(yè)論文開題報(bào)告范例12-07
教育畢業(yè)論文開題報(bào)告12-13
中文畢業(yè)論文開題報(bào)告11-28