高赟+張驥先+孔兵+張學(xué)杰
摘 要: 從多年教學(xué)、科研工作及畢業(yè)生反饋等經(jīng)驗來看,無論采用哪種教學(xué)方法開展教學(xué)工作,C語言程序設(shè)計的課堂教學(xué)和未來就業(yè)或深造需求之間仍然存在著脫節(jié)現(xiàn)象,學(xué)生對C語言程序設(shè)計的應(yīng)用能力亟待提高。在實際課程教學(xué)過程中,需要補充或強化以下幾個方面的能力培養(yǎng):遵守編程規(guī)范、把握代碼框架、調(diào)試程序、代碼轉(zhuǎn)化和團隊協(xié)作等。這些能力的培養(yǎng)可以使學(xué)生快速適應(yīng)實際應(yīng)用。在提高學(xué)生對C語言編程應(yīng)用能力的同時,這些能力的培養(yǎng)還可以促進C語言程序設(shè)計課堂教學(xué)與未來就業(yè)或深造需求的有機接軌。
關(guān)鍵詞: C語言程序設(shè)計; 應(yīng)用能力; 課堂教學(xué); 未來就業(yè); 脫節(jié)
中圖分類號:G424 文獻標志碼:A 文章編號:1006-8228(2017)08-61-03
Abstract: By analyzing the teaching and research practice and the graduates' feedbacks of many years, the disjoint phenomenon between C programming teaching and future employment or further education still exists regardless of what kind of teaching method, and students' application ability of C programming should be improved urgently. In the actual course teaching process, several abilities need to be cultivated, which are programming specification, code frame, code debugging, code transformation, team cooperation, etc. The cultivation of these abilities can make students quickly adapting the requirement of actual application, at the same time of improving the students' application ability of C programming, it can also promote the organic integration of the classroom teaching of C programming and the requirements of future employment or further education.
Key words: C Programming; application ability; course teaching; future employment; disjoint
0 引言
在計算機課程體系中,由于C語言具有完備的高級語言特性,并具有豐富靈活的控制和數(shù)據(jù)結(jié)構(gòu)、簡潔而高效的語句表達、清晰的程序結(jié)構(gòu)和良好的可移植性等特點,其已成為計算機相關(guān)專業(yè)、大多數(shù)理工類專業(yè)本科學(xué)生必須學(xué)習(xí)和掌握的計算機高級語言之一。用C語言編寫程序的能力可以為學(xué)生學(xué)習(xí)其他編程語言奠定基礎(chǔ),C語言程序設(shè)計能力是本科學(xué)生未來就業(yè)的門檻條件,也是未來攻讀碩士學(xué)位、博士學(xué)位和從事科研工作最基本的專業(yè)功底。因此,高校對C語言程序設(shè)計及應(yīng)用能力培養(yǎng)顯得十分重要。
1 常用教學(xué)方法
對于計算機相關(guān)專業(yè)和大多數(shù)理工類專業(yè)本科學(xué)生而言,C語言程序設(shè)計是一門重要的專業(yè)基礎(chǔ)課程。一般情況下,大學(xué)本科一年級開設(shè)C語言程序設(shè)計課程,其教學(xué)內(nèi)容涉及C語言概述、數(shù)據(jù)類型、運算符、表達式、結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)以及相關(guān)語句、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、共用體和文件操作等[1]。在實際的教學(xué)過程中,常用的教學(xué)方法有知識點羅列式教學(xué)、項目/問題驅(qū)動式教學(xué)、基于微課的翻轉(zhuǎn)課堂教學(xué)、基于慕課的線上線下教學(xué)等方式[2-3],各種教學(xué)方法大致如下。
⑴ 知識點邏列式教學(xué)方法,該方法是一種最為傳統(tǒng)的教學(xué)方法,通過對C語言程序設(shè)計相關(guān)的知識點進行逐一講解及相應(yīng)編程訓(xùn)練達到教學(xué)的目的。
⑵ 項目/問題驅(qū)動式教學(xué)方法,該方法圍繞項目/問題任務(wù)展開教學(xué),教師的教學(xué)與學(xué)生的學(xué)習(xí)都是圍繞著一個具體項目/問題任務(wù),通過主動應(yīng)用各項學(xué)習(xí)資源,進行自主探索和互動協(xié)作學(xué)習(xí)達到教學(xué)的目的。
⑶ 基于微課的翻轉(zhuǎn)課堂教學(xué)方法,微課以短小精悍、易于傳播的特點備受師生歡迎,學(xué)生在課前對微課內(nèi)容進行在線預(yù)習(xí),課堂中對微課知識點中的重點難點進行解決,課堂后通過微課形式進行微測試。
⑷ 基于慕課的線上線下教學(xué)方式,慕課可以針對傳統(tǒng)教室中的學(xué)生,也要考慮在線學(xué)習(xí)者,在慕課資源線上學(xué)習(xí)的基礎(chǔ)上,課堂中可以有針對性地及時解決存在的問題。
2 后續(xù)應(yīng)用存在的問題
常用的C語言程序設(shè)計教學(xué)方法注重C語言編程知識點的學(xué)習(xí)和應(yīng)用,與未來就業(yè)或深造仍然存在著脫節(jié)現(xiàn)象[5]。根據(jù)多年的C語言程序設(shè)計教學(xué)工作、計算機應(yīng)用相關(guān)的科研工作、就業(yè)或深造的畢業(yè)生反饋等,學(xué)完C語言程序設(shè)計課程后,學(xué)生在C編程應(yīng)用能力方面仍存在著諸多問題。
⑴ 在碩士研究生入學(xué)面試的編程能力測試中,部分學(xué)生可以理解測試題目的題意,也掌握了C語言的許多語法知識,但無法實現(xiàn)實際應(yīng)用問題的編程。
⑵ 在指導(dǎo)碩士研究生進行科研工作的過程中,部分學(xué)生難以將所學(xué)的數(shù)學(xué)知識或?qū)I(yè)課知識編程實現(xiàn)來解決實際的科研問題。
⑶ 本科畢業(yè)剛剛參加工作的學(xué)生反饋,在參與軟件開發(fā)的過程中,程序的書寫規(guī)范不能滿足公司要求、變量或函數(shù)命名不能見名知意、編碼沒有良好的注釋習(xí)慣等是其最為困擾的問題。
⑷ 參加多年工作的畢業(yè)生反饋,在軟件開發(fā)團隊工作中,除了分析問題的能力、代碼化的編程能力、書寫規(guī)范習(xí)慣等,程序調(diào)試能力和團隊協(xié)作能力也是非常重要的。
3 提升應(yīng)用能力的方法
為了培養(yǎng)學(xué)生具備良好的編程思維、扎實的編程功底,并且與未來的工作崗位或科研工作接軌,無論采用哪種教學(xué)方法開展教學(xué)工作,我們認為都應(yīng)該從以下幾方面提升學(xué)生C語言程序設(shè)計的應(yīng)用能力。
3.1 遵守編程規(guī)范
《高質(zhì)量編程指南C++/C語言》、《Clean Code》等皆指出編程規(guī)范的重要性[4],包括文件結(jié)構(gòu)、程序板式、命名規(guī)則、表達式、基本語句、程序注釋等規(guī)范。在實際軟件開發(fā)工作中,程序員編寫的程序不止是限于讓自己能看懂,還要讓團隊中其他成員或新進成員能看懂,而編程規(guī)范將直接關(guān)系到代碼的可讀性。學(xué)習(xí)完C語言程序設(shè)計課程的學(xué)生,仍然對于編程規(guī)范不太了解的學(xué)生不在少數(shù),這些學(xué)生一旦步入工作崗位,會有很長一段時間無法適應(yīng)軟件編程工作。因此,在C語言程序設(shè)計課程教學(xué)過程中,始終貫穿編程規(guī)范,將有助于學(xué)生快速融入到未來編程工作中。
3.2 把握代碼框架
大多數(shù)編程語言在實現(xiàn)具體編程應(yīng)用時,都會建立一個代碼工程,C語言也不例外。然而,我們在教學(xué)工作和科研工作中發(fā)現(xiàn),大量學(xué)習(xí)過C語言程序設(shè)計課程的學(xué)生只會在開發(fā)環(huán)境打開的情況下,編寫其中幾行代碼或一個函數(shù),難以把握代碼工程的整體框架。當遇到多個文件組成的工程時,就可能無法理清各個文件之間的組織關(guān)系。因此,在C語言程序設(shè)計課程教學(xué)過程中,介紹常用的開發(fā)環(huán)境(Visual Studio、Visual C++、CodeBlocks等)、代碼工程目錄樹結(jié)構(gòu)、文件夾目錄結(jié)構(gòu)及其各種文件擴展名等,將有助于學(xué)生把握代碼工程的整理框架。
3.3 調(diào)試程序的能力
在實驗教學(xué)過程中,學(xué)生編譯程序無法通過或程序運行出錯時,學(xué)生第一反應(yīng)是:“老師,請幫我看下程序哪里出錯了?!贝罅繉W(xué)生不會主動去調(diào)試程序。程序無法編譯通過,對于學(xué)生實驗題目而言多數(shù)是語法問題;程序運行出錯,對應(yīng)學(xué)生實驗題目而言多數(shù)是邏輯出了問題。因此,在C語言程序設(shè)計課程教學(xué)過程中,當程序編譯或運行出錯的情況下,可以培養(yǎng)學(xué)生主動排查問題的意識和能力。當一眼無法識別并修改錯誤時,調(diào)試程序的能力尤為重要,包括鎖定可能出現(xiàn)問題的代碼范圍、設(shè)置斷點、啟動調(diào)試、單步跟蹤、查看變量或內(nèi)存等。
3.4 代碼轉(zhuǎn)化的能力
對于C語言的語法知識點,學(xué)生可以準確把握;對于應(yīng)用問題,學(xué)生也可以到位理解。然而,針對實際應(yīng)用問題,學(xué)生無法將應(yīng)用問題的解決思路以代碼的形式快速呈現(xiàn),也就是說,學(xué)生難以將問題解決思路和C語言代碼之間產(chǎn)生映射。對于每一個特定的應(yīng)用問題,其解決思路也是千差萬別的,涉及到的橫向或縱向的專業(yè)知識也是不同的。因此,在C語言程序設(shè)計課程教學(xué)過程中,可以借助各種具體應(yīng)用問題,采用分析問題——形成解決思路——轉(zhuǎn)化為C語言代碼的過程,不斷培養(yǎng)學(xué)生將各種具體問題解決思路轉(zhuǎn)化為C語言代碼的能力。
3.5 團隊協(xié)作能力
在實際軟件編程工作中,大多數(shù)的工作都是多人合作完成,因此,學(xué)生的團隊協(xié)作能力將直接影響到軟件項目的執(zhí)行效率。項目/問題驅(qū)動式教學(xué)方法一般會涉及多個學(xué)生協(xié)作編程,這在一定程度上培養(yǎng)了學(xué)生的團隊協(xié)作能力。采用微課、慕課或知識點羅列式教學(xué)時,可以采用分組完成任務(wù)等方式培養(yǎng)學(xué)生團隊協(xié)作的意識。
4 結(jié)束語
本文在闡述現(xiàn)有C語言程序設(shè)計課程教學(xué)方法的基礎(chǔ)上,結(jié)合多年教學(xué)、科研工作及畢業(yè)生反饋等經(jīng)驗,分析了學(xué)生在C語言程序設(shè)計的應(yīng)用能力方面出現(xiàn)的各種問題。在實際課程教學(xué)過程中,通過強化或補充遵守編程規(guī)范、把握代碼框架、調(diào)試程序、代碼轉(zhuǎn)化和團隊協(xié)作等多方面能力的培養(yǎng),可以使得學(xué)生快速適應(yīng)實際應(yīng)用對C編程的需求,進而提升學(xué)生對C語言程序設(shè)計的應(yīng)用能力。這些能力的培養(yǎng)還可以促進C語言程序設(shè)計課堂教學(xué)與未來就業(yè)或深造需求的有機接軌。在未來的教學(xué)研究中,可以將已學(xué)課程知識引入到C語言程序設(shè)計課程教學(xué)的應(yīng)用實例中,也可以引導(dǎo)學(xué)生將C語言程序設(shè)計方法拓展到多個相關(guān)課程的深入學(xué)習(xí)中,以進一步提高學(xué)生的編程應(yīng)用能力。
參考文獻(References):
[1] 裘宗燕.從問題到程序:程序設(shè)計與C語言引論(第2版)[M].機械工業(yè)出版社,2011.
[2] 郭銀章,王麗芳.基于項目任務(wù)驅(qū)動的C語言程序設(shè)計課程教學(xué)改革與實踐[J].計算機教育,2017.2:41-44
[3] 陳娟,張長海,鄧春燕,李河.高級語言程序設(shè)計課程的慕課建設(shè)與思考[J].計算機教育,2017.1:9-13
[4] 馮瀟.基于多課程交叉的程序設(shè)計教學(xué)改革[J].計算機教育,2017.2:18-21
[5] 蘇莉蔚.“計算機程序設(shè)計”課程中科學(xué)思維能力的培養(yǎng)[J].計算機時代,2017.1:55-56,59