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