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