姚立新 梁宏濤
摘 要: 針對大學低年級學生學習C語言程序設計課程有一定難度這一問題,青島工學院對該課程的教學改革建立了校長基金項目。從教學團隊建設、教材建設方面進行探索和實踐,闡述了教學內容、教學方法、教學手段,以及實踐實驗教學和考核方式改革等方面的具體做法。
關鍵詞: C語言; 程序設計; 教學改革; 課程建設
中圖分類號:G420 文獻標志碼:A 文章編號:1006-8228(2014)11-46-03
Exploration of educational reform of C language programming course
Yao Lixin, Lang Hongtao
(School of Information Technology, Qingdao University of Technology, Jiaozhou, Shandong 266300, China)
Abstract: As a primary course of programming, C language programming is quite difficult for freshmen. In order to deal with it, Qingdao Institute of Technology launched an educational reform project. All the members of this project have conducted continuous exploration and practice during the past few years. The educational team and teaching materials are established. The content and the method of teaching are elaborated. The specific approaches of experimental teaching and reform of examining system are introduced.
Key words: C language; programming; educational reform; curriculum development
0 引言
當前,計算機已經成為人們工作、學習和生活中必不可少的工具,整個社會對計算機的高度依賴促使一個嶄新的文化形態的形成——計算機文化。隨著高等教育從精英教育階段進入大眾教育階段,教育部高等學校計算機科學與技術教學指導委員會在計算機基礎課程教學基本要求中提出了1+X的課程設置方案[1],理工類學生在學習大學計算機基礎課程后,接下來就要學習C語言程序設計,C語言程序設計已經成為各高校普遍開設的基礎課程。本文總結了我們在教學改革和實踐中的一些做法和體會。
C語言功能強大,使用靈活方便,應用面廣,可移植性好,兼有高級語言的優點和低級語言的特點[2],這也使得初學者較難學習和掌握,在教學中我們發現,學生往往對編程解決實際問題感到困難,不知從何下手,而一些考試題目往往重視考查語法的細節,而對編程能力考查得不多。對于C語言程序設計的教學,我們從培養學生的興趣和能力,以及計算機思維能力出發,進行了一系列教學改革的探索與實踐。
1 教學師資團隊建設
人才培養師資隊伍是關鍵,教學團隊的建設是保障教學效果和實施教學改革的基礎和支撐[3]。根據本課程的特點和大一學生的基礎,學院確定了一支老中青相結合的骨干教師組成本課程教學團隊,團隊由一位教授、一位副教授、四位講師和三位助教組成,分別承擔理論教學和實驗教學任務,這支隊伍年齡、職稱結構合理,團隊中的教師在每學期的教學督導和學生評教中,成績都在良好以上,從根本上保證了課程的教學質量。
堅持教學團隊的凝聚力建設,定期研討,統一思想。每周教研時間及時交流教學中出現的問題及解決方法,對教學過程進行總結反思,堅持互相聽課,集體研究討論教案、課件制作,對每個實驗內容、案例的選用、考核的內容和方式等都經過團隊的統一討論確定。
重視教學團隊中教師自身的進修和提高,團隊中的多名教師先后參加了國家精品課程師資培訓、全國高等學校計算機實驗與實踐教學研討會、全國高等院校程序設計精品課程教學專題研討會等,教師都很珍惜每一次與兄弟院校的教師、專家交流與學習的機會,教師及時把學習體會傳達到團隊的每一位教師,汲取其他院校的一些好的做法運用到我們的教學實踐中,這些做法對促進教師的知識更新、教育理論的學習、教學方法的改進和教學能力的提高起到積極的作用,也保證了課程的教學改革能不斷向前推進。
2 教材建設
C語言程序設計作為第一門編程語言課程,目前幾乎所有高等學校理工科專業都在大一第一學期開設此課程。C語言簡潔、緊湊、靈活,數據類型豐富,功能強大,靈活和復雜對初學者來說是難以掌握的,而原有的一些教材大多是針對計算機相關專業的學生,而且是在學習了一些計算機基礎的相關課程后再學習此課程的,起點相對高,內容全面、有一定的深度。但是對本科低年級初學者來說并不適用。鑒于此,我們從2009年開始著手編寫教材和實驗教材,從我院人才培養目標和學生的實際情況出發,注重實踐及應用,試用后于2011年出版,并于2013年修改再版,新版教材已列為十二五規劃教材。作為適用本科低年級學生初學程序設計及C語言的教材,以掌握C語言基本語法、培養程序設計思維、提高上機實踐能力為目標,旨在以簡單明了的語言和簡潔實用的例子,闡述C語言的基本語法和程序設計的基本邏輯思路。C語言的語法及使用有很多靈活和復雜的方面,對初學者來說往往難以全面掌握,所以我們只對主要的適合初學者入門的知識點進行講解,其目的是通過C語言的學習與實踐,培養學生程序設計的抽象邏輯思維能力,掌握動手編程上機實踐的技能[4]。程序設計的抽象性往往使學生望而生畏。選用簡單實用的例題,目的是讓學生能盡快入門,并對程序設計產生興趣,能體會到編程和調試的樂趣。
3 優化教學內容,改革教學方法,豐富教學手段
3.1 優化教學內容
對于課堂教學內容的取舍,教學團隊首先從指導思想上達成共識,就是重點是編程的邏輯思維的培養,分析問題、解決問題能力的培養,而不是解釋語言本身的語法細節,據此來優化課堂的教學內容。對于編程能力的培養,從具體的問題分析,特別是從貼近學生生活的實例出發,進行類比,轉化,進而同化到學習者自身的已知范疇中,這也符合建構主義[5]關于學生是如何學習的理論。對于語法規則,通過實際的調試程序、驗證性實驗等方法,使學生有更直觀的感受,印象也更深刻。我們對教學大綱進行反復討論修訂,通過教學大綱貫徹教學改革的指導思想。
3.2 改革教學方法
在課堂教學中采用任務驅動、案例教學、類比教學等啟發式教學方法,從一個具體問題出發,引入要講的概念和知識點,使得學生掌握解決類似問題的方法,注意啟發學生與以前所用的方法進行比較,并在此例的基礎上進行擴充,改變條件等,漸進式的展開,不斷滾雪球似地拓展,學生比較容易接受,不斷與已經掌握的知識進行同化。
針對下次課要講的內容布置學生預習,每次課前鼓勵學生就預習的情況作講解,可以是預習收獲,可以就疑問提問,堅持了教師為主導學生為主體的理念,訓練學生自主學習的能力,對于學生自學能掌握的問題不講或精講,重點放在難點問題上。
建立小組學習模式,培養學生自主學習、合作學習的能力。讓學生自由結合組成學習小組,3-4人為一組,每名同學輪流任組長(每月輪換),負責本小組本課程的學習討論,上機、作業、考勤等,給每個學生同等的鍛煉機會,促進后進學生提高學習的積極性,形成互幫互學共同進步的良好學習風氣。
3.3 豐富教學手段
課堂教學中綜合使用PPT課件、程序演示和板書等教學手段,語法規則以PPT課件為主,問題分析,算法設計輔助板書,程序驗證直接運行,直觀看結果,章節的開始有提示,結束有小結。避免了單純PPT課件教學易使學生疲勞并產生課件依賴的現象,提高學生積極參與課堂教學的積極性,發揮學生學習主體的作用。
加強精品課程網站建設,充分發揮網絡教學的作用。本課程已經建成為學院的精品課程,利用校園網的平臺,培養學生自主學習的能力。課程網站上有豐富的教學資源,有教學大綱,電子教案,教學課件,教學視頻等,實現了網上答疑,還建有論壇社區,方便師生之間的討論交流。
組織程序設計競賽,培養學生對程序設計愛好和實際能動性。通過每年選撥優秀學生參加數學建模比賽、ACM程序設計大賽,組織有興趣的學生積極參與,并加以指導,培養了學生對程序設計的愛好,提高了學生解決實際問題的能力。
4 加強實驗實踐教學,適時安排課程設計
4.1 加強實驗課的教學,培養學生實際動手能力
為加強實踐教學,獨立設置了C語言程序設計實驗課程,每周2學時實驗課,平時實驗室開放,學生可以在課余時間進行上機練習。強調理論與實驗并重,在實驗內容上安排一些基礎性的驗證型實驗,作為必須完成的項目,幫助學生理解掌握基本的知識點,培養學生動手能力。在此基礎上布置一些具有一定難度的題目,面對能力較強的學生,提高他們的綜合設計能力。
實驗課后學生要撰寫實驗報告,實驗報告內容包括以下幾個部分:
⑴ 實驗內容;
⑵ 算法描述(要求按照規范畫出流程圖);
⑶ 源程序代碼(注意代碼風格,必要的注釋);
⑷ 測試及運行結果(包括幾種算法討論);
⑸ 調試過程(遇到的問題及解決辦法);
⑹ 收獲體會。
對于大學低年級的學生,通過編寫、調試程序,撰寫實驗報告,對于培養他們嚴謹科學的工作作風、鍛煉科技論文的寫作能力都起到了積極的作用。
實驗課程考核為考查,綜合實驗出勤情況,實驗報告情況和完成實驗的情況以及期末綜合編程的完成情況評定成績。
4.2 適時安排課程設計,培養學生創新意識
在學完本課程后在相關專業開設C語言程序設計課程設計課程,本課程是實訓類課程,時間為一周,通過多名學生合作完成一個相對比較復雜的課題。鍛煉學生的分析問題、解決問題的能力,培養學生團隊協作精神,使學生了解軟件開發流程、代碼和文檔編寫規范,提高編程能力和創新意識。
課程設計的選題很重要,教學團隊經過討論精選出一些具有一定難度但可以通過學生努力完成的課題,并鼓勵學生自選題目,提出切合實際應用的課題,寫出分析和需求報告,有指導教師共同討論通過,自選題目有加分獎勵。如有的小組就結合學生實際生活,設計學生綜合評測系統,解決他們學習生活中的實際問題,提高他們課程設計的興趣和完成后的成就感。
在課程設計的過程中,按照正規軟件開發的流程和步驟,每一個步驟完成都要提交相應的文檔,最后完成時提交程序代碼和完整的文檔。小組成員有明確的分工,以自主設計為主,指導教師檢查每個階段的成果,并及時給予反饋意見,對難點問題通過討論引導學生自行找到解決的辦法。
課程設計課程的考核采用小組答辯的形式,每個課題由一人主要匯報演示講解,其他成員都要求回答問題,這樣既鍛煉了學生的表達能力也避免了不自覺學生跟風搭車現象。
5 改革評價體系,面向實踐和應用,注重過程評價
改變過去期末筆試的考核方式,全面考察編程能力、調試程序能力,推行考教分離,注重過程考核。最終成績由平時成績和期末考試成績兩部分構成。平時成績由平時測驗、出勤情況,作業情況,討論發言情況等確定,期末考試采用的是無紙化網上考試系統,由系統從題庫中隨機組卷,以編程題為主,重點考察學生的編程能力和程序調試能力,成績由系統自動判定。避免了過去那種靠期末突擊、死記硬背僥幸過關的現象,保證了考核的客觀公平,也對學生的平時學習和課堂管理起到了積極的作用。
6 結束語
在C語言程序設計教學改革的實踐中,我們不斷總結,不斷地實踐,目前已經形成了C語言程序設計、C語言程序設計實驗、C語言程序設計課程設計三位一體的課程群,并且與后續的C++程序設計、Java程序設計、數據結構等課程建立了程序設計基礎的課程體系,在課程建設、內容優化、資源共享等方面進行通盤考慮。C語言程序設計課程的教學改革與探索方興未艾,我們還要繼續完善和深化以上的一些做法,不斷跟蹤其他兄弟院校的成功做法,借鑒他人的經驗,努力探索適合應用型人才培養目標的課程教學體系,把課程建設教學改革繼續推向深入。
參考文獻:
[1] 教育部高等學校計算機科學與技術教學指導委員會.關于進一步加
強高等學校計算機基礎教學的意見暨計算機基礎課程教學基本要求[M].高等教育出版社,2006.
[2] 張彩霞,漫談C語言編程[J].太原大學教育學院學報,2009.1.
[3] 王文.地方工科院校師資隊伍建設探析[J].高等工程教育研究,
2012.6.
[4] 姚立新,梁宏濤.C語言程序設計[M].電子工業出版社,2013.
[5] (美)加儂,(美)柯蕾.建構主義學習設計(當代教師新支點叢書)[M].中
國輕工業出版社,2008.