戴慶天 張旭
本文以高校程序設計基礎類課程《C++程序設計》為例,從實驗課開設的背景、實驗課的授課方式和內容,以及與工程實踐的結合等方面,對高校程序設計類基礎實驗課程進行了綜合的闡述。教學反饋證明,相關的程序設計實驗課程,不僅加深了學生對程序設計理論的認知,還提高了學生的基本編程能力,在學期末都能獨立完成相關的課程設計題目,取得了理想的授課效果。
一、引言
《C++程序設計》是計算機類和電子信息類本科生的一門大類基礎課程,它是為學生掌握當前最基本的面向對象程序設計方法而設置的。通過本課程的學習,使學生比較熟練地掌握C++語言的語法規則、基本概念和常用簡單算法,掌握基本的程序設計過程和技巧;具備初步的高級語言程序設計能力和編程經驗,能夠熟練應用集成環境進行C++語言的編寫、編譯與調試,在此基礎上增加面向對象的基本知識,掌握C++輸入輸出流操作,以及類的基本定義和使用。
二、課程現狀
C++程序設計課程總共72學時,其中理論課56學時,實驗課16學時。實驗課內容涵蓋基本表達式與語句、函數、數組、指針、結構體、類與重載、繼承與派生、多態與類模板等8個主要知識內容。
目前通用的C++程序設計教材均配有實驗上機指導書。傳統的C++程序設計實驗課,主要是實驗教師講解本節課程的理論內容,并進行程序的演示。實驗教師在程序演示結束以后,依據上機指導教材,給學生布置實驗課任務。實驗課任務基本就是挑選兩到三個上機指導教材的題目,讓學生進行編程練習。實驗教師根據課上學生的完成情況以及課下實驗報告的撰寫情況,給學生相應的實驗課程部分成績。
這種傳統的C++程序設計實驗課的上課方式,可以使學生在學習完章節的理論知識后,針對所學的內容,進行上機訓練,消化鞏固理論課的知識要點,更加形象的去了解相關的只是內容。起到一定的輔助作用。但這種方式對于程序設計能力的提升有限。在大數據時代,學生通過多種渠道就可以找到相關內容的開源代碼。由于不同的同學對于程序理解的程度差別很大,這樣的教學方式對有一部分的學生來說,并不會起到提升程序代碼編寫能力的目的。
三、課程改革的目的與內容
目前,大數據和人工智能技術快速發展,計算機技術已經嵌入到社會發展的各個領域。因此,社會上對于大學生的程序應用能力也提出了更高的要求。傳統的程序設計課程教學方式,并不能有效提升學生的程序設計能力和程序內涵的理解能力。鑒于這樣的變化,做出一定的實驗課程的調整和改革,以提高學生的程序設計能力,就顯得尤為重要。
目前,多數學校的C++程序設計這門課程是在大一上學期開課,是大一新生學習的第一門編程語言。很多學生第一次接觸相關類似的學習內容,在理解上會有一定的適應過程。因此,實驗課程采取了一種循序漸進,由易到難,逐步構建的思路。讓學生首先去做一些簡單的數學題目的程序設計,這些數學題目是經過篩選,用純粹的傳統數學方式求解很困難的題目,讓學生建立解答題目的程序思維,然后慢慢推進,對于較復雜的程序題目,拆解成多個小的部分,使得學生建立模塊化的概念。對于同一個問題,可以在學生不同的學習階段,反復拿出來進行練習,通過不同的思考方式,使學生掌握程序設計的內核,培養解決問題的程序化思考方式。
每節實驗課,實驗教師會根據題目的難度,出3-4個編程題目。這些題目都是經過挑選的,不再使用上機指導教材。每個題目都有不同的難度。不同學習程度的同學,完成的題目難度就會有所區別,這樣通過學生課上完成的情況,就能掌握學生的學習狀況,下一次課程,就會進行相應的調整。動態化的去進行實驗課程的教學。同時,這種區分度明顯的題目設置,可以使實驗教師更好地通過學生完成的情況,給出相應的更加合理的實驗課程分數。
以經典數學題目“百雞問題”為例,可以先讓學生用純數學方式思考,發現無法直接解答。這個時候,就引導學生用程序方式解答,根據價格,公雞母雞小雞最多有多少個,然后列出判據條件,用程序語句寫出來,就能很快算出結果。讓學生們對于用程序解答題目產生興趣。在學到函數的內容時,還可以拿出來用函數的方式去解答。在學到類的構建時,還可以用類的繼承方式去編寫程序解答。這樣,通過不同方法解答一個類似的題目,是學生建立起來程序思維,更好地理解程序的內容。培養學生的程序解答能力,在學生家里起來這樣的意識以后,就可以更好地開展實驗課程的教學。
四、課程改革的結果
本次C++程序設計實驗課程的改革調整,使得學生更好地建立起來程序化思考問題的意識,對于電信類和計算機類的大一學生,具有積極的意義。學生們程序設計能力整體上都有了一定的提高,對于后續課程的學習大有裨益。
五、結語
C++程序設計是大部分學校大一學生學習接觸的第一門程序語言課程,此課程的目的就是使學生建立程序化思維能力,更好地解決相關問題,提高編程能力。本次實驗課程的改革,提高了學生程序設計實踐的能力,為學生后續課程的學習打下了較好的基礎。(作者單位:東北大學秦皇島分校)