梅冠華 康燦 顧媛媛
摘 要 《計(jì)算機(jī)軟件技術(shù)基礎(chǔ)》是高等院校非計(jì)算機(jī)專業(yè)本科生的專業(yè)基礎(chǔ)課,課程對(duì)于學(xué)生的學(xué)習(xí)、工作和生活具有重大的指導(dǎo)意義,由于該課程專業(yè)跨度大、涵蓋內(nèi)容廣、實(shí)踐性強(qiáng),因此講授和學(xué)習(xí)難度較大。通過對(duì)學(xué)生特點(diǎn)和該課程傳統(tǒng)教學(xué)方式的深入分析,提出了一些行之有效的教學(xué)手段與學(xué)習(xí)方法,在實(shí)際教學(xué)中取得了較好的效果。
關(guān)鍵詞 軟件基礎(chǔ) 教學(xué)設(shè)計(jì) C++
當(dāng)前,計(jì)算機(jī)軟件技術(shù)已經(jīng)深入到各行各業(yè),已經(jīng)并將繼續(xù)發(fā)揮巨大的推動(dòng)作用。因此,對(duì)于非計(jì)算機(jī)專業(yè)的工程技術(shù)人員來說,若能掌握一定的計(jì)算機(jī)知識(shí),則可以很方便地與計(jì)算機(jī)專業(yè)的技術(shù)人員一起,開發(fā)適用于本行業(yè)的相關(guān)軟件。[1]合理的本科生培養(yǎng)應(yīng)該是使得本科生對(duì)于本專業(yè)的知識(shí)有深入扎實(shí)的掌握,同時(shí)又能對(duì)其他方面的相關(guān)知識(shí)有廣泛涉獵,這樣方能游刃有余、從容不迫,以不變應(yīng)萬變。當(dāng)今社會(huì),需要的正是這種復(fù)合型、創(chuàng)新型的人才。因此,“計(jì)算機(jī)軟件技術(shù)基礎(chǔ)”被眾多高校列為非計(jì)算機(jī)專業(yè)的必修課程,江蘇大學(xué)能源與動(dòng)力工程學(xué)院流體機(jī)械及工程系也特別針對(duì)本專業(yè)學(xué)生開設(shè)了該課程,以期學(xué)生可學(xué)習(xí)和掌握一定軟件開發(fā)方面的知識(shí),為將來的學(xué)習(xí)、工作和生活提供指導(dǎo)和借鑒。
由于該課程屬于概述類課程,其涵蓋了算法、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫(kù)、軟件工程等眾多知識(shí),且針對(duì)的是非計(jì)算機(jī)專業(yè)學(xué)生,因此講授和學(xué)習(xí)難度較大,對(duì)于傳統(tǒng)的教學(xué)方式,學(xué)生普遍表示“理解不了”。如何讓學(xué)生們高效地學(xué)好和學(xué)活這門課,這是亟待解決的問題。經(jīng)過對(duì)本專業(yè)學(xué)生前期知識(shí)儲(chǔ)備和學(xué)習(xí)特點(diǎn)的調(diào)研,對(duì)該課程知識(shí)點(diǎn)結(jié)構(gòu)及相互關(guān)系的深入分析,結(jié)合多年的的學(xué)習(xí)、工作和教學(xué)經(jīng)驗(yàn),在實(shí)際教學(xué)過程中進(jìn)行了有針對(duì)性的處理,收到了良好的教學(xué)效果。
1 學(xué)生特點(diǎn)
1.1 對(duì)課程認(rèn)可度不高,學(xué)習(xí)興趣不濃厚
當(dāng)前軟件行業(yè)飛速發(fā)展,針對(duì)各行各業(yè)已推出了相對(duì)較為成熟的專用軟件,可以解決常見的行業(yè)問題。[2]比如流體機(jī)械行業(yè)有CFTurbo軟件來進(jìn)行水力設(shè)計(jì),有UG軟件用來三維建模,有FLUENT軟件來分析流場(chǎng)等。這就使得學(xué)生們普遍認(rèn)為軟件開發(fā)是搞計(jì)算機(jī)的同學(xué)所做的事情,跟自己沒有關(guān)系,而自己只要使用好這些軟件就行了。因此,學(xué)生大多認(rèn)為這門課的知識(shí)將來用不上,缺乏學(xué)習(xí)興趣。
1.2 前期知識(shí)儲(chǔ)備不足,學(xué)習(xí)過程痛苦煩躁
雖然95后的學(xué)生較早接觸到了計(jì)算機(jī),但大多只是用來進(jìn)行如打游戲和看電影等娛樂活動(dòng),并未對(duì)計(jì)算機(jī)的工作原理有較為清晰的認(rèn)識(shí)。此外,盡管前期學(xué)過C++語言,但受限于較少的課時(shí)和較少的實(shí)踐積累,多數(shù)同學(xué)對(duì)于C++的掌握僅限于常見變量和運(yùn)算、控制結(jié)構(gòu)、函數(shù)等相對(duì)簡(jiǎn)單的知識(shí)點(diǎn),一旦涉及到結(jié)構(gòu)體、類和對(duì)象、重載、模板、指針等較為復(fù)雜的知識(shí)點(diǎn),就束手無策、不知所云。這導(dǎo)致在本課程的學(xué)習(xí)過程中,同學(xué)們對(duì)理論部分理解起來較為吃力,而對(duì)于代碼實(shí)現(xiàn)則更是一頭霧水。前期知識(shí)儲(chǔ)備不足影響了課程學(xué)習(xí)效果。
1.3 對(duì)于新技術(shù)既渴望好奇又害怕畏懼
任誰也無法抵抗人工智能、大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)這些新名詞鋪天蓋地的狂轟濫炸,任誰也無法阻擋這些新興科技對(duì)于其他行業(yè)的巨大推動(dòng)。面對(duì)這些新技術(shù),同學(xué)們感到好奇,渴望了解它們究竟是什么,如何起源的,發(fā)展現(xiàn)狀如何,將來又會(huì)產(chǎn)生哪些影響。另外又感到害怕,害怕新技術(shù)引起的新變革會(huì)顛覆本行業(yè)的傳統(tǒng)格局,如果不能及時(shí)把握這些看似神秘而又高大上的新技術(shù),很有可能被時(shí)代所淘汰。這種既好奇又畏懼的矛盾心理同樣反映在該課程的學(xué)習(xí)過程中。
1.4 對(duì)老師和課堂的過分依賴
不同于中學(xué)時(shí)代老師對(duì)知識(shí)點(diǎn)的再三強(qiáng)調(diào)和題海戰(zhàn)術(shù),和大學(xué)其它課程類似,由于知識(shí)面寬廣且教學(xué)課時(shí)有限,該課程講授時(shí)不可能把一個(gè)知識(shí)點(diǎn)翻來覆去地不斷強(qiáng)調(diào),基本上只能保證一兩遍的講解,這就使得課程知識(shí)點(diǎn)較多、節(jié)奏較快。但學(xué)生的注意力往往不能長(zhǎng)時(shí)間聚焦,一旦稍有松懈,便無法跟上節(jié)奏。實(shí)際上,過分依賴?yán)蠋熀驼n堂,想要在課堂上全盤消化吸收知識(shí)點(diǎn)是不切實(shí)際的,該課程更多地需要學(xué)生的課前預(yù)習(xí)、課后復(fù)習(xí)、上機(jī)實(shí)踐和自我領(lǐng)悟。
2 該課程傳統(tǒng)教學(xué)方式的不足
2.1 實(shí)踐環(huán)節(jié)較少,學(xué)習(xí)效果較差
以往的課時(shí)分配上,重視課堂講授理論知識(shí),而忽視上機(jī)編寫代碼、實(shí)際問題建模與求解、軟件項(xiàng)目開發(fā)等實(shí)踐環(huán)節(jié),實(shí)踐環(huán)節(jié)象征性開設(shè)兩三次,甚至沒有。在課堂講授上,更多的也是對(duì)理論知識(shí)的闡述,而對(duì)理論的具體代碼實(shí)現(xiàn)避而不談或語焉不詳。缺乏實(shí)際動(dòng)手操作的實(shí)踐環(huán)節(jié),這使得原本就很難理解的知識(shí)點(diǎn)更加晦澀艱深,且進(jìn)一步打擊了學(xué)生的學(xué)習(xí)興趣。
2.2 專業(yè)結(jié)合不強(qiáng),學(xué)習(xí)目標(biāo)不明
以往的開課老師一般來自計(jì)算機(jī)學(xué)院,雖然其對(duì)于計(jì)算機(jī)領(lǐng)域的知識(shí)掌握得十分扎實(shí),然而對(duì)于學(xué)生所在專業(yè)領(lǐng)域的知識(shí)知之甚少。這導(dǎo)致在講課過程中,對(duì)于學(xué)生的專業(yè)需求不甚明了,不能很好地將課程知識(shí)與聽課學(xué)生所在專業(yè)的相關(guān)知識(shí)和具體應(yīng)用場(chǎng)景結(jié)合。知識(shí)點(diǎn)的傳輸過程脫離專業(yè)需求,顯得枯燥乏味,無法調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性。
2.3 集中教學(xué)模式,無法因材施教
毋庸置疑,最好的教學(xué)模式應(yīng)該是一對(duì)一的家教式教學(xué),可以針對(duì)每個(gè)同學(xué)的特點(diǎn)因材施教。[3]受限于外部條件,實(shí)際情況多為大班集中教學(xué)模式,教師在講課過程中很難考慮到每個(gè)學(xué)生理解能力上的差異和學(xué)習(xí)狀態(tài)的好壞,無法滿足不同層次學(xué)生的多樣需求,僅能就學(xué)生的平均水平來安排教學(xué)。造成學(xué)習(xí)能力差的學(xué)生聽不懂,能力較強(qiáng)的學(xué)生又感覺簡(jiǎn)單無趣,既無法使前者輕松收獲知識(shí),更無法使后者百尺竿頭更進(jìn)一步。
3 改進(jìn)措施
3.1 結(jié)合專業(yè)實(shí)際,濃厚學(xué)習(xí)興趣
第一節(jié)課,通過實(shí)例和講解充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)熱情。首先,縱然有很多本行業(yè)相對(duì)較為成熟的軟件,然而其使用起來相當(dāng)于黑箱,如果不對(duì)其內(nèi)部工作機(jī)制有所了解,是不能很好地發(fā)揮其功能的。其次,這些商業(yè)軟件雖然通用性強(qiáng),但適用性差,也并非任何實(shí)際問題都能解決,有時(shí)我們不得不自己去開發(fā)軟件來解決特定問題,這就需要用到本課程的相關(guān)知識(shí)。再者,軟件開發(fā)屬于高薪行業(yè),有部分同學(xué)將來考研或是找工作會(huì)跨界到計(jì)算機(jī)行業(yè),那么有了本課程知識(shí)的積累,其后續(xù)的再學(xué)習(xí)和工作將會(huì)較為容易。最后,藝多不壓身,掌握本課程相關(guān)知識(shí),也可用來高效指導(dǎo)生活的方方面面,比如數(shù)據(jù)整理、查找和排序方法、日程安排、人際關(guān)系圖、運(yùn)籌帷幄等??傊屚瑢W(xué)們深刻認(rèn)識(shí)到軟件技術(shù)已經(jīng)滲透到各行各業(yè),務(wù)必要對(duì)其有所了解才能有所作為。
3.2回顧計(jì)算機(jī)原理和C++語言,夯實(shí)前期基礎(chǔ)
針對(duì)學(xué)生前期知識(shí)積累薄弱的情況,先進(jìn)行計(jì)算機(jī)基本原理和C++語言的知識(shí)點(diǎn)回顧,為后續(xù)學(xué)習(xí)鋪平道路。使學(xué)生對(duì)于計(jì)算機(jī)的硬件系統(tǒng)、軟件系統(tǒng)、工作原理有了初步的理解,并對(duì)C++的結(jié)構(gòu)體、類和對(duì)象、重載、模板、指針等較為復(fù)雜的知識(shí)點(diǎn)有較深入的理解。著重通過舉例使這些知識(shí)點(diǎn)形象生動(dòng)。比如用流體力學(xué)中一個(gè)空間點(diǎn)上具有速度、壓力、密度等變量,可將其綜合起來定義為一個(gè)新的類型,來引出結(jié)構(gòu)體的概念。再比如用平面上的點(diǎn)具有x和y坐標(biāo)兩個(gè)變量,同時(shí)又需要經(jīng)常計(jì)算該點(diǎn)距離原點(diǎn)O的距離,可將這兩個(gè)變量和計(jì)算距離函數(shù)綜合起來,這便是類的概念。用金庸武俠劇不斷翻拍來類比重載的概念,用小學(xué)生寫作文的“小明扶老奶奶過馬路”和“小張扶老奶奶過馬路”來類比模板的概念等。磨刀不誤砍柴工,夯實(shí)了前期知識(shí)基礎(chǔ),極大方便了本課程后續(xù)知識(shí)點(diǎn)的學(xué)習(xí)。
3.3 結(jié)合專業(yè)特色和生活實(shí)際,深入淺出的教學(xué)
主講老師雖然出身于流體機(jī)械專業(yè),卻在軟件公司開發(fā)過大型軟件,因此既有扎實(shí)的行業(yè)基礎(chǔ),又有豐富的軟件開發(fā)經(jīng)驗(yàn),非常適合本課程的講解。其結(jié)合生活實(shí)踐和專業(yè)知識(shí),根據(jù)學(xué)生的認(rèn)知規(guī)律,先拋出幾個(gè)具體的問題,然后總結(jié)抽象出同一類問題,再給出該類問題的解決方法,寫出算法的具體流程及偽代碼,最終編寫算法的C++程序?qū)崿F(xiàn)。使同學(xué)們形象直觀、由實(shí)際中得出理論,再將理論用于實(shí)際,學(xué)以致用,活學(xué)活用。在講述“?!边@種數(shù)據(jù)結(jié)構(gòu)時(shí),先用生活中常見的彈匣、糖葫蘆、羊肉串、織毛衣等實(shí)例引出“先入后出、后入先出”這樣一種數(shù)據(jù)類型,并通過流體機(jī)械裝配與拆解過程引出“先裝后拆,后裝先拆”這樣的零件排序,隨后給出棧的定義及其順序和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),最后給出其程序?qū)崿F(xiàn),并進(jìn)一步提出??梢杂脕砗侠碇笇?dǎo)自己的日常事務(wù)安排。在講述“回溯法”時(shí),通過走迷宮和摸著石頭過河的實(shí)例很好地詮釋了其試探前進(jìn)不行就回退換路走的思路。將枯燥的理論與這些專業(yè)例子和生活例子的緊密結(jié)合,使得學(xué)生可更加容易地理解這些知識(shí)點(diǎn)。
3.4 理論聯(lián)系實(shí)際,注重培養(yǎng)學(xué)生動(dòng)手能力
該課程屬于一門實(shí)踐性很強(qiáng)的課程,僅僅是從理論層面上理解相關(guān)概念,而不去真正編寫代碼實(shí)現(xiàn),這無異于蜻蜓點(diǎn)水、紙上談兵。為此,本課程除了課堂講授之外,還安排了大量的上機(jī)操作環(huán)節(jié)、小軟件開發(fā)環(huán)節(jié)。指導(dǎo)學(xué)生們實(shí)際動(dòng)手編寫線性表、棧、隊(duì)列的線性存儲(chǔ)、鏈接存儲(chǔ)結(jié)構(gòu),對(duì)角矩陣、帶狀矩陣、稀疏矩陣的壓縮存儲(chǔ)方式,二叉樹的存儲(chǔ)和前序、中序與后序遍歷,以及常見的查找和排序方法等,并就有代表性的小游戲如俄羅斯方塊、貪吃蛇、連連看等的開發(fā)過程進(jìn)行演示,使同學(xué)們不僅在理論上對(duì)所學(xué)知識(shí)有所領(lǐng)悟,更能真正在代碼編寫與調(diào)試的實(shí)踐中深入理解和靈活運(yùn)用課程知識(shí)。
3.5 與時(shí)俱進(jìn),不斷豐富教學(xué)內(nèi)容
圍棋程序AlphaGo輕松戰(zhàn)勝人類頂尖棋手李世石與柯杰,購(gòu)物網(wǎng)站精準(zhǔn)的廣告推送,智能導(dǎo)航可實(shí)時(shí)避開擁堵路段,這些都顯著提高了人們的生產(chǎn)效率和生活水平。對(duì)于這些新技術(shù),學(xué)生們普遍存在既新鮮好奇又害怕畏懼的矛盾心理。為此,特意對(duì)人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)、云計(jì)算等知識(shí)作了粗略的概述性講解,著重回顧了它們的起源和發(fā)展現(xiàn)狀,展望了其未來發(fā)展趨勢(shì),并通過手寫體識(shí)別、計(jì)算流體動(dòng)力學(xué)的云計(jì)算、流體機(jī)械工程優(yōu)化等例子來說明人工智能、云計(jì)算等在生活和本行業(yè)中的應(yīng)用。這些緊貼時(shí)代的新內(nèi)容,使得同學(xué)們耳目一新,知識(shí)面大為拓展,為今后深入學(xué)習(xí)和靈活運(yùn)用這些新技術(shù)推開了一扇窗。
3.6 分組互助,課后學(xué)習(xí),全面提升
建立課程QQ群,將課程PPT和相關(guān)代碼上傳到群共享文件,方便師生互動(dòng)和課后學(xué)習(xí)。針對(duì)學(xué)生層次參差不齊,學(xué)習(xí)能力差異較大的實(shí)際情況,將學(xué)生分為學(xué)習(xí)興趣小組,并由學(xué)習(xí)能力較強(qiáng)的同學(xué)擔(dān)任組長(zhǎng),幫助組內(nèi)同學(xué)在學(xué)習(xí)上一起進(jìn)步。此外,該小組將在課下自選題目共同完成小型軟件的開發(fā),最終以項(xiàng)目開發(fā)報(bào)告和程序的形式提交,并進(jìn)行課堂展示,成績(jī)按一定比例計(jì)入期末總分,通過團(tuán)隊(duì)協(xié)同合作和實(shí)際項(xiàng)目開發(fā),可全面提升學(xué)生的軟件開發(fā)水平。對(duì)于那些學(xué)有余力和興趣濃厚的同學(xué),推薦C++的經(jīng)典學(xué)習(xí)網(wǎng)站www.learncpp.com、經(jīng)典教材《C++Premier》、矩陣運(yùn)算經(jīng)典教材《矩陣計(jì)算》、人工智能相關(guān)書籍《游戲編程中的人工智能技術(shù)》等資源,更進(jìn)一步豐富其知識(shí)結(jié)構(gòu),同時(shí)也能在一定程度上提升其科技英語水平。
4 結(jié)語
當(dāng)今世界飛速發(fā)展,科技進(jìn)步日新月異,復(fù)合型人才正是社會(huì)迫切需求的,“計(jì)算機(jī)軟件技術(shù)基礎(chǔ)”課程的學(xué)習(xí)對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生而言意義十分重大,同時(shí)它也是一門教授和學(xué)習(xí)難度都很大的課程,其教學(xué)方式方還有待不斷研究探索??v然提出了一些新的教學(xué)方法和方式,也收到了較好的教學(xué)效果,可是仍需精益求精。在今后的教學(xué)中,要充分考慮學(xué)生前期知識(shí)儲(chǔ)備和學(xué)習(xí)認(rèn)知規(guī)律,深入分析課程知識(shí)點(diǎn)的相互關(guān)聯(lián),結(jié)合本專業(yè)特點(diǎn)和時(shí)代特色,精心設(shè)計(jì)課堂教學(xué)與實(shí)踐環(huán)節(jié),不斷推陳出新,培養(yǎng)出更加優(yōu)秀的應(yīng)用型、創(chuàng)新型、復(fù)合型本科人才。
參考文獻(xiàn)
[1] 徐士良,葛兵.計(jì)算機(jī)軟件技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2014.
[2] 李昕,仲偉和.計(jì)算機(jī)軟件基礎(chǔ)教學(xué)研究[J].遼寧工業(yè)大學(xué)學(xué)報(bào),2008.10(6):127-128.
[3] 趙穎,楊海英,褚治廣.計(jì)算機(jī)軟件基礎(chǔ)教學(xué)改革的研究[J].遼寧工業(yè)大學(xué)學(xué)報(bào),2014.16(5):138-140.