李菊 馬軍超 陳寅




關鍵詞:代碼質量;應用型人才;實驗內容;實驗結果評價;實驗教學方式
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2023)08-0074-03
1 引言
隨著互聯網的快速發展,軟件產品的開發復雜度越來越高,各軟件企業也開始逐步重視軟件的代碼質量。無論是阿里發布的《Java開發手冊》,還是華為投入20億美元,計劃五年提高代碼質量,都充分突顯出軟件企業對軟件代碼質量的重視程度[1]。高質量代碼特性體現為:正確性、可讀性、高效性、穩定性、可維護性、可擴展性,因此編碼不僅要實現完整的功能,而且還要保證代碼具有良好的可讀性、高效性、穩定性、可維護性、可擴展性。好的編碼能力及編碼規范習慣是高質量代碼特性的保證,因此必須提升編碼能力及養成好的編碼規范習慣。
目前我國的高等教育分為研究型大學、高職院校、應用型大學三種類型,應用型大學與其他兩種類型的課程目標不同,應用型大學的課程以緊密對接企業人才需求,培養理論扎實、實踐能力強的高層次應用型人才為目標,強調應用理論知識解決實際問題的實踐能力,突出課程應用性[2-4]。因此必須要基于企業人才的發展新需求,不斷對課程的教學內容和教學方式進行改革,才能適應專業的發展,為企業人才需求提供強有力的支撐。
數據結構與算法是計算機相關專業的核心課程,也是促進計算機相關專業學生軟件設計水平提高的關鍵課程。目前應用型大學的該課程主要借鑒研究型大學的教學成果及經驗,在教學內容和考核方式等方面基本保持一致。然而隨著軟件技術的快速發展,及企業對軟件人才的素質更高的要求,在實際實驗教學過程中,逐漸發現一些影響學生編程能力培養及編碼規范養成的問題;因此為了培養適應專業發展需求的應用型人才,急需對現有應用型大學的數據結構與算法實驗進行教學改革。
2 數據結構與算法實驗教學中存在的問題
應用型大學的數據結構與算法實驗教學,主要存在以下三方面問題,這些問題嚴重影響著學生編程能力的提高及編程規范的養成。
2.1 實驗內容過于陳舊,與實際應用結合不緊密,實際編碼能力提升有待改善
應用型大學的人才培養,更應強調應用理論解決實際問題的能力,強調工程實踐能力。目前數據結構與算法實驗上機練習的內容多為傳統驗證性內容,局限于將課本的算法偽代碼驗證實現,雖然通過驗證性實驗,學生對數據結構與算法的原理和操作有了一定的了解,但不明白其應用價值[5]。例如表1中的上機實驗題為順序表操作實驗的內容,其他實驗內容也類似,內容大多為驗證性,且內容過于陳舊,導致學生容易出現抄襲傾向。實驗缺少與實際應用結合的綜合性內容,數據結構與算法理論較少與實際應用場景相結合,在完成實踐任務后并不知道如何應用到實際項目中,出現理論與實際脫節,沒有達到學以致用的目的。
2.2 實驗結果評價只注重代碼功能的正確性,不注重編碼規范問題
在軟件行業,項目開發均以團隊的形式開展。在項目開發過程中,團隊成員的良好編程規范習慣對成員之間的交流非常便利及高效,對軟件開發過程中的測試工作及其后期數據維護可以起到重要的作用[6]。目前數據結構與算法實驗結果評價針對學生提交的源代碼,只對編譯及實現功能的正確性進行判別,而往往忽視了代碼規范的問題,無法對學生的編碼是否規范進行判別,學生的編碼規范意識弱,導致代碼可讀性差,甚至代碼低效、穩定性及可擴展性差,代碼規范性沒法保證。例如圖1為學生的部分代碼,存在函數的輸入變量i含義不明確、for和else后缺少大括號、缺少注釋等規范性問題,導致代碼可讀性較差。
2.3 實驗教學中缺少學生代碼評審環節,缺乏學生之間的知識共享
目前所有的IT公司都離不開代碼評審過程,代碼評審是代碼問題發現的重要過程,通過代碼評審,分享者可以得到其他人的反饋,發現可能存在的問題和需要改進的部分,評審者也可以從他人的代碼中學到新東西[7]。但現有傳統的數據結構與算法實驗教學,多以上機實驗為主,實驗教學過程中,缺少學生代碼評審,教師與學生之間、學生與學生之間缺少分享交流。大多數學生認為上機實驗運行的功能結果正確,代碼質量即符合要求,無法從可讀性、高效性、穩定性、可維護性、可擴展性等方面,進一步審視代碼質量,導致無法得到除正確性以外的其他反饋,更無法從其他同學分享到更優秀的代碼。例如圖1所示為學生的代碼可讀性較差,同時由于缺少評審交流環節,學生不僅發現不了代碼可讀性差的問題,而且很難學習到可讀性更好的代碼編寫方式。
3 數據結構與算法實驗改革措施
為了更好地對接企業人才需求,針對當前數據結構與算法實驗課程中存在的問題,本次教學改革結合企業對軟件代碼質量的需求,以編碼能力提升和編碼規范養成為目標,圍繞數據結構與算法實驗課程的實驗內容、教學方法、教學評價三方面提出具體的改革措施。具體包括以下:
3.1 豐富實驗題庫,加強理論與實踐的聯系
現有的數據結構與算法實驗題庫題目數量較少,以深圳技術大學為例,該校的本課程的實驗題庫僅有150多道題,每個知識點最多5道,這些題目大多偏向于驗證性,多年未更新,較少與實際應用相結合。對于實驗題庫,增加具有實際應用場景的綜合性題,針對順序表、鏈表、字符串匹配、棧、隊列、二叉樹等知識點,一方面,從國內外知名企業搜集具有實際應用場景的面試或機試題,加入新題到題庫;另一方面,結合實際應用場景,設計新題到題庫。通過綜合性實驗內容,增強學生應用數據結構與算法理論解決實際問題的編碼能力[8-9]。例如表2為增加綜合類型實驗后的順序表操作實驗設計,其他實驗類似。
3.2 增加代碼規范評價結果,促進代碼編程規范養成
針對學生的代碼規范性無法保證的問題,在判題系統中加入代碼規范性評價功能。參考華為、騰訊、谷歌、阿里等IT企業的編碼規范,從學生源代碼的布局類、命名類、注釋類、邏輯類、冗余類、復雜類、內存類等方面的編程規范進行評價判分,表3為代碼規范評價的主要內容。通過評價結果,不僅可以讓學生意識到編碼規范的重要性,還可以讓學生發現自己代碼存在的規范性問題,從而促進編碼規范的養成。圖2 為增加代碼規范判別功能后的實驗結果評價界面,點擊代碼規范分,可以查看到代碼規范判別詳情,發現存在的代碼規范問題。
3.3 增加代碼評審教學環節,發現問題及學習優秀
鑒于代碼評審對代碼質量提升的重要性,參考IT 企業的代碼評審做法,在實驗教學增加代碼評審環節。每次實驗開始前安排一組同學,針對上節實驗的代碼,進行講解分享,老師和同學根據表4中的評審方案進行評審,分享及評審完成后,對共性問題進行總結,對好的做法進行提煉和推廣。這樣不僅可以發現可讀性、高效性、穩定性、可維護性、可擴展性等判題系統無法發現的問題,而且可以學習優秀編碼案例,從而促進編碼能力提升和編碼規范養成。
4 改革效果
深圳技術大學是廣東省和深圳市高起點、高水平、高標準建設的本科層次應用型大學,通過對數據結構與算法實驗的實驗內容、實驗結果評價、實驗教學方式三方面的教學改革實踐,促進了深圳技術大學學生的編碼能力提升及編碼規范養成,代碼質量得到顯著提升,更滿足企業人才需求。以下將從多方面進行分析。
(1) 期末成績。在考試難度相當的情況下,將深圳技術大學2019級和2020級物聯網專業的學生期末成績進行對比,由表5可知,平均期末成績提高8分,代碼規范得分提高4分,成績差異顯著,因此教學改革有助于編碼能力提升和編碼規范養成。
(2) 競賽成績。2022年深圳技術大學學生在多個全國性軟件類大賽中有了新的突破,在“藍橋杯大賽”中首獲全國一等獎3項、全國二等獎3項、全國三等獎7項,在首次參加的“RoboCom機器人開發者大賽”全國總決賽中獲全國一等獎2項、全國二等獎6項、全國三等獎7項,因此教學改革以后,深圳技術大學學生的代碼質量得到了顯著提升。
(3) 就業率。實施教改以后,深圳技術大學計算機相關專業學生有了更強的專業能力,就業率從2021 年的70%提升至2022年的79%,就業率有了顯著提升,因此教學改革以后,深圳技術大學培養的計算機人才更滿足企業需求。
5 結束語
本文針對應用型大學的數據結構與算法實驗課程存在的問題,從實驗內容、實驗結果評價、實驗教學方式三方面入手,提出了具體的改革措施。教學改革實踐結果表明,本文提出的教改措施,能較好促進應用型大學的學生編碼能力及編碼規范的養成,提升學生代碼質量,更符合企業對軟件人才的需求。為了進一步提升學生的軟件能力,在今后的教學中,仍將不斷優化教學方案,以讓應用型大學培養出更多符合企業需求的應用型人才。