999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于GitHub平臺的問題驅動式編程實驗教學方法

2017-09-28 02:22:35曾少寧李慧袁秀蓮
計算機教育 2017年9期
關鍵詞:教學方法

曾少寧++李慧++袁秀蓮

摘 要:針對編程實驗教學過程中,存在教師分配任務和學習提交實驗代碼過于耗費時間、教師評測實驗代碼和匯總成績完全依賴手工等問題,分析使用云服務和開源協同開發平臺功能以輔助編程實驗教學的方法與過程,提出一種基于GitHub平臺的問題驅動式編程實驗教學方法,具體闡述在兩個學期Android、Web等編程課程實驗教學中對可行性和有效性的驗證。

關鍵詞:教學方法;GitHub;交互式學習;編程語言

0 引 言

GitHub是一個開源協同開發平臺,支持代碼庫(repository)、問題跟蹤(issue)、項目分支(fork)、代碼提交(commit)、代碼合并請求(pull request)等功能,可用于支持大規模開源和商業軟件項目的開發,其最吸引人關注的研究點有GitHub開源貢獻模式[1-2]、基于GitHub的商業軟件開發[3-4]、社交編碼[5-6]、社交行為模式[7-8]、協同工作流[9-10]、在線分布式軟件開發[11]、共同創作平臺[12]、推薦算法[13]及教育應用[14]。

最近,GitHub官方還推出一個面向教育的課堂工具[15],與其他用于教育的開源技術類似[16-17],GitHub也可以作為一種教學工具,用于支持軟件工程專業的協同學習模式[14]。之前的研究表明,使用GitHub替代傳統教學資源與教學方法,可以改進教學過程[18-19];同時,GitHub所提供的版本控制功能也可以集成到本科計算機科學課堂中[20]。一些教學工作者使用GitHub的服務優化教學過程,如專門為軟件開發教學在GitHub上創建的UEC軟件庫[21]、在課堂中使用Github版本控制功能[22]以及使用GitHub的開源協同工作流支持課堂教學[23]。有研究案例表明,GitHub的協同開發特性可以很好地支持計算機科學和軟件工程等專業學生的學習活動[24]。實際上,學生在學習過程上可以使用GitHub開展協同學習實驗[25]。此外,使用GitHub布置編程課堂作業,也是一種很常見的輔助教學方法。然而,想要在GitHub上順利執行完整的教學過程,只是將GitHub作為一種輔助教學工具使用是遠遠不夠的。基于GitHub平臺的問題驅動式編程實驗教學方法,可用于支持開放協同的編程教學實驗。

1 相關工作

GitHub可以看做一種特殊形式的云服務,而云技術在教學中的應用由來已久。雖然GitHub的互聯網托管服務相對更適合軟件工程等計算機專業教育,但是一直以來都有其他形式的云技術應用于教學過程[26]。在教學中使用云計算技術具有很多的優勢[27-28],如有專門為信息技術教學創建的教育云平臺[29],也有專門為材料科學基礎課程創建的一種高度交互的云課堂技術[30]。此外,國內外許多高校都使用云技術創建虛擬化計算實驗室[31]。實際上,云計算方法本身就非常適合用來支持實驗教學過程[32],然而相對于一般的云技術,GitHub所提供的開源項目開發特性更加適合計算機編程教學,如協同開發模型、社交編碼[33]、版本控制、免費代碼庫等。

基于GitHub平臺的教學應用可以分成3類:第1類是課堂工具,其中包括前面提到的GitHub官方推出的課堂工具,但是這些工具是一種適用于教學資料管理和教學活動管理的通用技術,而不是專門針對編程教學的工具;第2類是將GitHub作為一種內容托管服務,通常只是利用GitHub開源源代碼庫所支持的無限空間存儲和分發教學資料,如布置作業;最后1類應用相對更復雜一些,它們將協同開發模型融合到教學過程中。通常,師生都會使用GitHub的社交編碼特性,如提交代碼、請求合并、評論等。我們也曾經提出過一種基于GitHub平臺的協同式實驗教學方法[34],但是編程是一種解決問題的過程,教學中應培養學生使用代碼解決問題的能力,而不僅僅是教授編程技能。

實際上,無論是開源項目或是商業項目,都在使用GitHub的問題跟蹤功能跟蹤和管理軟件缺陷(Bug)。在GitHub上修復一個開源項目缺陷的基本過程如下。

在這個過程中,用戶、開發者和核心開發者一起協作,使用GitHub提供的代碼庫、分支、代碼提交、評論、標簽、合并請求等功能修復一個問題。經過恰當的調整,這個過程就可以用來支持編程教學活動,實現一種問題驅動式教學方法,從而更高效地鍛煉和培養學生解決問題的能力。

2 問題驅動式編程教學方法

根據編程實驗教學的特點,如果按照前面的GitHub解決問題過程開展編程實驗教學活動,就必須對解決問題過程的角色進行調整,才能最終設計出符合實驗教學要求的過程。

2.1 設計教學過程

在GitHub跟蹤和修復問題的過程中,如果結合實驗教學的需求,用教師與學生等相關角色替代開源協同開發的角色,并且將這個過程中的活動調整為實驗教學活動,就可以得到一種問題驅動式實驗教學方法。

在該方法中,教師和學生都使用相同的問題、代碼庫、分支、提交、評論、標簽、合并請求等功能完成實驗教學中的各種活動。教師在這個過程中扮演著核心開發者的角色,負責創建課程代碼庫、檢查作業代碼和給學生作業評分;學生則根據實驗問題要求編寫和提交代碼。當學生通過合并請求提交實驗作業時,教師會檢查作業,通過評論功能指導學生解決作業中的問題;如果教師決定接受并合并學生的請求時,學生就算是完成實驗并且會獲得相應的實驗分數。在這個過程中,開放協同開發平臺的特點使得所有學生的全部實驗活動都是互相可見的。我們的課程實驗發現,這種方式對于編程學習過程非常有好處,但是為了順利完成整個編程實驗,我們還需要解決兩個問題:一是自動識別學生身份;二是自動生成學生的期末總評分。

2.2 自動識別學生身份

這個過程的問題是GitHub本身并不可能支持學生賬號與學號的關聯。學生賬號都是自行在網站上注冊的,記錄和跟蹤學生賬號會帶來額外的繁重工作,但是新方法不應該增加教學工作的負擔。那么,該如何確定哪一位學生提交了代碼,以及他/她所提交代碼對應的問題號是哪一個呢?使用GitHub的版本控制功能,恰恰能解決這個問題。在每一次代碼提交中,GitHub都會跟蹤所有發生修改的文件,包括文件增加或刪除的代碼行。此外,在一次代碼提交中所有新創建、修改或刪除的文件都會被記錄下來。在以創建問題的方式布置實驗任務時(見表2),教師需要設計一個實驗要求,讓學生在代碼中留下一個可以鑒別學號的線索,如以學號作為文件夾或文件名。圖1所示為實驗課程庫(hzuapps/java-web)中的一個代碼提交記錄,里面包含修改過的文件記錄,其中就可以看到學生學號的線索(se1414080902203),因此這個線索就可以在評分程序中用于關聯學生賬號與學號。endprint

2.3 自動評分系統

在使用信息技術輔助教學過程時,自動考核是其中要考慮的最重要問題之一[35]。只有支持合理的評分方式,一個教學方法才稱得上真正有效。GitHub提供了一套開發者應用編程接口(API)[36],允許開發者編程抓取代碼庫的開發活動數據,包括前面提到的貢獻者、問題列表、合并請求、提交代碼等,因此,在編寫Java評分程序時,第1個任務就是抓取課程代碼庫所發生的活動數據,整個評分過程如圖2所示。

我們編寫的Java程序的第2個任務是分析從課程代碼庫抓取的活動數據。由于實驗要求中定義了學生身份線索(參見2.2),因此這個程序可以將每一個問題映射到一個學號上,然后它會記錄所有的實驗活動,包括請求數、提交數、修改文件數等,最后,程序會根據數據分析結果為每名學生生成一份實驗成績報告。例如,表3顯示了課程代碼庫“hzuapps/java-web”中登錄名為“Mr-bingo”的學生成績報告,這名學生實驗成績為100分。滿分列指每一類數據的最高分值,而平均值顯示的是整個班級中每一類數據的平均值,然后,每一項數據得分可以參照平均值計算得出。需要特別說明的是,請求數是指教師接受請求的數量(參見2.1)。這個接受請求的動作是由教師評閱作業時手工完成的,而不是評分程序自動完成的。這個Java評分程序只負責采集和統計正確作業(已接受)的得分以及自動生成學生的實驗成績報告。

3 教學方法的實踐及結果

為了驗證所提出方法的可行性,我們在2門課程的編程實驗教學過程中實踐了問題驅動式實驗教學方法,分別是“基于Android的移動應用設計與開發”和“基于Java EE的高級網頁設計”。我們使用Java編寫數據抓取程序,通過GitHub開發者API抓取實驗活動數據,包括請求數、提交數、用戶、評論等,再根據這些數據評估教學方法的有效性。在程序抓取到數據后,有時需人工處理少量出現問題的數據。具體地,需要進行2個人工處理操作:①刪除所有沒有關聯到一個有效問題號的數據;②刪除未能解析到一個有效學號的數據。

3.1 基于Android的移動應用設計與開發課程實驗

這個課程(2016年春季)一共有4個班級162名學生選課,都使用同一個GitHub代碼庫(hzuapps/android-labs)。我們一共從數據中獲取到162個有效問題號,但是有一些問題并沒有任何的請求和提交數據,如圖3和圖4所示,這是因為這個課程并不是一個必修課程,一些學生可能在提交問題后選擇中途退出課程。

這個實驗課程一共設置了9個作業,其中包括5個必選作業和4個可選作業,這表示所有學生必須有5個以上請求獲得接受,如圖3(虛線)所示,有29.6%的學生完成了規定的實驗;同時,一共有83個問題出現4個請求,另外有111個問題出現3個請求,換算成比例分別是51.2%和68.5%。全部學生發送的平均請求數量為4.735個,稍低于合格實驗數量(5個),但在正常的范圍之內,完成實驗的學生數量也符合正態分布。

為了準確評估學生的實驗表現,還需要進一步分析學生的代碼提交數量和修改過的文件數量,如圖4所示,每一個學生平均修改的文件數量為17.710個,而平均提交代碼次數為7.136次,這個數字高于平均請求數(4.735)。請求數量較低的原因是一些學生會在一次請求中提交多次作業的代碼。除此之外,一些學生可能會在一次實驗中多次提交代碼,如修改之前的錯誤。經過統計,我們發現學生大約需要1.5次提交代碼才能完成一個請求。按照問題關聯數據的分析,有50個問題(30.8%)出現了7次以上提交代碼,而這個數字與平均請求數更接近一些,因此有必要在評分時考慮提交數和修改文件數所體現的實驗工作量。

3.2 基于Java EE的高級網頁設計課程實驗

第2個課程(2016年秋季)有2個班級共79名學生選課。這些數據都來源于GitHub庫“hzuapps/java-web”。我們從代碼庫一共獲得79個有效問題,同時也抓取了請求數、提交數、修改文件數等數據,具體如圖5和圖6所示。這個課程一共有8個實驗,其中只有1個是選做實驗。

課程數據分析得到的平均請求數為6.835,比較接近要求的7個實驗數,意味著這兩個班級的學生完成實驗情況非常好,如圖5所示,一共有30個問題(38.0%)有7個以上合并的請求,另外有67個問題(84.8%)有4個合并的請求,這些學生至少可以得到合格以上的成績;如圖6所示,在提交代碼次數和修改文件數量上,它們的平均值分別是12.6和20.4,因此選修這個課程的學生至少需要1.8次代碼提交才能完成一次請求,這表明這個課程的學生在完成實驗過程中投入了更多的時間和精力,但可能是由課程難度造成的。

4 結 語

隨著GitHub逐漸成為一個最流行的開源軟件開發平臺,出現了許多基于GitHub社交編碼服務、特性和方法的教學方法,而且GitHub也越來越多地被用作教學工具,然而相對于它所提供的工具功能,這個平臺的社交編碼方法對于編程學習的作用更大。我們提出一種問題驅動式編程課程實驗教學方法,更注重培養學生解決問題的習慣和能力。這個方法使用GitHub的許多核心功能,如代碼庫、分支、提交代碼、合并請求等,可以很好地支持編程實驗教學活動。我們在兩個編程課程中實踐了這個新的教學方法,結果證明這個教學方法有效。未來,我們將探索這個教學方法在非計算機編程課程上的應用可行性。

參考文獻:

[1] Tsay J, Dabbish L, Herbsleb J. Influence of social and technical factors for evaluating contribution in GitHub[C]//ICSE. Hyderabad: ACM, 2014: 356-366.endprint

[2] Guzman E, Azócar D, Li Y, et al. Sentiment analysis of commit comments in GitHub: An empirical study[C]//Working Conference on Mining Software Repositories. Hyderabad: ACM, 2014: 352-355.

[3] Peterson K. The GitHub open source development process[J]. Mayo Clinic, 2013(1): 1-10.

[4] Kalliamvakou E, Damian D, Blincoe K, et al. Open source-style collaborative development practices in commercial projects using GitHub[C]//37th IEEE International Conference on Software Engineering. Florence: IEEE, 2015: 574-585.

[5] Dabbish L, Stuart C, Tsay J, et al. Social coding in GitHub: Transparency and collaboration in an open software repository[C]//CSCW 2012 Computer Supported Cooperative Work. Seattle: DBLP, 2012: 1277-1286.

[6] Thung F, Bissyande T F, Lo D, et al. Network structure of social coding in GitHub[C]//2013 17th European Conference on Software Maintenance and Reengineering.Washington D C: IEEE, 2013: 323-326.

[7] Mcdonald N, Goggins S. Performance and participation in open source software on GitHub[C]//CHI '13 Extended Abstracts on Human Factors in Computing Systems. Paris: ACM, 2013: 139-144.

[8] Yu Y, Yin G, Wang H, et al. Exploring the patterns of social behavior in GitHub[C]//Proceedings of the 1st International Workshop on Crowd-Based Software Development Methods and Technologies. Hong Kong: ACM, 2014: 31-36.

[9] Rahman M M, Roy C K. An insight into the pull requests of GitHub[C]//Proceedings of the 11th Working Conference on Mining Software Repositories. Hyderabad: ACM, 2014: 364-367.

[10] Tsay J, Dabbish L, Herbsleb J. Let's talk about it: Evaluating contributions through discussion in GitHub[C]//Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering. Hong Kong: ACM, 2014: 144-154.

[11] Marlow J, Dabbish L, Herbsleb J. Impression formation in online peer production: Activity traces and personal profiles in github[C]//Proceedings of the 2013 Conference on Computer Supported Cooperative Work. San Antonio: ACM, 2013: 117-128.

[12] Longo J, Kelley T M. Use of GitHub as a platform for open collaboration on text documents[C]//Proceedings of the 11th International Symposium on Open Collaboration (OpenSym). San Francisco: ACM, 2015: 1-2.

[13] Yu Y, Wang H, Yin G, et al. Reviewer recommender of pull-requests in GitHub[C]//IEEE International Conference on Software Maintenance and Evolution.Victoria: IEEE, 2014: 609-612.endprint

[14] Zakiah A, Fauzan M N. Collaborative learning model of software engineering using Github for informatics student[C]//2016 4th International Conference on Cyber and IT Service Management. Jakarta: IEEE, 2016: 1-5.

[15] Github classroom[EB/OL]. [2017-05-18]. https://classroom.github.com/.

[16] Stracquadanio G, Yang K, Boeke J D, et al. BioPartsDB: A synthetic biology workflow web-application for education and research[J]. Bioinformatics, 2016, 32(22): 394.

[17] Izbicki M. Open Sourcing the Classroom(Abstract Only)[C]//ACM Technical Symposium on Computing Science Education. Memphis: ACM, 2016: 723-723.

[18] Murray J. Open education: A revolution of resources and community[C]// TCC Worldwide Online Conference. Honolulu: TCC,2014: 65-72.

[19] Kamvar Z N, Lópezuribe M M, Coughlan S, et al. Developing educational resources for population genetics in R: An open and collaborative approach[J]. Molecular Ecology Resources, 2016, 17(1): 120-128.

[20] Bonakdarian E. Pushing Git & GitHub in undergraduate computer science classes[J]. Journal of Computing Sciences in Colleges, 2017, 32(3): 119-125.

[21] Goto T, Homma T, Tsuchida K, et al. Software development education based on UEC software repository[M]. Berlin: Springer, 2012: 55-65.

[22] Griffin T, Seals S. GitHub in the classroom: Not just for group projects[J]. Journal of Computing Sciences in Colleges, 2013, 28(4): 74.

[23] Zagalsky A, Feliciano J, Storey M A, et al. The emergence of GitHub as a collaborative platform for education[C]//The ACM Conference on Motivation and Dynamics of the Open Classroom CSCW 2015. Vancouver: ACM, 2015: 1906-1917.

[24] Feliciano J, Storey M A, Zagalsky A. Student experiences using GitHub in software engineering courses: A case study[C]//International Conference on Software Engineering Companion. Washington D C: IEEE Computer Society, 2016: 422-431.

[25] Kertesz C Z. Using GitHub in the classroom: A collaborative learning experience[C]//2015 IEEE 21st International Symposium for Design and Technology in Electronic Packaging. Brasov: IEEE, 2015: 381-386.

[26] Ercan T. Effective use of cloud computing in educational institutions[J]. Procedia-Social and Behavioral Sciences, 2010, 2(2): 938-942.

[27] González-Martínez J A, Bote-Lorenzo M L, Gómez-Sánchez E, et al. Cloud computing and education: A state-of-the-art survey[J]. Computers & Education, 2015(80): 132-151.

[28] Liou W K, Bhagat K K, Chang C Y. Beyond the flipped classroom: A highly interactive cloud-classroom(HIC) embedded into basic materials science courses[J]. Journal of Science Education and Technology, 2016, 25(3): 460-473.endprint

[29] Yokoyama S, Yoshioka N, Shida T. Cloud in a cloud for cloud education[C]//International Workshop on Principles of Engineering Service-Oriented Systems. Zurich: IEEE, 2012: 63-64.

[30] Burd S D, Luo X, Seazzu A F. Cloud-based virtual computing laboratories[C]//Hawaii International Conference on System Sciences. Hawii: IEEE, 2013: 5079-5088.

[31] Khmelevsky Y, Voytenko V. Cloud computing infrastructure prototype for university education and research[C]//Western Canadian Conference on Computing Education. Kelowna: ACM, 2010: 8.

[32] Yang G Z, Zhou F, Zhu Z. The application of SaaS-based cloud computing in the University Research and Teaching Platform[C]//International Conference on Intelligence Science and Information Engineering. Wuhan: IEEE, 2011: 210-213.

[33] Lima A, Rossi L, Musolesi M. Coding together at scale: GitHub as a collaborative social network[J]. Eprint Arxiv, 2014(7): 25-35.

[34] 曾少寧. 基于GitHub平臺的協同式實驗教學方法[J]. 計算機教育, 2016(12): 144-148.

[35] Zamyatina O M, Mozgaleva P I. IT implementation in the educational process of future engineers by means of project activities and competences assessment[C]//Global Engineering Education Conference. Berlin: IEEE, 2013: 1170-1176.

[36] Github Developer. REST API v3[EB/OL]. [2017-05-18]. https://developer.github.com/v3/ .

(編輯:宋文婷)endprint

猜你喜歡
教學方法
初中英語寫作教學方法初探
甘肅教育(2020年2期)2020-09-11 08:01:42
教學方法與知識類型的適宜
數學復習教學方法
高中體育教學方法初探
學周刊(2016年23期)2016-09-08 08:57:30
淺談高等數學中教學方法的創新
實用型中醫人才培養中慕課教學方法的探討
文言文教學方法實踐初探
中學語文(2015年21期)2015-03-01 03:52:15
高中文言文教學方法之我見
中學語文(2015年21期)2015-03-01 03:52:15
初中數學教師不可忽視的幾種教學方法
散文百家(2014年11期)2014-08-21 07:17:18
語文閱讀教學方法略談
主站蜘蛛池模板: 国产美女丝袜高潮| 中文字幕啪啪| 久久久成年黄色视频| 国产成a人片在线播放| 国产在线视频福利资源站| 国产成人AV男人的天堂| 亚洲精品无码专区在线观看 | 亚洲欧美一区二区三区图片| 91精品专区| 97一区二区在线播放| 在线观看亚洲天堂| 久久久国产精品免费视频| 国产精品自拍露脸视频| 全免费a级毛片免费看不卡| 成人免费一级片| 久久精品人人做人人综合试看| 91欧美在线| 久久久久人妻一区精品| 久久77777| 区国产精品搜索视频| 欧美激情综合| 国产精品男人的天堂| 美女一级毛片无遮挡内谢| AV无码一区二区三区四区| 久久久受www免费人成| 91毛片网| 国产精品美乳| 久久久久亚洲精品无码网站| 国产精品大尺度尺度视频| 在线观看的黄网| 国产精品自在在线午夜区app| 美女毛片在线| 手机在线免费不卡一区二| 成人综合久久综合| 黄色网址免费在线| 欧美日韩免费观看| 国产精品亚洲综合久久小说| 成人国产一区二区三区| 亚洲成人播放| 国产成人无码综合亚洲日韩不卡| 好吊妞欧美视频免费| 国产福利影院在线观看| 欧美日本在线一区二区三区| 亚洲性一区| 国产午夜看片| 亚洲综合日韩精品| 97人人模人人爽人人喊小说| 国产精品性| 先锋资源久久| 欧美日韩高清| 日本爱爱精品一区二区| 青青草一区| 欧美性精品| 香蕉99国内自产自拍视频| 91久久国产综合精品| 国产麻豆精品在线观看| 日韩东京热无码人妻| 亚洲人成网站18禁动漫无码| 国产伦片中文免费观看| 久久精品丝袜| 欧美色亚洲| 成人免费午夜视频| 国产人前露出系列视频| 5555国产在线观看| 国产一级毛片在线| 日韩精品视频久久| 99久久无色码中文字幕| 97视频在线观看免费视频| 在线欧美日韩| 日日拍夜夜嗷嗷叫国产| 国产xx在线观看| 无码又爽又刺激的高潮视频| 国产精品美女自慰喷水| 国产成人盗摄精品| 无码高潮喷水在线观看| 视频二区国产精品职场同事| 国产福利在线免费观看| 精品视频一区二区三区在线播 | 欧美有码在线| 91黄视频在线观看| 久久黄色毛片| 欧美一级专区免费大片|