曹曉葉
摘 要:程序設計類課程是計算機專業基礎課程,也是非計算機本科的基礎選修課程。通過分析語言教學現狀,針對傳統程序設計課程中學生參與度不高的問題,提出基于項目驅動的團隊協作教學模式。課堂教學以網絡爬蟲系統設計為模擬項目,通過改變語言教學體系,不僅激發了學生學習興趣,而且提高了學習效果,有效培養了學生的計算思維與綜合協作能力,使學生課堂參與度接近90%。
關鍵詞:項目驅動;團隊協作;程序設計課程;爬蟲系統
DOI:10. 11907/rjdk. 192344 開放科學(資源服務)標識碼(OSID):
中圖分類號:G434文獻標識碼:A 文章編號:1672-7800(2020)002-0180-04
英標:The Reform and Practice in Project-Driven Programming Course
英作:CAO Xiao-ye
英單:(School of Computer Science and Engineering, South China University of Technology, Guangzhou 510640,China)
Abstract: Programming course is the basic course of computer specialty. It is also the basic elective course for non-computer undergraduate. Based on the analysis of the current situation and problems in language teaching, in order to solve the problem of insufficient participation of students in traditional programming courses, this paper proposes a project-driven teamwork teaching model. Classroom teaching takes the design of web crawler system as a simulation project to change the language teaching system. This model not only stimulates students interest in learning, but also improves their mastery of classroom content, so that students can constantly improve their computational thinking and comprehensive collaborative ability in the process of learning. Students participation in the classroom is close to 90%.
Key Words: project driven; team cooperation; programming course; crawler system
0 引言
計算機課程特點決定了教學需要以實踐為基礎,培養學生的創新能力與動手能力。目前高校程序設計類課程主要采用傳統教學模式,以理論指導實踐為原則,以教師為中心,而忽視了對學生應用能力的培養。基于項目的教學法就是為解決這一問題而提出的。本文通過在計算機課程,主要是程序設計類課程中選取合適的項目,將傳統教學方法與現代教學方法進行有機結合,以激發學生的學習積極性;從結構、算法及代碼等不同方面培養學生的實踐能力以及分析、解決問題的能力;教學以學生為中心,提升學生的學習主動性。
項目驅動的教學是基于建構主義理論發展起來的,其核心教育理念是讓學生學會積極解決問題,并構建自己的知識框架;強調在“做中學”,認為一切學習都源于經驗,主張學校學習要與實際生活相聯系,按照人類解決問題的思維方式安排教學活動。項目驅動教學法在國外已成為一個研究熱點,并形成一種教育教學理論。1979年,博雷泊最早將這種教學理論應用于語言教學實踐中;1987年,耶登提出應用任務型教學法設計課堂教學的過程、具體步驟與相關技巧。目前國內對項目驅動教學法的研究大多集中于一線教育工作者,一線教師根據自己的教學實踐提出各自的教學模式與教學過程。雖然在操作過程上有所差異,但都是以學生為中心,強調項目設置與小組協作[1,3]。
針對國內外目前主要教學案例,本文參考探究式教學、案例教學等教學模式,提出以學生為中心,以項目為載體。在教學活動中,學生在教師的組織與引導下,自主完成一個具體且有實際應用價值的產品設計開發。學生在設計開發過程中學習專業知識,實現對所學知識的融會貫通,并對其作進一步深入探索。
1 項目驅動教學模式
1.1 項目驅動教學模式涵義
項目驅動教學模式是教師通過設計一個典型“項目”而開展的教學實踐活動。項目選取以從簡單到復雜、從單一到綜合為原則,將教學知識點融入其中。引導、啟發、鼓勵學生以小組為單位,通過教師的理論講解先掌握相關基本知識點,然后分配學習任務,開展項目實踐活動,使學生在實踐中發現問題,從而加深對知識的理解。完整的項目實踐使學生能夠將相關知識點融會貫通,并將理論與實踐相關聯,在真實情景中學習,增強知識遷移能力[1]。
1.2 教學模式特點
項目驅動教學模式以學生為中心,在整個教學活動中,學生是完成項目的主體,教師是項目設計者,以項目為主線,將知識點包含在整個項目過程中,學生通過項目接收與掌握知識點。其主要特點如下:①對于學生而言,提供了發展如計算思維、合作溝通能力等綜合技能的機會,相比傳統課堂教學,其對學生自主學習能力的要求更高,培養了學生的學習自信心,改善了其學習態度;②對于學習過程而言,學生帶著問題尋找解決方案,在學習活動中不斷對方案進行評估,不斷反思學習活動中的失誤,在特定框架內作出決定,可活躍課堂氣氛,提升學生學習熱情;③在知識傳授方面,教師從關注知識與技能轉變為關注學生,從給出知識與技能轉變為引導學生進行自主學習,學生從被動學習變為主動學習,從個體學習轉變為合作探索學習;④在課程教學內容修訂方面,在原有課程內容中強化課程理念,在項目案例設計中注重調動學生的主動性與積極性,強調對學生科學研究精神與職業道德的培養[2]。
2 項目設計與實施
項目選擇對于課程改革效果起著至關重要的作用,教師在項目選擇上要遵循以下原則:①項目一定要能用到課程相關知識點,使學生能將理論知識與實踐技能相結合;②項目要有一定的實際應用價值,讓學生在完成項目過程中獲得成就感;③項目要難易適中,太難的項目學生可能會選擇放棄,太容易則缺乏挑戰性,無法調動學生的積極性。項目選定之后,教師首先要通過一定理論講解讓學生掌握基本知識點,然后讓學生以小組為單位,根據不同分工劃分角色,明確各個角色的學習任務,引導學生開展項目實踐活動。讓學生按照軟件生命周期,完成需求分析、軟件設計、編碼實現及軟件測試等環節,通過小組答辯展示課程學習成果[3]。
整個項目設計與實施包括項目設計、項目實施與答辯幾個環節,在每個階段要求學生提供關鍵性文檔材料或完成作品,比如設計階段要有需求說明文檔,實施階段要有詳細功能設計文檔,答辯環節要有完成作品的系統展示。這些關鍵性的驗收資料確保教師能全過程地跟蹤學生學習進度和學習情況,并進行階段性檢查與控制,以保證學生按照計劃完成項目。
3 項目改革實踐
在高級語言程序設計課程中,課堂教學以網絡爬蟲系統設計為模擬項目,改變了傳統語言教學體系,不僅激發了學生學習興趣,而且提高了對課堂內容的掌握程度,有效培養了學生的計算思維和綜合協作能力。
網絡爬蟲是一種自動抓取網頁,并解析與提取網頁內容的程序。網絡爬蟲從一個給定的URL(Uniform Resource Locator)種子集出發,下載種子集中URL對應的網頁并解析網頁,提取新的URL加入URL隊列,同時存儲目標資源,如文字、圖片、視頻等,逐條訪問隊列中的URL,直到URL隊列為空或爬蟲任務目標達成為止[4]。
爬蟲項目實施步驟一般分為數據采集、數據處理與數據存儲3個階段[9]。第一步數據采集是指獲取想得到內容URL中的html內容,然后經過第二步處理得到相應字段,最后通過第三步存儲到數據庫表中。爬蟲功能詳細設計流程實例如圖2所示。
本設計中爬蟲功能實現主要流程如下:①訪問百度題庫考研政治目錄,獲取各個章節題目數量及章節ID等信息;②通過對各章的chapterid等參數進行拼接,形成各章節題目對應的URL鏈接;③將各章題目的qid等信息存儲到臨時變量中;④通過對qid和題目詳情信息URL的拼接,獲取unicode 編碼題目信息的html文本信息;⑤通過手寫一個工具類UnicodeToCN 將unicode字符轉化成中文字符;⑥通過Java正則表達式獲取題目各字段信息;⑦利用上述試題信息建立相應試題類對象,并插入到數據庫中。
主題爬蟲在常規爬蟲基礎上添加了主題相似度計算模塊。主題爬蟲設計目標是優先爬取與主題最相關的網頁,過濾與主題無關的網頁,以此限定主題爬蟲搜索范圍,提高工作效率。主題爬蟲一般工作流程如下:由用戶預先指定目標主題,給定URL種子集;下載種子集中URL對應的網頁,解析網頁并提取新的URL;根據主題相似度計算算法預測URL與主題相關度,過濾與主題無關的URL;將與主題相關的URL加入URL隊列,并且根據主題相似度從高到低排序,優先爬取與主題相似度高的URL對應頁面,同時儲存任務目標資源,如文字、圖片、視頻等,直到URL隊列為空或爬蟲任務目標達成為止[5-6]。
融合LDA的卷積神經網絡主題爬蟲適用于有充足標簽化語料,且目標主題屬于語料標簽集范圍內的情形[7]。如圖3所示為主題爬蟲工作流程:①設定URL種子集和目標主題,URL調度器初始化URL隊列;②從URL隊列中取一條URL,記錄URL相似度,爬取URL對應網頁,交給HTML解析器;③HTML解析器解析網頁,提取所有符合設定提取規則的URL,以及主題相似度計算依據的文檔;④用訓練好的LDA主題模型計算文檔主題向量,用訓練好的word2vec模型將文檔轉化為詞向量矩陣,輸入卷積神經網絡文本分類器;⑤得到網頁文檔的主題相似度,如果相似度高于設定閾值,從當前網頁保存目標資源,同時賦予提取的URL相似度權重,加入URL隊列,如果相似度低于設定閾值,則舍棄該網頁與所有URL;⑥URL隊列進行URL去重,按照URL的相似度排序;⑦重復步驟②~⑥直至URL隊列為空,或爬蟲任務目標達成為止。
其中,URL去重是爬蟲不可或缺的部分。爬蟲記錄已爬取過的URL列表,并對后續提取到的相同URL進行過濾,以避免重復爬取同一頁面。實驗中使用的方法來自python爬蟲框架scrapy,對URL進行MD5處理再存儲到哈希表中。MD5是一種消息摘要算法,能將較長的URL字符串轉化成128位散列值。該方法能較好地避免沖突,對內存需求也較低。URL隊列使用的數據結構是優先級隊列,能快速查找相似度最高的URL并自動進行排序[8]。
分類問題評價指標主要有召回率(recall)、精確率(precision)和F1 Score。
主題爬蟲相關文檔可以分成4組:主題爬蟲爬取到的相關文檔(A)、主題爬蟲爬取到的不相關文檔(B)、相關但主題爬蟲沒有爬取到的文檔(C)、不相關且沒有被主題爬蟲爬取到的文檔(D)。
則召回率recall:
[recall=AA+C]
精確率precision:
[precision=AA+B]
F1 Score:
[F1Score=2*recall*precisionrecall+precision*100%]
召回率體現主題爬蟲爬取與主題相關文檔的能力,精確率體現主題爬蟲判斷文檔是否屬于該主題的能力,兩者通常呈負相關,所以同時采用F1 Score值作為綜合評價查全率與查準率的指標。
4 項目實驗與評價
為了驗證項目系統在實際網絡環境中運行的性能,設計了簡單的驗證實驗。實驗爬取目標是百度百科詞條頁面,設定爬取主題為“體育”。使用python模塊requests爬取網頁,然后使用python模塊BeautifulSoup解析爬取到的網頁,以提取想要的內容。
用于判定相似度的文本取自頁面的詞條說明文本,其HTML標簽為
注意到每個頁面都有一個內置的關鍵詞列表,位于HTML標簽的content屬性中。因為沒有確切的網頁標簽,所以將該關鍵詞列表中包含“體育”關鍵詞的頁面作為主題相關頁面。
在運行過程中將詞條說明文本輸入主題相似度計算模塊,計算網頁主題相似度并加入URL隊列,對后續提取到的相同URL進行過濾去重。URL隊列是優先級隊列,會自動按照權重排序。URL調度器每次選取相似度權重最高的URL優先進行爬取。
實際運行結果統計如表1所示。
從實驗結果可以看出,融合LDA的卷積神經網絡(LDA-CNN)相比傳統卷積神經網絡(CNN)主題爬蟲具有一定性能優勢。
5 效果與結論
通過采用基于項目驅動的教學方法,實施改革的班級與以往班級相比,學習效果明顯提高,突出表現在:①學生學習主動性高于傳統課堂,氣氛活躍,學生參與性高;②學生程序設計綜合能力提高,很多學生在程序設計大賽中取得優異成績;③學生創新意識增強,個別小組對項目提出改進與創新方案,培養了學生自我構建知識、運用知識與知識創新的能力。項目驅動教學模式有力推動了計算機課程教學的創新發展,對于其它課程的教學改革也有一定參考價值。
參考文獻:
[1] 張文曉. 任務驅動法在計算機文化基礎中的應用[J]. 中國教育技術裝備, 2013(12):88-90.
[2] 許太安. 高校《計算機文化基礎》課程教學改革探究[J]. 教育教學論壇, 2014(36):285,289.
[3] 張敏. 以計算思維為導向的C語言程序設計課程案例教學法研究[J]. 微型電腦應用,2015,31(9):63-65.
[4] 王金峰,彭禹,王明,等. 基于網絡爬蟲的新浪微博數據抓取技術[J]. 中小企業管理與科技(上旬刊),2019(1):167-168.
[5] 于娟,劉強. 主題網絡爬蟲研究綜述[J]. 計算機工程與科學,2015(2):231-237.
[6] GUO S,BIAN W,LIU Y,et al. Research on the application of SVM-based focused crawler for space intelligence collection[J]. Electronic Design Engineering,2016,17:28-30.
[7] 汪巋,費晨杰,劉柏嵩. 融合LDA的卷積神經網絡主題爬蟲研究[J]. 計算機工程與應用,2019(11):123-128.
[8] 田磊. 主題爬蟲搜索策略的設計與實現[D]. 北京:北京郵電大學,2017.
[9] 盧愛臣,魏建宇,馬文彬. 以項目為牽引的計算機CDIO創客教學模式研究[J]. 軟件導刊(教育技術),2019, 18(3):36-37.
[10] KALCHBRENNER N, GREFENSTETTE E, BLUNSOM P. A convolutional neural network for modelling sentences[C]. Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics,2014:655-665.
[11] 蔡光波. 面向主題的多線程網絡爬蟲的設計與實現[D].蘭州:西北民族大學,2017.
[12] 趙濤,張恩旭,黃家才,等. 基于項目驅動的混合式教學探索與實踐[J]. 電氣電子教學學報,2017,39(5):89-92.
[13] 謝方方,謝志英,李艷. 基于“思維導圖”的《C語言程序設計》課程教學改革探討[J]. 軟件導刊(教育技術),2019,18(3):26-28.
[14] 王欣,張毅. 基于“項目驅動”的新型教學模式研究[J]. 東北電力大學學報,2012(2):112-115.
(責任編輯:黃 健)