孫婷 遼陽職業技術學院
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語言編程經驗。漫游網絡存儲空間可以讓學生隨時隨地訪問自己的程序數據。基于動態測試和靜態分析的綜合技術可以在一定的智能水平上模擬教師對學生語言源程序的客觀評價和反饋。統一認證技術的應用,為學生使用該自學系統取得了簡單的效果。