馬小蕾
(內蒙古民族大學計算機科學與技術學院,內蒙古 通遼 028000)
在教學方式上存在的問題由來已久,工程教育理念滯后[1]。在C++語言的教學中,理論學時偏多,實驗學時較少。從內蒙古民族大學計算機科學與技術專業近兩年年的達成度報告上來看,“高級語言程序設計”的課程目標分為以下三類。
課程目標1:掌握計算機中數據的表示形式、數據類型與運算符的基本概念;掌握函數、數組、指針的基本概念;掌握結構體類型、類和對象、繼承和派生的基本概念。能夠對實際問題進行抽象描述,將實際問題抽象轉化為計算機可處理的問題并對其建模求解。
課程目標2:掌握程序的三種基本控制結構;掌握面向過程和面向對象程序設計的基本思想,能對具體問題進行算法表述,并能結合相關科學原理和數學模型正確表達計算機領域復雜工程問題。
課程目標3:掌握面向過程和面向對象程序設計的方法和技巧,并能熟練進行程序設計;具有對計算機系統自底向上和自頂向下的設計開發能力。
對學生本門課程的評價和評分采取下述方法。
對課程目標的達成情況采用定性與定量相結合的評價方式。
(1)定性評價。學院評價小組及“高級語言程序設計”課程組對課程目標及課程目標分解能否有效支撐畢業要求相關指標點,課程內容、教學方法能否有效支持課程目標實現,課程考核方式、主要評價依據是否合理進行了多次討論和修訂,在課程期末考試階段,采用機考組卷方式,對機考題目類型進行確認,對是否覆蓋指標點及課程目標,是否側重非標試題注重能力考核等內容進行分析。
(2)定量評價。定量評價通過計算課程目標達成度完成。
(1)課堂表現成績:主要考核課上回答問題、做練習和小組討論的參與情況,主要評價依據是課堂提問、課堂練習和小組討論等。
(2)在線測試成績:主要考核對每堂課知識點的預習以及課后的復習情況,主要評價依據是網上測試。
(3)作業成績:主要考核學生對課堂知識點的復習、理解和掌握程度,主要評價依據是網上提交作業。
(4)期末考試成績:主要考核學生對面向過程程序設計的基礎知識、類與對象的基本概念和程序設計方法的掌握程度,主要評價依據是機考形式考試,主要題型為單項選擇題、判斷題、程序填空題、程序改錯題和程序設計題。
在課程教學大綱中按優秀、良好、合格、不合格四個檔次給出了成績構成項的詳細評分標準,依據學生對各課程目標相關知識點的掌握、運用、動手操作程度以及課堂整體表現情況、在線測試結果、作業評判結果、期末考試成績等進行量化打分,最終計算出單個課程目標達成度評價值,具體每個成績構成項的量化評分標準細則見課程的教學大綱。
針對課程目標以及評價標準,分析學生成績,總結近兩年的本院學生在本門課程上存在的問題。由于基礎學時過長,對學生的能力培養泛化,面向過程和面向對象兩階段的教學設置,使得學生產生基礎遺忘等問題。在教學中,將程序設計基礎和面向對象課程進行合并,設置為高級語言課程;將教學內容分為兩大板塊,面向過程部分及面向對象部分。課程采用2019版培養方案和2019版教學大綱指導教學,設置明確的課程目標,將教學內容與學生能力培養相對應;在大綱中設置多樣化的過程性考核方式,全面評價學生的學習情況;制作課程目標達成情況分析報告,對課程的教與學進行定性定量評價。
以2020-2021第一學期為例,課程目標1、2、3中均有未達到預定期望值的學生(見圖1圖2),并隨著課程目標難度的增加,未達預期學生人數顯著升高。這表明學生在學習過程中,對實際問題的數據抽象能力不足,不能很好地進行思維轉換。其中課程目標1未達到預期人數為31人,占比41.3%。末考的平均分相對不高,對應的試題類型為程序改錯1題,表明部分學生基本理論知識尚不扎實,沒有很好地進行預習和復習。課程目標2未達到預期人數為38人,占比50.6%,表明有一半以上的同學對算法和編程理念掌握不扎實,對算法類編程知識掌握不是很好。課程目標3未達預期人數為38人,占比50.6%,表明有一半以上同學對類和對象的概念掌握不牢固,類的設計不能很好地完成。

圖1 課程目標1達成情況

圖2 課程目標2達成情況
個體分析:綜合學生成績分析,在對不及格試卷和未達到預定期望同學試卷進行分析發現,學生對于程序設計問題不具備良好的數據抽象能力,不能很好地建立數據模型;并且對于循環語句、函數問題、類和對象等基礎知識掌握不牢固。在課程目標3未達到預期的38人當中,絕大部分對類的程序設計題目不能作答,僅能進行數據類型的定義,算法設計部分基本為空白。在對不及格學生的統計過程中發現,基本知識的掌握、數據類型的定義都不是很好掌握,特別是程序設計題目并未作答,反映出部分學生學習興趣度不高,缺乏獨立學習問題的能力。
在課堂上,教師以講練結合的方式為主,但理論講解時間偏長,對于剛入學初次接觸編程語言的大一學生而言,晦澀難懂。由于并未積極的采取科學的教學方式,缺乏新意,導致課堂授課效果不佳,部分學生對學習失去了興趣,對自身產生了懷疑。這與創新能力培養人才培養目標的理念不符。
部分學生學習主動性和自覺性差。在教學中雖然采取講練結合,輔以實驗,但由于C++語言理論枯燥,難度大,學生只是初步掌握了C++語法知識和調試技巧,缺乏主動學習和構建知識的動力,不能獨立地對問題進行抽象并運用知識加以解決,有惰性,學習氛圍和學習風氣不濃。
我院現有專業課教師雖然具有深厚的理論功底,但是缺乏大型工程實踐經驗,在實際教學過程中會出現重理論輕實踐的問題。同時由于師資不足,專業課老師授課學時較多,缺少進修和提高自身教學水平的機會,很大程度上影響了教學質量。
在今后的教學中需要增加基本理論知識的測試,以示例形式引導學生學習,培養興趣;進一步增加類和對象的教學內容,多展示實例,以小組討論形式調動學生積極性并進行分析解答,實時評價,及時發現問題并解決問題,提高教學質量。
根據以往教學情況,加強課前和課后自測,增加案例、圖例,開拓學生視野,調動學生積極性,讓學生主動積極參與進來。
從多視角來看,大部分同學達到了學習預期目標。對于初次接受這種未知領域的編程技術,學生的接受能力符合預期,可以在課程末期進行工程性實踐,讓學生理解這門課程的實際應用。具體措施如下。
對于初入大學的第一門專業課,學生的興趣程度,從某種意義上講,取決于任課老師,只要學生產生興趣,就會主動地學習這門課程,也會為后續的專業學習打下良好的基礎。因此任課教師的第一堂課要精心準備、精心講授,以激發學生正確的學習動機。隨著“十三五”規劃的完成與“十四五”的開始,IT行業是發展的重要行業,IT人員的薪資持續增高。無論是就業、考研、自主創業,C++語言和面向對象編程都是計算機專業畢業生的基本要求。第一堂課可以展示我院優秀學員創業情況,就業情況,同時展示一些小游戲,圖像的處理具體說明為什么要學習C++語言,它的應用場景有哪些,激發學生的學習動力。
培養學生的編程思想是C++語言程序設計教學的重要目標,掌握C++語言相關技術,具備編程思想,可以將理論知識轉化為實際運用,從而提高分析問題、解決實際開發問題的能力。
從歷屆的教學評價和學生反饋的情況來看,學生從離開高中那種題海模式到大一學習這門需要理論和實際相結合的課程,這種跨度對學生們來說較大,因此需要教師們在引導教學上多下功夫。案例教學在學校其他工科課程中已經起到了良好的效果,但不同的學科和不同層次的學生應采取相應的教學方式,所以如何運用案例教學是至關重要的。好的案例和授課方式能激發學生的求知欲,有助于學生理解C++語言枯燥的語法知識,同時也能提高分析問題解決問題的能力。因此采取案例教學,對于學院的學生來說,首要是具有趣味性,激發學生的學習興趣,增強課堂教學教學效果;其次案例的選擇要符合教材的特點,具有針對性,由淺入深。
首先,在第一堂課的講解中,可以展示采用C++語言編寫的游戲,例如,人機大戰。讓學生們討論,這個游戲存在的缺陷。從而引出這個游戲所用到的C++語言的知識有哪些,也是這本書所學習的內容,當本學期課程結束時,同學們會獨立開發出類似人機大戰的游戲。而在每堂課的講解時,需要根據教學大綱、教學內容,實時配套相應的案例。例如,在講解“子函數”時,可以以學生們感興趣的基因編輯為例,引入動態規劃算法中的編輯距離,結合課件具體講解子函數的用途、定義的格式等,抓住學生的注意力,提高教學效率。
其次,教學過程應該是多樣化的、靈活的、因人而異,不能局限于教師講解,要以多種形式輔助。例如,在冒泡排序的學習中,由于排序過程比較抽象,可以用視頻的形式展現,網上有許多關于冒泡排序的舞蹈視頻,生動形象,比教師直接講解對學生的觸動和理解影響更大一些。
再次,案例教學也不應局限現場教學,在學生課上對案例深入了解并掌握教師所傳授的理論知識后,教師可以適當布置程序設計任務、線上作業,PTA平臺練習等。學生模仿課上的教學案例,完成本次布置任務的程序設計之作。可以根據案例的難度,動態地讓學生選擇自主設計或者是小組合作設計,開展探究性的高級語言程序設計實踐活動,教師適當輔以指導,讓學生也能夠掌握C++語言程序設計的方法和要領。
最后,在學生完成小組討論和程序設計以及線上作業后,教師應對本次運用案例情況做出科學總結,說明學生設計存在的問題和優點,對存在的問題給出應對解決措施,同時要鼓勵學生,并對優秀的作品進行展示,提高學生的積極性。
本文簡單分析了內蒙古民族大學計算機專業學生學習“高級語言程序設計”課程的現狀;為培養適合當前社會需要的人才,提升本院學生的競爭力,提出了符合本院學生特點的案例教學法,以調動學生的積極性,激發學生學習的主動性,打好編程語言的基礎。■