摘要:基于c++程序設計課程的特點、重要性及目前教學中存在的問題,從教學目標、教學內容設計、實驗過程、課程評價及能力提高等教學的全部環節,系統地闡述課程教學改革方法與實施過程。通過教學的改革,提高學生程序編寫、調試和分析問題的能力,激發學生學習興趣,達到應用型人才培養目標。
關鍵詞:c++程序設計;教學改革;編程能力
1、存在的問題
我國高等教育已經進入大眾化教育階段,隨著高等教育入學率的不斷提高,很多高校學生的總體素質也在下滑。如何基于學生的現狀,有針對性地組織教學,對于提高教育教學質量至關重要。c++程序設計課程是軟件工程等專業的專業基礎課,也是實踐性很強的課程。它的教學目標是培養學生對專業學習的興趣,掌握c++程序設計的基本語法,提高程序編寫、調試、分析能力,養成良好的編程規范,初步建立起工程意識,為后續專業課程的學習、軟件項目實訓及今后從事軟件開發打下良好的基礎。
目前,很多軟件學院采用“3+1”的教學模式,在校的理論教學被壓縮到3年完成,課程學時非常緊張,以遼寧科技大學軟件學院為例,傳統教學中的c語言程序設計(64學時)和c++程序設計(64學時)兩門課程被壓縮到一個學期96學時加以完成,任務難度大。因為該課程的教學效果直接影響著后續課程學習,有很多學生正是因為沒有入門,對專業沒有興趣,導致后續核心專業課程的學習困難。很多C++程序設計教材,例題主要還是為了配合講解c++語法的知識點而設置,前后章節的例題聯系很少,從而導致學生不知道前面的程序對后面章節有什么用處。因此需要對理論教學與實驗教學內容進行有機整合。很多學生實驗準備不充分,導致課堂實驗未能完成任務要求,程序拷貝抄襲現象嚴重。課后教師只是根據學生實驗情況給予成績評價,卻很少對掌握知識有欠缺的學生進行后續幫助。針對上述問題,結合學生現狀,積極應對,在教學的各個環節進行系統探索,提出行之有效且又具有可操作性的方案。針對c++程序設計課程,很多教師基于個人教學經驗積累,項目驅動式,工程教育模式,提出相應改革方案。
2、教學改革與實踐
2.1 教學目標
軟件工程本科畢業生的培養目標是軟件工程領域的工程應用型人才。因此對于C++程序設計課程而言,就是要求學生掌握c++程序的基本語法,能夠編寫簡單的應用程序,培養學生程序設計、調試和分析問題的能力。其宗旨就是要增加學生的實際動手能力,通過實驗環節來提高。計算機語言是軟件專業人員與計算機交流的工具,計算機是嚴格的老師,只有通過計算機檢驗的程序才是合格的。
2.2 教學內容的設計
c++程序設計課程的教學知識點是相對固定的,改革的主要目標是教學內容的整合與案例的設計。為達到教學目標,要求教師能夠將理論教學與實驗教學有機結合,設計好理論教學案例與實驗教學內容。在教學內容設置上,根據教學的知識點,以實用性、設計性案例為主,綜合性、趣味性案例為輔。實驗教學內容要與理論教學案例相聯系,前后章的實驗內容相聯系,做到案例驅動教學,在全部實驗結束后,整合在一起的就是完整的小型應用軟件。因為是入門課程,案例難度不能太大。這樣,學生會知道學習課程的目的,才會有成就感。在教學中,我們的做法是在數組、函數、指針、結構等教學知識點的講授中,在精講理論的基礎上,教學案例重點介紹線性結構的數據的基本操作,如插入,刪除,排序,查找等,隨著知識點的不斷深入,不斷完善這些案例,最后在面向對象章節中,將前面的基本操作整合在一起,形成綜合性案例(學生管理系統),該系統中可以用到數組、函數、指針、結構、類、異常處理等幾乎C++程序涉及的所有知識點。
2.3 實踐環節
實踐環節包括課前實驗準備、課堂完成實驗任務、課后反饋實驗結果等。對于課前實驗準備要求學生根據事先布置的實驗任務完成準備工作,對于稍微復雜的問題可以由學生自行組織討論,并且要每位學生形成書面資料。實驗準備時要強調代碼的可讀性、可重用性和可維護性,早日使學生建立起工程意識。實驗準備內容包括實驗所需的源程序代碼和程序運行所需的測試數據及預期的運行結果等。沒有實驗準備,課堂實驗的目的性不明確,實驗質量也無從談起。在這一點上,要求任課教師必須加強督促與檢查,讓學生養成習慣。課堂實驗環節中,要求學生盡量獨立完成實驗任務,特別是語法錯誤,要力爭自行解決,才會有很多親身的真實感受和經驗積累,否則學生程序調試能力無法提高,且容易形成對教師的依賴性。因為學生人數多,光靠一名任課教師無法幫助學生全部完成任務。教師主要負責宏觀指導,對學生出現的關鍵的技術問題給予提示與指導。每次實驗要對部分學生進行抽查,主要檢查學生是否真正完成,是否存在抄襲等問題。實驗結束時,學生要將正確的實驗代碼在實驗準備資料上更正并保留,作為作業上交,同時提交電子版,包括實驗代碼及運行結果等內容的實驗報告。實驗結束后,教師要及時批閱實驗報告,對于未完成實驗要求者,特別是實驗雷同者,要給予幫助或嚴肅批評,并督促重新完成實驗任務。還應對學生實驗環節出現的普遍性問題利用課余時間由教師組織學生進行小組討論,并給予講評。
2.4 考核
課程考核以期末筆試(50%)、上機測試(30%)、平時實驗及作業實驗(20%)的方式進行綜合評價??己伺c課程的教學目標相一致,側重于程序編寫、調試能力的考核,因此要增加實驗綜合測試環節(上機測試),作為實驗成績評價的主要依據,如果實驗測試環節不合格,則總評成績記為不合格。日常實驗可以占20%的比重,期末考試主要考察學生的程序閱讀、程序完善、程序編寫等,目前以筆試方式進行,今后可采用上機測試方式,取消筆試測試環節。實踐證明該考核方式符合課程的培養目標和示范性軟件學院應用型人才培養目標。
2.5 能力提高
除傳統課堂實驗外,還開展課程設計、典型程序分析與設計等實踐環節,并組織c++程序設計興趣小組,C++程序設計大賽等。對學習興趣濃厚且學有余力的學生引導他們參加國際大學生程序設計競賽(ACM)小組,通過學生參加ACM小組系統的日常訓練,強化其程序設計、調試、分析問題與解決問題能力;通過參加競賽,培養學生的自信心和學習興趣,并明確自身不足。近幾年已經形成了一個以老帶新,在專業教師指導下的ACM小組,學生們每天利用業余時間進行編程訓練及競賽所需基礎知識的補充,在遼寧省省賽、東北四省賽中均有學生獲獎,成績斐然。對基礎和理解能力相對不足的學生加強督促與幫助,采取“任務式”輔導,通過任課教師的指導,完成正常實驗或作業中出錯的程序調試,避免學生產生厭學情緒;另外將學生分組,參與大學生科研訓練項目或適當布置一些難度較大的綜合性作業,讓學生自主查閱資料,拓展視野,提高水平,并培養團隊合作意識。
3、教學改革效果
通過上述環節的努力,學生的學習興趣、程序編寫能力和程序調試能力有了很大提高。做到引導優秀學生參加ACM競賽,提高水平,拓展視野;基礎差的學生力爭不掉隊。另外,通過該課程的鍛煉,也為后續課程數據結構、算法設計等課程在編程規范、編程習慣、編程能力等方面奠定了基礎??陀^上學生能力的提高要靠教師與學生共同努力,特別是學生的主動學習與思考。
4、結語
以案例驅動式為主要教學模式在教師中達成一致,在學生中得到肯定與好評。因為是專業入門課程,學生理解上有一定難度,特別是軟件學院學生起點稍低,因此,教師的責任心與投入也是至關重要的。教育是良心工程,需要教師適應新形勢,付出更多的努力,給予學生更多的督促與幫助,共同提高教育教學質量。