時間:2023-07-24 16:32:49
導語:在程序設計的基本結構的撰寫旅程中,學習并吸收他人佳作的精髓是一條寶貴的路徑,好期刊匯集了九篇優秀范文,愿這些內容能夠啟發您的創作靈感,引領您探索更多的創作可能。

關鍵詞:卓越計劃 實踐教學 考核模式 創新能力
中圖分類號:G642 文獻標識碼:A
學生的實踐能力與創新精神的培養是教育部卓越計劃的核心目標,如何改革原有專業教學模式與課程體系,更好地滿足對卓越工程師實踐與創新能力培養的根本需求,成為卓越計劃實施中的關鍵問題。作為教育部第一批卓越計劃試點專業,山東理工大學計算機學院從計算機科學與技術專業最重要的實踐與創新能力――程序設計能力培養入手,以程序設計基礎類課程的建設與創新為切入點,結合多年來“定制式培養”“校企合作”的專業改革經驗,先后從課程的教學內容整合優化、實踐教學模式創新、考核模式改革和創新能力培養等方面,進行了深入的探索實踐。
1.程序設計基礎類課程內容整合優化
程序設計基礎類課程包含了程序設計基礎、數據結構、編譯原理等課程,這些課程均是計算機專業卓越工程師計劃中最核心的專業基礎課。程序設計基礎主要介紹基本的程序設計思想與方法,數據結構主要介紹數據的邏輯組織形式與存儲組織形式、編譯原理則通過介紹程序設計語言編譯器的構造原理、設計方法和實現技術,使學生在更高的層次上理解程序設計語言工作原理與程序運行機制。從課程特點來看,這幾門課程在教學內容上既是緊密關聯的又是直接銜接的。首先,程序設計基礎為數據結構與編譯原理的學習提供了必需的程序設計方法與基本技巧;數據結構既實現了復雜數據下程序設計基礎內容的進一步的延伸與發展,又為編譯器構造提供了結構化數據的邏輯與存儲形式;編譯原理則完成程序設計的經典方法與數據結構合理組織的有效結合,為在解決問題中實現程序設計方法的選擇以及合理數據結構的表示提供了一個綜合應用的平臺。
基于卓越計劃的培養要求以及三門課程內容上緊密關聯的特點,我們對各門課程的教學內容進行了整合,根據課程之間的銜接關系適當的調整了部分教學內容。比如,基本線性結構的組織作為程序設計能力的重要基礎,雖然既是數據結構也是編譯技術中的基本問題,但在課程整合之前的課程中介紹均不夠突出,在整合后就以專題的形式在程序設計基礎上強化基本的線性數據結構(包括數組、Y構體、單鏈表等)表示與實現的知識,使得學生可以有重點的集中學習并掌握這些基本結構的表示與使用方法。再如,經典的算法設計思想是程序設計與編譯程序設計實現必備的能力,在課程整合之前,與之相關的知識是零散的分布在三門課程中的,但每一門課程都未做特別的強化,學生掌握的總體效果并不好。在課程整合之后,把經典算法的設計思想與實現的內容更多地放在了數據結構課程中,結合各類不同數據的組織來講授相關的經典算法,會使學生對算法與數據結構理解的更加深入。
2.課程實踐教學模式的改革與創新
卓越計劃的核心目標之一是提高學生的實踐動手能力,程序設計基礎類課程都是理論與實踐緊密結合的課程,這些課程實踐教學環節的教學水平與質量,對學生動手編程習慣的養成和編程水平的提高,有至關重要的作用。
首先,在實踐教學環節設計上,實現了各門課程實踐教學內容的優化整合以及有序連接。整合之后,三門課程實踐教學內容各有側重,其中基本編程能力的訓練集中在程序設計基礎實驗以及實訓中完成,數據組織技巧與算法應用訓練集中在數據結構實驗以及課程設計中完成,程序設計語言編譯器的比較、系統分析與設計集中在編譯原理中完成。
其次,課程的實踐教學平臺的建設是實踐教學的關鍵,優質的實踐教學平臺可以非常高效的達到實踐教學的目的。傳統的實驗教學存在著諸多的弊端,主要表現在:一是課內的上機課時非常有限,短時間內,學生調試不了幾個程序,效率非常低;二是雖然也可以指定一些課外上機的題目,但教師無法實時地跟蹤學生課外編程過程,學生無法得到及時指導。基于上述問題,我們從程序設計基礎課程開始對實踐教學模式進行徹底的改革。借鑒國際ACM大賽的競賽平臺模式,建立了山東省高校第一個程序在線評測系統(Oline Judge)SDUTOJ,針對不同學生的學習水平,提供了適合各層次學生的難度不同的大量題目,為各個層次的學生提供了選擇的余地。學生可以隨時隨地通過網絡提交自己的源代碼程序,并且立即得到程序正確與否以及錯誤類型的信息反饋,還可以看到別的用戶的提交狀態以及各個題目的提交匯總信息,整體排名以及班內排名的信息等。截止到2017年4月6日,程序在線評測系統SDUTOJ已有注冊用戶24639個,實踐性題目2870道,累計提交次數251萬余次,是山東省高校中用戶最多、題目數目最多、開放性最好、教學應用最為廣泛的實踐教學平臺。在課程內容整合后,將該實踐教學平臺引入到數據結構與編譯原理的實踐教學中,并按照類別在程序在線測試系統中增加了大量的與數據結構以及編譯原理有關的練習題目。程序在線評測系統平臺被其他課程共享使用后,學生的動手實踐積極性明顯提高,特別是學生利用課外時間做題的數量越來越多,很多學生的課余時間都用在了程序調試上。課程實踐教學所在的學期,每班的題目提交數量將近10000次,每個學生提交通過的程序數目在平均在150個以上。
3.課程考核方式的改革與創新
課程的考核方式應該體現課程教學的核心理念,程序設計基礎類課程的核心理念已經從以往的單純理論知識學習改變為理論與實踐并重的學習,原有的考核模式已經無法適應對實踐能力考核的需求。經過多年的改革與實踐,我們逐漸摸索出一種有效的考核模式,對程序設計基礎類課程原有的考核方式進行了徹底的改革,將傳統的以理論考核為主轉換為理論與實踐同步考核的方式。在新的考核方式中把課程的考核分為基本理論與實踐技能兩個模塊,基本理論考核以考察相關課程的基本思想與基礎理論知識為主,主要的考核方式是期末的理論考試,試卷成績占總成績的40%。實踐技能考核又分兩個部分,第一部分是平時的實驗成績,以學生平時在程序在線測試系統(SDUTOJ)中通過的題目數量與質量作為評價依據,根據學生的排名得到平時實驗成績,占總成績的30%;第二部分是期末的上機考試成績,利用ACM競賽的模式,學生在規定時間內獨立上機編程,在規定時間內按照學生提交通過的題目數量以及專業相對排名次序核定成績,占總成績的30%。
4.課程建設對學生創新能力的培養
學生的創新精神與創新能力培養是卓越計劃的另一核心目標,也是程序設計基礎類課程建設的重要目標,與課程有關的大學生創新競賽是改革效果的重要檢驗平臺。我們建立了“以校賽帶面、以訓練帶片、以大賽拔尖”的三級創新能力訓練機制,培養學生程序設計能力。自2009年開始組織學校ACM大賽,參賽人數超過300人,以ACM創新實驗室為訓練基地,組織學生進行程序設計能力訓練,參加程序設計基礎訓練的學生人數從最初的100人左右達到現在的800人左右。在此基礎上選拔部分學生參加山東省和國際ACM大學生程序設計競賽。
近年來,課程組先后組織卓越班學生參加了山東省以及國際ACM大學生程序設計創新競賽,以檢驗課程建設在學生創新能力培養方面的效果。其中,在2010―2016年山東省舉行的第一屆至第八屆ACM大學生程序設計大賽中,我校的25支參賽隊伍全部獲獎,其中獲得一等獎7項,二等獎10項,三等獎8項。在2009~2016年的ACM/ ICPC國際大學生程序設計競賽中,共獲得30余項亞洲區域賽優勝獎、17項銅獎、6項銀獎,并于2016年獲得1項亞洲區域賽金獎,ACM競賽總成績位列山東省高校前三位。
5.課程創新與實踐的效果
經過各項課程創新與實踐措施的實施,程序設計基礎類課程的教學質量得到明顯的提升。2010-2012三屆卓越班畢業學生均反映通過課程的學習,個人的實踐動手能力得到逐漸地提升。課程任課教師也一致反映,通過程序設計基礎類課程改革,卓越班學生的程序設計能力,特別是動手編程的能力較以前有了非常大的提升,學生綜合競爭力增強,就業質量和考研繼續深造的學生比例有大幅提高。從整體情況來看,我們的程序設計基礎類課程的創新和實踐改革處于省內領先水平,可以為卓越計劃的教學改革和學生能力培養提供有益的借b。
參考文獻:
[1] 劉曉靜,王曉英,張玉安,黃建強,劉志強.以創新人才培養為目標的數據結構實驗教學改革[J].實驗技術與管理,2014,(11).
[2] 金蘭.程序設計基礎課程教學改革探索與實踐[J].中國教學信息化,2017,(1).
一、如何應對全國計算機二級等級考試的公共基礎知識大綱
計算機二級考試大綱中關于基礎知識的有數據結構與算法、程序設計基礎、軟件工程基礎、數據庫設計基礎四部分,下面筆者分別介紹一下這些部分的學習重點和方法:
1.數據結構與算法。
本章內容在計算機專業基礎課中相對較復雜,考生對本章的內容必須理解,死記硬背是無效的。在二級等級考試中本章考核的重點和難點為二叉樹的相關知識,其考核的形式主要為二叉樹的遍歷問題(如給圖求遍歷序列,給前序、中序遍歷求后序遍歷等)、二叉樹的結點問題(如給出一些條件然后求葉子結點個數)、排序和查找。排序主要以計算時間復雜度的形式考核,查找主要以計算最佳、最壞比較次數的方式考核,其余的知識點主要以概念的形式考核,考生需要仔細看書并理解。
2.程序設計基礎與軟件工程基礎。
這兩章以概述的形式簡介了規范化開發軟件的方法。與數據結構不同,這兩章內容主要是記憶性的知識點。程序設計基礎這章在原大綱的基礎上添加了面向對象程序設計的內容,考生對這部分知識了解即可;軟件工程基礎這章主要考核結構化分析、結構化設計方法(即SA及SD,約占50%)、軟件測試(約占20%),考生需熟記相關的概念及規則。
3.數據庫設計基礎。
數據庫是當前軟件處理的信息核心,目前大部分軟件是基于數據庫的,因此,考生學習數據庫的知識對程序開發是大有裨益的。本章主要的考點是關系模型、關系代數及數據庫系統的基本概念,考生對其余的知識點了解即可。對于數據庫的設計和管理,考生結合軟件工程來看,會發現這兩者有很多相似之處。本章內容除了關系代數會考一些簡單的計算問題外,其余的都以概念題的形式出現,考生需要有針對性地進行復習。
二、二級公共基礎知識的特點
大綱對全國計算機二級等級考試作了重大的調整:在取消了過時的考試科目和調整了一些科目的考試之外,新增加了目前比較流行的計算機語言C++、Java和Access數據庫。公共基礎知識的考核方式為筆試,與C語言程序設計、C++語言程序設計、Java語言程序設計、Visual Basic語言程序設計、Visual FoxPro數據庫程序設計或Access數據庫程序設計的筆試部分合為一張試卷,共有10道選擇題和5道填空題,占全國計算機二級等級考試筆試總分的30%。公共基礎知識部分的試題具有如下特點:
1.涉及面廣,但難度小。
全國計算機二級等級考試中有關公共基礎知識部分涉及的內容,從整體上分析,考核內容的難度不大,考點也相對比較集中。
2.考核重點為基本概念、基本方法和基本運算。
考試中涉及的題目都是基本概念、基本方法和基本運算,考核以概念和認識性內容為主,理解性、應用性內容極少。
3.考核重點是數據結構和算法。
數據結構和算法、程序設計基礎、軟件工程基礎、數據庫設計基礎部分各占公共基礎知識部分題目的百分比分別為:50%、12.5%、18.75%、18.75%,可見在全國計算機二級考試中,數據結構和算法是重點。
三、學習方法
1.考生的復習必須遵守“80/20的原則”。
全國計算機二級等級考試的公共基礎知識部分覆蓋面廣,它至少涵蓋了計算機應用專業的四門核心課程:數據結構與算法、程序設計基礎、軟件工程基礎、數據庫設計基礎。事實上,這些課程本身的涉及面就很廣,難度系數較大。所以,考生應把80%的時間用在20%的重點知識點上,爭取用20%的重點知識點來答對80%的考題,這是考生復習全國計算機二級等級考試的公共知識部分的總體思路。
2.復習的關鍵是考生必須準確判斷和掌握常見的考點。
考生必須準確判斷和掌握常見考點,例如:算法部分主要考查算法的概念及算法的復雜度,數據結構部分主要考查最基本的概念、最典型的數據結構和最常見的操作,程序設計部分主要考查程序設計風格的基本要求、結構化程序設計的最基本知識和面向對象程序設計的最常見概念,軟件工程基礎部分主要考查軟件工程的基本概念和軟件生命周期的各個階段的基礎知識,數據庫設計基礎部分主要考查數據庫基本概念、數據模型、關系代數基礎知識、數據庫設計方法和步驟。考生對常見考點的準確把握能避免盲目地復習,從而輕松面對考試。
3.基礎知識的掌握方法。
很多考生在復習公共基礎部分時都會發現內容零散,知識點之間的跳躍性大,似乎沒有連續性。所以掌握起來很困難,似懂非懂,對知識點處于模糊認知狀態。因此,考生必須在準確把握知識點的基礎上,學會把“知識點”連成“知識鏈”,并把“知識鏈”織成“知識網”。
4.做題技巧。
考生切勿采取題海戰術。對全國計算機二級等級考試公共知識部分,學生沒有必要做大量的題目,更不能為了應付考試記一大堆錯誤答案。
5.非“靈活”地掌握知識點。
考生在掌握知識點時最好經歷一個“先死后活、熟能生巧”的過程。全國計算機二級等級考試要求的知識點都是最基本的、最簡單的,真正需要“靈活”掌握的考點極少。很多考生在考試過程中發現,該部分的題目“會做就是不懂”。所以筆者建議考生在復習過程中不要急于“靈活”,其實考生只要掌握基本的知識點,自然就“靈活”了。
6.答題技巧。
考生在遇到難題時要考慮成本和效果的關系,公共知識部分僅占30分,題目相對簡單。因此,考生在答題過程中,對這部分內容要爭取速度快、準確度高。在全國計算機二級等級考試中常常出現這樣的情景:有些考生為了一道小題花費很長時間仍沒有找到任何線索。一般來說,公共知識部分的考題難度不大,沒有一道題目需要考慮很長時間。所以,考生如果做一道公共基礎題在兩分鐘內沒有任何思路時,就應該跳過此題,把時間留給后面的題目。
參考文獻:
[1]全國計算機等級考試二級教程――公共基礎.2008.
鐘 實
(江西科技學院)
[摘 要]C語言程序設計課程是計算機專業教育的重要組成部分。將探究教學引入C語言程序設計教學中,不僅可以提高學生學習的興趣,調動教師教學的
熱情,也豐富了探究教學的理論與實踐。具體分析并探討了C語言程序設計探究教學的實施目標、實施條件、教學情境的創設、探究形式、教學評價等問題。
[關鍵詞]C語言程序設計 探究教學 實施目標
一、 C語言程序設計探究教學實施的目標:情感目標、能力目標和認知目
標
1、體驗C語言程序設計的編程思想,激發和保持對C語言程序設計課程的
求知欲,形成積極主動地學習和參與C語言程序設計課程探究活動的態度。
2、能辯證地認識C語言程序設計對社會發展、科技進步和日常生活學習的
影響。
3、獲得親自參與研究探索的積極體驗、培養嚴謹的科學態度。
4、能從日常生活、學習中發現或歸納可以利用C語言程序設計解決的問題,
通過問題分析確定程序功能。
5、能根據任務的要求,確定所需信息的類型和來源,并鑒別信息的真實性、
準確性和相關性。
6、掌握計算機程序的基本概念,理解并掌握C語言程序設計語言的基本知
識,包括語句、數據類型、變量、常量、表達式、函數等,熟悉語言的語法規則,熟
悉計算機程序執行的基本過程。
7、了解C語言程序設計語言,掌握編寫程序、編譯程序、連接程序以及程序
開發環境等基本知識,掌握調試、運行程序的基本方法與技巧。
二、C語言程序設計探究教學實施的條件
1、掌握一定的計算機操作基礎
C語言程序設計課程由于其學科自身的特點,需要在計算機上調試程序,
所以要求學生具有一定的計算機操作知識,如:開關機、鍵盤和鼠標的使用、文
件的建立與查找、常用軟件的使用等。
2、良好的C語言程序設計認知結構
認知結構就是學生頭腦里的知識結構,是學習者觀念的全部內容和組織。
奧蘇伯爾的認知結構理論是針對新學習內容的影響(即遷移)提出的,良好的認
知結構有利于知識的提取和正向遷移。C語言程序設計探究教學強調在已有知
識經驗上的主動建構,面對新的問題和任務,需要學生及時從頭腦中提取信息,
建立新舊知識間的聯系,在已有C語言程序設計知識的基礎上思考解決新問題
的辦法,并試圖將新知識納入自己的認知結構中。
3 、良好的探究環境
良好的探究環境是學生順利進行探究的保證,至少包含兩方面的內容:(1)
要有充足的探究時間和靈活的探究條件。探究時間應該根據學習任務進行合理
安排,應該考慮到學生假設錯誤時所耽誤的時間以及討論交流所需要的時間。
探究教學中可能需要查閱大量的資料,教師還應該準備書籍、網絡等輔助資源。
(2)學生在探究學習的時候不能有太多壓力,不同的學生由于其自身的因素不可
能以相同的速度學習,所以教師在進行評價的時候也應該因人而異,應該為每
個學生提供充分的思考機會和時間,讓每個學生都能以自己的進度進行探索,
并在此過程中感受到樂趣。
三、C語言程序設計探究教學情境的創設
心理學研究表明,恰當、適宜的環境能有效激發人的熱烈情緒,提高活動的
質量和效果。教學情境是指教師人為創造的“典型場景”,創設目的在于引出教
學任務,將學生的注意力吸引到學習任務中來。教師把將要學習的C語言程序
設計知識通過一定的情境呈現給學生,使得學生認知結構與周圍環境不平衡,
引起他們對學習目標的注意和興趣,并通過探究活動把學生過去的活動和將來
的活動聯系在心理學研究表明,恰當、適宜的環境能有效激發人的熱烈情緒,提
高活動的質量和效果。教學情境是指教師人為創造的“典型場景”,創設目的在
于引出教學任務,將學生的注意力吸引到學習任務中來。教師把將要學習的C
語言程序設計知識通過一定的情境呈現給學生,使得學生認知結構與周圍環境
不平衡,引起他們對學習目標的注意和興趣,并通過探究活動把學生過去的活
動和將來的活動聯系在一體。探究教學情境的創設應做到:(1)創設的情境是為
C語言程序設計教學服務的,要以C語言程序設計探究教學目標為依據。(2)探究
情境要接近學生的真實生活經驗,能夠吸引學生的注意力,激發他們的認知沖
突和求知欲。(3)學生在情境中能夠感覺到問題的存在,自然地將新舊知識聯系
起來。(4)情境中必須包含學生未知的新內容,而且是能夠通過探究掌握的。
四、C語言程序設計課程中的探究形式
C語言程序設計課程中開展探究教學主要有4種形式:探究性提問、探究性
討論、探究性演示和探究性實驗。這4種形式是相輔相承的,而不是孤立存在的,
在C語言程序設計探究教學中,需要用到多種形式來構成一個完整的探究教學
過程。C語言程序設計探究教學通常都是由探究性提問開始,然后進行探究性
討論、探究性演示或探究性實驗;也可能從探究性演示或探究性實驗開始,在演
示或實驗的過程中發現問題,再進行探究性討論。在實際教學過程中,要根據學
習內容和課堂情況靈活地選用這些形式。
五、C語言程序設計探究教學評價
教學評價指依據一定的標準,通過各種策略和相關資料的收集,對教學活
動及其效果進行客觀衡量和科學判定的系統過程。C語言程序設計探究教學評
價是對C語言程序設計探究教學過程及其影響的測量、分析和評定,評價中我
們更關注學生學習和成長的過程,尋找適合學生發展的學習方式,滿足學生知
識和能力發展的需要。評價對探究教學的積極作用是很明顯的,但是如果評價
指標制定不合理,或者評價方法的選用、評價結果的表述不當,不僅不能達到預
期效果,還會對學生的C語言程序設計學習產生消極影響。
參考文獻
[1] 《基礎教育課程改革綱要(試行)》教育部文件,教基[2001]17號.
[2] 保羅 朗格朗.終身教育引論瞰[M].北京:中國對外翻譯出版公司,1985,
p15~31.
[3] 聯合國教科文組織.學會生存——教育世界的今天和明天[M].上海:
上海譯文出.
版社,1979,p2.
[4] 張大均。教育心理學[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉樂.探究教學論[M].重慶:西南師范大學出版社,200l.
作者簡介
鐘實(1986-02)男、民族(漢),籍貫(江西省南昌市),2010畢業于浙江大學
關鍵詞: 機械設計制造及其自動化 C語言程序設計 教學改革
C語言應用靈活方便,功能強大,是國際上應用廣泛的計算機高級語言之一,同時也是眾多理工科類專業的必修課程。然而,如何結合理工科專業自身特點進行“C語言程序設計”課程教學,使之既遵循課程教學的基本原則和方法,又融入專業背景是目前“C語言程序設計”課程教學改革研究的熱點[1]。
1.機制專業“C語言程序設計”課程教學現狀
機械設計制造及其自動化專業的“C語言程序設計”通常開設在大一下或大二上,授課54學時,其基本教學內容為基本語法、程序結構和簡單算法及數據結構,教學方法上基本采用教師講授各知識點,學生上機進行驗證性實驗。相比計算機類專業教學而言,機制專業學生沒有系統地安排計算機類課程的學習,C語言是其學習的首個編程語言,學習難度大;由于缺乏“算法與數據結構”及“編譯原理”等后續課程的支撐[2],學生進行真實項目編程實踐的機會較少。綜上所述,導致目前機制專業“C語言程序設計”課程教學中存在以下三個問題:
1.1對C語言的地位和作用認知不全面。
由于沒有接觸商業化編程項目,機制專業大部分學生認為C語言比較陳舊,不及JAVA、Python、C#等語言流行度高,僅認為C語言是國家計算機等級考試中的一門語言,沒有全面認識C語言的地位和作用。在純軟件編程設計方面,C語言在TIOBE編程語言排名中一直位于前三位,是目前最流行的iOS/Android的底層核心開發語言。同時由于C語言具備位操作,使得其在硬件控制方面有得天獨厚的優勢,是控制硬件的基本工具,對于機制專業的單片機技術、數控編程、機器人技術、PLC原理及應用等核心課程學習極其重要。
1.2教學內容聯系實際不緊密。
傳統機制專業“C語言程序設計”課程教學內容過多集中在語法和程序結構的講解,上機編程實驗則集中在驗證性實驗方面,既缺乏對程序設計中重要思想和調試技巧的講解和訓練,又缺乏對重要數據結構和算法的詳細講解,使學生在解決實際問題時缺乏經驗和技巧。同時在教材選擇方面,“C語言程序設計”教材基本上是通用教材,并沒有區分不同專業的需求和特點,使得機制專業學生在學習中無法接觸C語言在本專業中的應用實例,導致大部分學生缺乏明確的學習目的。
1.3傳統教學方法不適用。
目前在“C語言程序設計”課程的教學方法上通常以語法知識作為教學主線,教學方法仍以灌輸式為主,C語言語法、數據結構及簡單算法的理論性較強,傳統講授方法形式單一、啟發性及對比性弱,學生未能成為學習的主體,學生理解掌握難度大。同時由于C語言的語法和結構的靈活性,如果不依托真實且具有專業背景的實例講解,學習難度大,就會極大挫傷學習積極性,教學效果往往事倍功半。
2.基于機制專業特色的“C語言程序設計”課程教學改革
針對機制專業“C語言程序設計”課程教學存在的普遍問題,項目組推動了一系列教學改革,并在實施中不斷改進和完善。
2.1增加關聯課程介紹環節,強化C語言的地位與作用。
機制專業的“C語言程序設計”課改由本院專業教師承擔,一改過去由計算機專業老師承擔的現狀,本院專業老師既熟悉C語言基本理論,對于C語言在機制專業中的應用情況又比較了解,并且具備使用C語言進行實際項目開發的經驗。在教學中可以使C語言和本專業應用更有效地融合。
在“C語言程序設計”課程的入門介紹中,將C語言在機制專業的各領域的應用情況給學生做梳理和介紹,重點介紹其在單片機原理及應用、機械設計原理、數控技術、機器人控制技術、PLC原理及應用、現代控制工程等課程的應用。強化C語言和這些專業課程之間的聯系,使學生認識到C語言對于這些專業技術而言,是重要的編程工具,其實際編程能力的強弱將直接決定其能否學習好上述專業課程。同時將C語言和JAVA、Python、C#等其他編程語言從數據類型、語法結構、編譯效率、開發平臺、商業應用五個方面進行對比分析,從純計算機編程語言的角度向學生說明C語言的特點。以此強化學生對C語言地位與作用的認識。
2.2調整教學內容,強化機制專業特色。
C語言的教學實例在教學中至關重要,是理解C語言基本概念和程序設計思路的橋梁,而傳統教學實例以簡單算法(例如:斐波拉契數列、猴子摘桃、楊輝三角等)為主,缺乏專業背景,且略顯枯燥。在改革教學中,教學實例增加大量具有特定專業應用背景的項目案例作為實例講解,使教學實例理論性和實踐性有效結合,將理論學習與實物開發通過實例結合后,既體現C語言在這些領域的應用,又提高學生學習的積極性,有利于培養其解決實際問題的能力。
例如當學生完成基本語法和循環結構程序設計的學習后,將“單片機原理及應用”課程中的經典案例――LED跑馬燈作為講解實例,在簡要介紹LED燈發光原理后,利用Proteus平臺搭建由8個LED燈構成的跑馬燈系統,教師編寫好程序整體框架后,引導學生使用賦值語句使8個LED燈逐個點亮,使學生理解賦值操作和LED燈被點亮之間的關系。在此基礎上,進一步引導學生使用循環結構程序使8個LED燈依次循環被點亮,而且循環次數可以設定,形成跑馬燈,讓學生在“程序修改”至“現象改變”的過程中深刻理解循環結構程序的作用;當學生完成選擇結構程序設計的學習后,引導學生在開源的Arduino系統上對智能小車進行避障控制,當智能小車上紅外傳感器有信號,表明前方有障礙,則需要繞過障礙,通過實現此控制功能,學生可以深入理解選擇結構程序,反復使用if-else語句進行選擇結構程序設計,控制智能小車走迷宮;再如當學生完成基于函數和指針的復雜程序設計學習后,可引導學生利用C語言調用相關庫函數進行畫法幾何的作圖練習,作出某一零件的三視圖,使學生熟練掌握庫函數的調用和復雜程序設計。
2.3利用機器人綜合實驗平臺,突出手腦并重。
為使學生學以致用,院實驗設備與管理中心聯合博創等企業建立了機器人綜合實驗平臺,可作為“C語言程序設計”課程的課外第二課堂,該平臺提供底層驅動代碼,學生可以在此基礎上利用C語言控制機器人上的各種舵機,實現控制功能。在“C語言程序設計”課程的學習期間,引導學生進入機器人實驗室進行簡單的機器人控制操作,將所學的C語言程序設計知識用于實際控制中。同時,該平臺可提供分立元件由學生自行設計搭建機器人,使學生得到充分的動手訓練,做到手腦并重。
3.教改效果
實踐表明,通過以上教改措施的實施,教學效果顯著,教學質量有效提高。首先,學生不再將“C語言程序設計”課程的學習目的僅定義為通過計算機等級考試,而是認識到學習C語言對其后續專業課程的作用;其次,通過具體專業實例的學習,學生的邏輯思維能力得到鍛煉,解決問題的算法明顯呈現多樣性。近年來,貴陽學院機械工程學院學生利用C語言作為編程語言,參加全國大學生機械創新設計大賽,多次獲得賽區一、二等獎;在全國“三菱自動化”設計大賽中,多次榮獲全國一等獎。以上成績的取得,表明貴陽學院機械工程學院“C語言程序設計”課程教學改革取得初步成效。
參考文獻:
[1]陳麗敏,邵長友.基于自動化專業C語言課程教學改革的研究[J].中國電力教育,2013,(31).
[關鍵詞] C語言教學 興趣教學 任務驅動 動畫效果
一、引言
“C語言程序設計”作為大學計算機基礎教學系列中的核心課程體系“計算機程序設計基礎”中的一門課程,主要講授程序設計語言的基本知識和程序設計的方法與技術,其內容以程序設計語言的語法規則和程序設計技術的基本方法為主,同時包括程序設計方法學、數據結構與算法基礎等方面的初步內容。
二、C語言教學的目的和特點
在我國大多數高校,無論是計算機專業還是非計算機專業,往往將“C語言程序設計”作為第一門程序設計課程。對于非計算機專業的學生來說,要求他們通過學習成為程序設計人員是不現實的。基于素質教育思想,“C語言程序設計”的教學目的是掌握C語言程序設計的基本知識和程序設計方法,為后續課程的學習打下基礎;而更重要的是培養學生分析問題解決問題的能力,培養學生計算機程序設計的能力和素質,以及邏輯思維能力和方法。
程序設計是具有創造性的工作,且具有一定的抽象性,它用數學的方法描述問題,建立數學模型,進行算法設計,將實際問題的解法表達成計算機能表達理解的形式。著名的計算機科學家唐•依•克努特曾論述道:能把問題的解法表達成計算機能夠“理解”的一種明顯形式(這些機器沒有普通的感覺,它還不會“思考”,但它能準確地不折不扣地去做讓它做的事情。當一個人初次試圖使用一臺計算機時,這是最難以掌握的概念)。當一個初學者學習程序設計時,在把計算機這種新的知識結構納入自己原有的認知體系中時,由于結構差別太大,就會遇到原有結構的“頑強抵抗”,必須創建新的認知結構。學習程序設計是對認知結構的改造,是對學生傳統知識體系的改進。因此,在教學中一定要注重學生程序設計能力和邏輯思維的培養,而不能過分強調C語言復雜的語法細節。我們在多年教學工作的基礎上,將以下一些教學方法綜合應用到實踐教學中,實踐證明這些方法綜合應用可取得良好的教學效果。
三、主要教學方法
1.興趣教學法的應用
“興趣是最好的老師”,而且隨著高校改革的逐步深入,我校大學生的基礎素質有所下降,如何將大部分學生引入程序設計這項枯燥的學習中來,培養學習興趣是首要的問題。我們在教學過程中注重把趣味教學法合理應用到教學的各個環節,深入淺出地將學生引導到C語言的系統學習中。例如,一開始為了讓學生了解程序設計的基本概念,我們舉了一個大家都耳熟能詳的例子――“把大象關到冰箱里需要幾步”,同學們在會心一笑之中,很快就明白了程序設計原來就是將一個問題的解決方法分為簡單的幾個基本步驟,用一種合適的語言數據結構描述出來,然后交給計算機去自動完成。而到了后期數組的應用編程中,一個非常難理解的問題就是冒泡排序法,我們采用學生比較感興趣的動畫效果演示算法的整個過程,部分截圖如圖1所示。通過動畫的演示,學生對冒泡排序法的算法過程有了清楚的了解,編起程序也就容易多了。
2.網絡在教學中的應用
隨著高校的普遍擴招,傳統的一問一答教學模式已經不能適應現代教育的快速發展,尤其是像C語言這樣的實踐性很強的課程。因此,促使我們充分發揮現代化教育手段尤其是網絡的強大功能,嘗試改革教育方法。關于這方面的工作,我們已經在文獻[4]中做了大量的研究與實踐工作。首先我們把多年批改作業、輔導實驗中學生經常出錯的源程序分章節保存在各磁盤文件中,形成一個出錯源程序庫。當本屆學生需調試某一章的程序時,就從該庫中抽取出幾個有代表性的有錯源程序,掛到校內專用ftp服務器上,講解之前先讓學生下載并自己動手調試,這樣學生就先經歷了一個深入思考的過程。這樣做的好處是一方面學生想驗證自己的調試思路是否正確,另一方面對自己感到棘手的錯誤又迫切希望從老師那里學到調試方法,這時再由老師邊講解邊操作計算機調試程序,效果是事半功倍的。講解時為了讓學生能更好地看清教師的操作步驟,利用windows自帶的網絡工具軟件進行教師機“桌面”的共享,使學生在看清教師操作步驟的同時,自己進行程序的調試練習,達到“看得清,學得快”的目的。
3.任務驅動式教學法的應用
以學生為主體,教師為主導,構建一種基于任務驅動的協作學習模式。在講解每一知識模塊之前均先拋出具有代表性的問題,激發學生求知欲,培養學生主動解決問題的能力,先讓學生嘗試自己寫出程序。然后教師講解具體細節,并把語言要素穿插到程序的講解中。最后通過分組討論,進行任務評價,進一步加強每個學生薄弱環節的學習。
四、結束語
綜合實施了以上幾種教學方法之后,學生主動學習C語言的積極性明顯提高了,學生普遍愛動手、愛動腦、愛獨立解決問題,主動總結調試經驗,學生的編程、調試能力提高了,因此,受到了學生的一致好評。
參考文獻:
[1]姜慶娜,姜玉波.C語言程序設計教程[M].中國計劃出版社,2007.
[2]唐•依•克努特.計算機程序設計技巧[M].國防工業出版社,2000.
關鍵詞 C語言 課程建設 改革
中圖分類號:G424 文獻標識碼:A DOI:10.16400/ki.kjdkz.2016.09.054
The Construction and Reform of C Language
Program Design Course in Colleges
LIN Huijun
(Computer Science Department of Basic Educational College, Zhanjiang Normal University, Zhanjiang, Guangdong 524037)
Abstract With the development of computer programming, the professional foundation courses position of C Language Programming design has been changed to core specialty course. With the change of its courses position, content of the curriculum system, teaching methods and teaching model, experiment guide will be changed. Discuss the reform of C language program design in the new situation of college from the angle of course construction.
Key words C Language; course construction; reform
0 引言
C語言是一種面向過程的計算機程序設計語言,其功能豐富、表達能力強,具有完善的模塊程序結構,可移植性好,既具有高級語言的特點,又具有低級語言的功能。 C語言曾經是進行軟件開發的主流語言,因此“C語言程序設計”課程曾經作為計算機技術專業核心主干課程,在高等院校計算機相關專業中廣泛開設。然而隨著面向對象程序設計思想的廣泛應用,“C語言程序設計”的專業核心地位開始動搖,一些高等院校計算機專業已不再開設“C語言程序設計”,取而代之的是Java、C++、VC++等課程的直接開設。
那么,在高職高專院校的計算機應用技術專業中,“C語言程序設計”是否還有繼續開設的必要?如果開設應如何開設?“C語言程序設計”課程應如何進行改革才能適應計算機專業課程體系的發展?在本文中,我們將從課程的地位和開設的必要性、課程內容體系、教學方法、實驗指導等方面就大專院校的“C語言程序設計”課程建設進行深入的探討。
1 課程的地位和開設的必要性
“C語言程序設計”曾經是計算機相關專業的核心主干課程,主要學習C語言的語法規則、算法、模塊化程序設計思想,并以C語言為開發語言進行系統的開發。然而隨著技術的發展,C語言由于其在可視化編程方面的局限性使得它不再成為軟件開發的主流語言,在這種情況下,C語言的核心主干課程地位發生了改變,我們曾經對多所高校計算機相關專業的課程設置進行了調查,多所高校根據專業的發展已不再開設C語言,部分院校直接開設JAVA,部分院校直接開設C++,部分院校即使開設C語言,也只是把C語言作為專業基礎課程來開設。
大專院校的計算機應用技術專業學制三年,通過學習,學生應具備基本程序設計能力,能使用計算機語言進行程序的設計、調試和維護。大專院校學生的入學基礎較為薄弱,多年的教學經驗我們得到一個結論:學生一入校門接觸計算機專業課程,感覺最難的就是程序設計,如果其第一門課程學的是面向對象的編程語言,則須從結構化程序設計開始學,學習時間較長,很容易將結構化程序設計與面向對象程序設計混淆,導致學習越來越困難,因此有必要在開設面向對象程序設計課程之前先開設結構化程序設計課程。C語言是古老而長青的編程語言,它的語法是C++、VC++、Java、C#等多種面向對象程序設計語言的基礎,也是后續課程“計算機組成”、“操作系統”、“編譯原理”、“計算機體系結構”、“數據結構”等的基石。因此把C語言作為大專層次計算機應用技術專業基礎課程或計算機語言的入門課程來來開設是必要的,有利于學生對計算機語言及結構化編程思想的理解和掌握,為面向對象程序設計課程及其他的開設后續課程的開設打下一個良好的基礎。
2 課程內容體系
在把“C語言程序設計”作為核心主干課程開設時,其課程的最終目標是學生能使用C語言進行系統的開發,因此其教學內容是圍繞著軟件開發這一主題展開學習,學時較長,內容詳盡。而把“C語言程序設計”作為專業基礎課程來開設時,對學生能利用C語言開發系統的要求降低,學時不宜過長,課程總體目標轉變為培養學生對程序設計的理解和操作能力以及提高程序設計的興趣為主,同時讓學生在學習程序設計的過程中,養成良好的代碼編寫風格,對代碼不再感到害怕。
“C語言程序設計”可以說是大專院校學生入校后所接觸的第一個程序設計語言,根據計算機編程思想和技術的發展,以及大專學生的特點,考慮相關的后續課程以及面向對象編程語言的開設,本著面向基礎、以“必需、夠用”為度,我們將“C語言程序設計”的課程內容進行了重新整合。
如圖1的內容所示,我們對C語言的教學內容的重點和難點做如下的變革:
(1)C語言包含的基本概念很多,如變量、常量、存儲空間、地址、運算符、表達式、函數、指針、數組等,這些概念都是后續課程的基礎,因此應加強學生對這些概念的理解與掌握。
(2)不管哪一種編程語言,其程序的基本結構都離不開順序結構、選擇結構、循環結構,這三種程序結構也是面向對象編程的基礎,因此C語言的教學重點也在于讓學生完全理解和掌握三種程序結構的編寫。在這三種程序結構的教學中,應以算法為主線、結合C語言的語法規則進行講授,案例功能不宜太復雜,程序不宜過長,以單一功能為主,這將有利于后續面向對象程序設計課程學習的銜接。函數是C程序的基本構成,也是大部分計算機語言的基本概念,對函數的概念、定義和聲明、返回值、函數的調用、參數的傳遞、變量的作用域應予以詳細的講解,以理解其中的基本方法為主。
(3)在數據類型部分,重點在于基本類型、指針概念、數組的講解,放棄一些構造型的數據類型,如共同體、結構體等,因為在面向對象編程語言中,已使用類來實現這些復雜數據類型數據的封裝。
3 教學方法
“C語言程序設計”以C語言為平臺,使學生全面了解程序沒計的基本算法、C語言的語法規則以及結構化程序沒計的方法,并具有一定的結構化程序設計和調試的能力。“C語言程序設計”傳統的教學方法是講授與實驗相結合的方法進行教學。由于C語言涉及的概念比較復雜,規則繁多,許多知識點抽象且難以理解,使用靈活,容易出錯。在實際教學中,我們發現很多學生認為內容抽象、枯燥,學習起來都感到困難和吃力,并在不同程度上產生畏懼心理,學生學習興趣度較低。
基于上述原因,我們認真研究了思維可視化技術、微課程技術等教學理論和教學方法,并將其用于實踐教學,效果較好。
3.1 思維可視化技術
思維可視化技術是一種以數據可視化、計算可視化和信息可視化為基礎,促進知識的傳播和創新的技術,其要點是運用一系列圖示技術把本來不可視的思維(思考方法和思考路徑)呈現出來,使其清晰可見的過程。思維可視化的目的是使思維流程化、圖形化、圖譜化和清晰化,其可視化工具包括有概念圖、思維導圖、流程圖、語義網絡、圖表等。
C語言概念繁多,層次性較強,思維可視化技術的引進有利于學生對計算機語言整體概念的理解。如在講解C語言數據類型時我們可以使用一張圖完成教學。圖2為基本數據的概念圖。
概念圖以SWF文件出現,在教學時以數據基本數據類型為中心,進行層次的折疊,在講授時以知識點為中心中心展開或折疊。整個教學直觀,一目了然,效果較好。
思維可視化技術可貫穿C語言的整個教學過程,我們將可視化的各種圖示工具教會學生,課前使用思維對圖進行預習,課中使用概念圖、流程圖進行教學,課后使用思維導圖進行內容的整理。這不僅有助于學生對知識的掌握,也有助于學生編程思維能力的提高。
3.2 微課程技術
微課程即微視頻課程,是一段短小精悍的、以教學為目的的視頻。一段微課程視頻大約10分鐘左右,講解一個知識點,目標明確。與PPT相比,實踐證明微課程的視頻形式更有效,更吸引學生,視聽結合,能增強學習者的信息處理能力,降低學習者的認知負荷,提高學習效率。微課程的反復播放有助于學生自己掌握自己的學習進度。
在C語言教學中,我們往往利用一節課的時間講授知識點,知識點相對較多,一節課45分鐘,學生的注意力不能持續集中。將微課程技術引入C語言的教學過程后,我們將微課程分為知識點微課程、練習微課程,每個微課程大約10分鐘右左右,兩種課程輪流交替進行,既達到傳授知識的目的,也能在課堂上完成課后鞏固環節。在多個知識點微課程和練習微課程后,進行綜合實例微課程進行綜合的訓練。能最大程度地避免學生注意力的分散。
如循環結構是C語言教學的重點和難點,學生對循環的每一次執行較難理解。我們以例題作為知識點制作微課程,將循環的每一次執行、內存變量值的變化、執行的結果以動畫的方式呈現出來,一目了然,且學生可以多次觀看,避免因老師一次講解難以掌握而又無法回顧的問題。實踐證明C語言中許多的知識點使用微課程教學都取得了較好的效果,如排序微課程、運算符微課程等,其在顯示程序運行過程中變量的變化、運行結果的變化等方面尤其有效。
4 上機實踐與習題
上機實踐是“C語言程序設計”課程的重中之重,我們需要培養學生程序設計的素養和程序編輯、修改、調試、運行的能力。C語言的開發環境經歷了Turbo C、VC++6.0、VS等,目前使用較多的是VC++6.0。一般情況下,如果單純是學習C語言,使用VC++6.0已足夠,如果后續開設C#等課程,建議使用VS,以便于后續課程的開設。
大多數的實驗指導書中的實踐教學內容和題目以驗證型和設計型為主。驗證型的題目要求學生按照書本上的指示,輸入程序,填寫結果即可,學生處于被動接受的地位;設計型的題目對于大專院校的學生來說,難度較大,學生往往無從下手。為了全面提高學生的實踐能力和應用能力,使實踐教學能滿足不同層次學生自主學習的需求,我們制定并實施了以下改革措施:
(1)改革上機實踐的教學模式:我們對實驗內容進行了重新的設計,每個實驗銜接課程的內容,實驗內容小而精練,將以往一個完整的理論知識點教學完之后再進行實踐教學的教學模式改為由理論教學和實踐教學相互聯系、相互交叉、彼此滲透、有機結合、同步發展的教學模式。
(2)設計多種類型的實驗題目:針對學生存在基礎不同、接受能力不同、個性有差異等問題,設計出包含驗證型、改錯型、設計型共三種類型的實驗,題目盡可能做到既與理論教學內容靠近,又能覆蓋知識點,切合實際。通過完成不同類型的實驗題目,有目的、分層次地培養學生的實踐能力,使學生學會從實驗過程中獲取知識,積累經驗。
要學好C語言,做習題是關鍵,習題能幫助學生有效地理解知識。通常情況下,習題是在一個章節完成后才進行,知識點過多,學生需要花更多的時間做習題。因此我們對習題進行了重新整理,在一個知識點教學結束后即進行(下轉第118頁)(上接第113頁)習題的訓練,將教學與習題有效地結合,將學生做習題的時間分散,縮短,減少難度,達到即時鞏固的效果。
5 結束語
由于計算機編程技術的發展,C語言的課程教學也受到了影響。2012年,我校將C語言作為重點課程進行建設,結合實際,我們對大專院校“C語言程序設計”課程的地位、內容體系、教學方法和教學模式、實驗指導進行改革探討,以適應新形勢下的大專計算機應用技術專業、電子專業人才培養方案的改變。這些改變能在一定程度上有效解決我校“C語言程序設計”課程發展與教學過程中存在的問題,但仍須在實踐中去改進和完善。
基金項目:嶺南師范學院2013年青年項目,項目號:QL1311;嶺南師范學院基礎教育學院重點課程項目
參考文獻
[1] 林慧君.思維可視化及其技術特征[C].第十六屆全國計算機輔助教育學會年會論文集,新華出版社,2014.8:697-702.
[2] 方英蘭,劉高軍,宋威.C語言程序設計課程的改革與實踐[J].電腦知識與技術:學術交流,2014(12):8225-8226.
關鍵詞:C語言;說課;專業基礎;教學質量
在高職院校C語言教學中,教師經常忽略教研備課的作用和意義,同事之間因為所授課程的不同交流也減少了,而在常規的教學檢查中又往往沒有統一的標準和項目規范,因此無法準確地衡量教學水平。[1]本文采用說課形式,闡述了一定的教學觀點,表述了具體執教C語言的教學設想、策略,以及組織教學的理論依據,對高職院校C語言的教學起到了積極影響。
1 課程的性質、地位及目標
(1)C語言課程的專業背景。其專業培養目標是:面向軟件公司等IT行業,培養學生具有創新思維的能力,能從事軟件編碼、測試和技術支持服務等相關工作的高等技術應用型人才。專業就業崗位是:程序員、軟件測試工程師、軟件技術支持工程師。[2]
(2)課程體系結構定位及課程性質。軟件專業第一學期開設C語言程序設計,第二學期根據專業方向的不同分別開設C#程序設計(.NET方向和3G)、JAVA程序設計(JAVA方向),第三學期分別開設C#Windows程序設計、數據結構、JSP程序設計,第四學期分別開設系統開發、J2EE開發,第五學期都將開設綜合項目開發。由此可見,C語言的課程性質是高職高專計算機軟件專業的專業基礎課,為將來進一步學習C#、Java語言,掌握軟件開發項目能力奠定堅實基礎。
(3)課程目標。總體目標是:讓學生在自主、和諧的氛圍中感受編程的樂趣、激發學習知識的興趣、培養團隊合作精神,能力目標是:培養編程思維能力,熟悉基本程序設計方法,建立良好的編程思想和風格、解決實際問題的能力、將為后續其他相關課程的學習奠定基礎,教學目標是:熟練應用三大語句、掌握程序的基本結構、掌握數組和函數的運用、掌握指針和位運算的基本操作。
2 課程設計的理念與思路
由于高職院校學生具有文化素質較低 、自控能力相比較差、學習積極性較差等特點,C語言的教學應采用教、學、做一體化的教學方法。[3]具體來說,通過突出重點教學來著重培養學生的編程思維能力,啟發式教學來激發學生的學習興趣,任務驅動創建一種基于工作實例的模式來培養學生解決實際問題的能力,項目教學可以使學生了解項目開發過程并培養學生的團隊合作及溝通交流能力。
3 課程內容設計
(1)夯實基礎。將C語言課程的內容分為四大模塊:C基本概念、三種基本程序設計結構,數組與指針、函數。這樣將有助于學生逐個模塊對基礎知識的掌握,從而夯實了基礎。[3]
(2)突出重點與難點。C語言課程的重點模塊是:程序設計基礎知識、順序結構程序設計、選擇結構程序設計、循環結構程序設計、數組、函數,與其所對應的重點內容有:流程圖的畫法、變量的理解、表達式的正確書寫、數據的輸入/輸出、if語句選擇結構、while與for循環結構、函數的定義與參數傳遞。C語言課程的難點模塊是:選擇結構程序設計、循環結構程序設計、數組、函數、指針、結構體,與其對應的難點內容有:if語句的嵌套、多重循環程序設計、二維數組與字符串、指針、函數的嵌套調用與遞歸調用。[4]
(3)詳細內容設計。 C語言課程的教學案例都來自于學生感興趣的生活中的案例。具體見圖1。
4 教學方法
采用現實生活場景,應用任務驅動、啟發式教學方法實現教學做一體化。所謂教學做一體化如2圖所示。
任務驅動教學法:為學生提供體驗實踐的情境和感悟問題的情境,圍繞任務展開學習,以任務的完成結果檢驗和總結學習過程等,改變學生的學習狀態,使學生主動建構探究、實踐、思考、運用、解決、高智慧的學習體系。在C語言的教學中如,ATM取款機登陸程序,可以將其分解為3個小任務(單個密碼的一次登、單個密碼的三次登陸、多位密碼的三次登陸)來逐步完成。
啟發式教學法:設趣(通過問題引入任務目標,提高學生興趣),再激趣(通過任務分析,激發學生好奇心和求知欲),再誘趣(誘發學生“生疑-思疑-釋疑、再生疑-再思疑-再釋疑”的螺旋式上升過程,將任務的解決從易到難逐步推進,一環扣一環提出問題,不斷誘發學生思考,掌握解決問題方法),然后再擴趣(抓住時機,讓學生再質疑,引導學生進一步自主探究),最后才完成任務及掌握方法。
5 教學考核評價
6 教材分析
C語言課程選用了什么教材,以及該教材所具有的特點。
7 教學保障
(1)師資保障。為了提高教師的專業能力及項目實踐水平,每年選派老師赴企業實習,參與企業真實項目的實踐。
(2)硬件資源保障。軟件開發實訓室是理實一體化實訓室,實訓室既有學生上機的電腦又配有投影設備,可供師生雙方邊教、邊學、邊做,保障了教學化一體化的實現 。
參考文獻:
[1]任寶貴,陳曉端.說課與教師專業發展[J].教育科學研究,2009(02).
[2]姜華斌,張新民.高職軟件人才培養模式的探索[J].現代大學教育,2006(04).
[3]管銀枝.C語言程序設計實例教程[M]. 北京:人民郵電出版社,2011.
關鍵詞:課程整合;模塊化案例教學;啟發教學;程序設計;解決問題能力
中圖分類號:G642 文獻標識碼:B
1引言
“C語言”是從事計算機軟、硬件開發和應用人員必備的專業知識。C語言既具有高級語言的特點,又具有低級語言的功能,語法結構簡潔精妙,便于描述算法,寫出的程序效率高,運用C語言可以編寫系統底層的內核程序。C++、Java、C#、J#、perl等高級語言也是衍生自C語言,所以掌握了C語言,可以很容易掌握這些新型的語言去開發程序。因此在高等院校與計算機相關專業的教學計劃中,“C語言程序設計”是一門必修的基礎課及核心課程,是一門理論性和實踐性均較強的課程。開設“C語言程序設計”課程主要培養學生掌握結構化程序設計的基本方法,建立嚴謹的程序設計思想及較強的動手編寫及調試程序的能力,逐步培養獨立分析問題和解決問題的能力。同時為數據結構、操作系統及其他高級語言課程等后續專業課程的學習打下扎實的理論和實踐基礎。
在以往的教學過程中,大部分學生對學習“C語言程序設計”存在畏難情緒,更不知如何運用C語言解決實際問題。教學效果不理想,給后續學習造成障礙。筆者在教學中調整了以往按部就班的教學模式和重理論輕實踐的教學理念,將模塊化案例教學引入“C語言程序設計”的課程中,進行了教材整合和強化實踐教學,并圍繞模塊化案例展開C語言教學,以案例引出C語言的知識點。全部授課都以程序設計為目的,收到顯著的教學效果。
2課程進行整合,建立模塊化案例教學
2.1傳統的教學模式以語言知識為主線
傳統的“C語言程序設計”課程教學模式采用以語言知識為主線,按照變量、數據類型、表達式、數據輸入/輸出、流程控制、函數、指針、結構、文件等順序進行教學,實訓課多以驗證為主。學生在學習的過程中每一知識點都是獨立聽記,不能將所學知識進行綜合運用。因此,學生是邊學邊忘,學習后續內容沒有前期知識支撐,學到5~6周就失去學習的興趣和信心,甚至有些學生放棄對該門課的學習,到期末考試突擊復習,不及格率比較高。
2.2課程整合以程序設計為主線
課程整合以程序設計為主線貫穿語言各知識點,就是將“C語言程序設計”課程內容分解為四個模塊,即C語言基本程序設計模塊、函數模塊、指針模塊、文件模塊,每一模塊都以案例展開C語言的知識點教學,講解C語言的理論知識為目的,上機實訓以授課中的案例貫穿始終,即強化理論知識的掌握,便于后續知識的學習,同時還要逐步培養學生編寫C程序的能力,緊緊圍繞這四個模塊的案例舉一反三展開程序設計的實訓。
2.2.1基本程序設計模塊
利用“統計一名學生的三門課程平均成績”的程序,引導出變量、數據類型、表達式、數據輸入/輸出等C語言基本知識。這階段主要是引導學生掌握C語言程序的基本結構,編寫程序的基本方法,是學習C語言入門階段。如圖1所示。
2.2.2函數模塊
C程序是由若干函數構成的,函數是C語言的核心知識。因此,在講函數知識及設計函數程序時,將前面講述的計算學生多門課程成績組合成較完整的C程序案例。如圖2所示。
通過這個案例講清C語言中變量的存儲類型的區別和功能,函數調用、參數傳遞的方式及要求,按值和按地址傳遞區別。在講函數調用時啟發學生逐步完成圖2各個程序模塊的組合。同時調動學生的積極性逐步擴展圖2中的功能,將所學的知識進行綜合應用,并提出預處理和文件包含知識概念及運用。
2.2.3指針模塊
指針是C語言的重要功能,正確而靈活地運用指針,可以動態分配內存和對物理地址直接進行操作,方便地使用字符串和數組,有效地表示復雜的數據結構,在函數調用時能獲得1個以上的函數值。指針內容非常豐富,而且復雜,這部分是C語言的重點,也是學習的難點。按常規模式教學,學生對指針知識理解難、運用更難,部分學生到此幾乎放棄學習。采用模塊案例教學,學生首先了解指針的運用,調動學生學習的興趣和學習的欲望,然后逐步從指針案例中啟發引出知識點,邊學邊用,通過實例反復練習,學生能較靈活運用指針知識編寫程序。指針模塊如圖3所示。
首先利用演示鏈表案例引導出動態分配內存。然后演示用指針修改數組處理學生成績排序的程序案例,或者設計較簡單的對硬件操作的案例,讓學生了解指針知識運用之后,再由學生模仿將函數模塊中用數組存儲數據修改為用指針進行數據處理。在知識引申的過程中,逐步提出字符串指針、指針數組及指針數組做main()函數的參數的運用。
2.2.4文件模塊
主要講述輸入輸出函數,將內存中存儲的數據輸出到外存上,仍然利用案例分析文件的概念及文件的運用。
3圍繞案例展開教學
在基本程序設計模塊中,以計算1名學生三科成績的平均成績這個程序開始引導C語言基本知識。程序如下:
#include
main()
{ int scor1,scor2,scor3;
float grade, total;
total = 0.0;
printf(“Enter grades: \n");
scanf("scor1=%d ,scor2=%d ,scor3=%d", &scor1, &scor2, &scor3);
total= scor1 + scor2 + scor3;
grade=total/3;
printf(“Grade average is %.2f\n", grade);
getch();
}
3.1案例啟發教學,使學生輕松聽課
在案例教學過程中,要求學生熟記模塊中程序。例如:第一次課熟記“統計1名學生三科成績”這個程序。然后調動學生學習的積極性和主動性,引導學生積極思考和參與,一起分析程序中語句的含義,在分析語句的過程中,采用啟發式的循序漸進、由淺到深、由易到難,逐步提出新問題,引出C程序中新知識,用新知識解決新問題,再舉一反三寫出對應不同問題的C語言程序。例如:提出判斷并輸出學生三科成績的最高分和最低分引出分支結構。提出若是8門課,進行總成績統計的簡便方法,由此引導出循環結構。根據對成績升序或降序排序引導出一維數組,再計算多個學生中每個學生多科成績引導出二維數組等,根據引導的知識逐步擴展和加深知識的運用。
保證學生動腦、用心聽課。教師在講解每個基本知識的過程中不要面面俱到,對常用的編程知識細講熟練,不常用的知識略講或用表格統解,有些基礎知識是隨著編程逐步引出或者以后應用時在自學,保證學生聽課不疲勞。聽得懂、跟得上、興趣濃,興趣是學習的動力,動力會產生效果。同時要求學生強化記憶判斷最高分、成績排序等程序,以便于后續課由用戶建立的若干個自定義函數構成較完整的程序。在分析函數案例過程中,講清數據存儲類型的區別及參數的使用等知識。授課過程如圖4所示,每節課結束前教師與學生共同總結本節課的重點知識,便于課后復習。
3.2培養閱讀程序的能力
讀程序是學習C語言入門最快,也是最好的方法。教師在講述程序中各語句含義的時候,首先培養學生閱讀程序的能力。在閱讀程序的同時注重培養學生掌握C程序的結構。例如:編寫程序首先根據表達式確定變量及變量的數據類型,然后給變量賦值(直接賦值或通過鍵盤接受值),再進行運算,最后輸出計算后的結果等。要求學生不放過每一章中提到的所有例題,仔細研讀程序,直到每一行都理解了。看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,掌握程序結構。為了使學生盡快掌握編程思想和基本結構,教師課后給學生布置一些設計C程序作業,由學生根據自身能力,閱讀程序、修改程序、給程序補充語句以及寫出程序運行結果,強化訓練。
3.3培養學生編寫程序能力,掌握分析問題算法
3.3.1模仿編寫程序
“C語言程序設計”是一門實踐性很強的課程,“紙上談兵”光學不練是學不好C語言的。在閱讀程序的過程中,培養學生學會模仿編寫程序,如果沒有深刻地理解C語言的語句及掌握編寫程序的基本方法,模仿編寫程序也是一句空話。在模擬編寫程序時,如果寫不出來,回過頭來再繼續研究例題,想想自己為什么寫不出來,然后再去寫這段程序,反反復復,直到熟練為止,在模仿編程的過程中培養學生養成良好的編程風格。
3.3.2分析算法
利用C語言編程解決實際問題,所需要的不僅僅是C語言語句,還需要相關的專業知識及算法。例如,如果你不知道計算π的公式,即使C語言學得再好也無法編寫計算π的近似值的程序。如果不知道判斷閏年的條件,就無法計算某年是否為閏年。所以在程序設計過程中,必須注重培養學生分析問題及找到解決問題的最優算法,這是設計程序的重要條件。
3.4強化編程能力的訓練,樹立編程信心
教師在全部的授課過程中,時時鼓勵學生能學好C語言。因此教師在提供豐富多樣的實驗題目時,注重學生的差異,讓學生根據自身水平和興趣,選擇自己能理解的訓練題目。讓每一個學生都能享受編寫程序獲得成功的喜悅,以促進學生堅定學習的信心和激情。同時教師鼓勵學生在學習“C語言程序設計”的過程中,閱讀一本C語言方面參考書,經常上一些好的C語言論壇進行學習、交流,開闊自己的視野。教師也經常組織學生進行師生間、學生間的學習交流活動,對實訓題目采取自測、在線判題等活動。這些多種交流學習方式,其目的是充分發揮學生在教學活動中的主體地位,調動學生學習的主觀能動性和求知欲望,使學生在交流中得到學習、思考,取長補短獲取編程的技巧。成績考核以筆試、實訓、交流等多種形式,每一環節著重考核學生綜合運用所學知識編寫程序、解決實際問題的能力。
4圍繞模塊案例開展實訓教學
在“C語言程序設計”的實訓教學中,通過上機調試模塊中的案例強化學生對所學知識的運用及深化理解,不僅培養學生編寫程序、調試程序的專業技能,同時注重對學生的人際技能方面的培養。
4.1培養學生專業技能
4.1.1調試基本程序設計模塊
初學者首先掌握C語言編程軟件的使用及調試程序的基本方法,修改程序中出現的語句、語法、程序流程等錯誤,積累調試程序的經驗。在調試程序的過程中,逐步培養學生主動思考、分析、探索、發現出錯的原因,并且能獨立加以解決。再通過修改已經運行程序的某些語句,查看程序發生的變化及分析結果變化的原因,加深對新學知識點的理解。實現“輸入”程序加深知識的記憶,“修改”程序加深對知識的理解。記憶和理解相輔相成,相互促進編程能力的提高。
4.1.2培養綜合實訓能力
當學生掌握了基本調試程序方法之后,對函數模塊、指針模塊、文件模塊案例進行調試,提高學生調試綜合程序的能力,修改程序中出現的邏輯結構、流程錯誤。綜合實訓可以根據函數模塊案例建立學習小組,每個自定義函數分配給小組中不同學生獨立編寫程序、調試、運行,逐步養成獨立分析問題,運用知識解決問題的能力和自學能力。然后將小組中每個人編寫的程序綜合在一起,進行綜合調試、運行。調動學生求知欲望及運用知識的能力,鼓勵學生樹立創新意識,增加程序的功能,利用開放的實訓環境進行自主調試,培養學生自我發展的意識。
4.1.3撰寫實驗報告
實驗報告是對實訓的總結和知識的鞏固,總結實訓中調試程序的經驗、收獲、不足和需要解決的問題,便于后續實訓課的操作。實驗報告也是師生交流的最好手段,老師掌握每個學生實訓過程中的問題、想法、效果等,可以調整授課進度和方法,提高學生學習效果。
4.2注重學生人際技能培養
當今企業用人原則是構建在以智力因素為基礎的非智力因素上,看重員工的心智模式建設及工作中表現出的協同合作精神、誠實可信性、抗壓抗挫折能力。因此在綜合編程實訓中,培養學生與人交流溝通的能力,在編寫程序過程中遇到問題能在一起討論、研究、共同解決,養成良好的團隊合作精神、責任意識,以適應市場用人的需要。
關鍵詞 VB程序設計 課程教學 實踐
中圖分類號:G424 文獻標識碼:A
Discussion on VB Program Design Course Teaching
LIANG Desai
(College of Mathematics and Computer Science, Qinzhou University, Qinzhou, Guangxi 535000)
Abstract VB program design is not easy to master, in order to make students understand and master, in the process of teaching, shold try to make first good lesson, by displaying the programming wonderfulity and practicality to stimulate students interest in learning; Set the appropriate learning ladder, induces the students to study; Hold the key, and gradually extended, cultivation of students' autonomous learning ability; Lead them to conclude, to sum up and, improve the ability of programming; Establishment of the interest group, guides the student to learn programming knowledge and skills applied in the actual development practice.
Key words VB program design; course teaching; practice
0 引言
《VB程序設計》是一門理論性、實踐性、靈活性和創造性較強的基礎課程。VB課程中的概念、編程思維比較抽象難懂,VB語言枯燥,內容繁多,對僅具有Windows初步知識的初學者來說,要學好這門課程,具有一定的難度。在程序設計教學中,如何激發學生學習興趣、培養學生自學能力,使學生能夠比較好地掌握課程的基本概念、基本理論知識和程序設計技巧,是值得關注和認真探討的問題。沈國珍從《VB程序設計》課堂教學進行了探索和實踐,①朱勇從培養學生綜合編程能力的角度提出了教學措施,②包健對課程中的抽象概念和難理解問題,提出了具操作性的教學方法,③楊錦偉對課程教學改革進行了嘗試。④下面根據大學低年級學生的實際和特點,談談對《VB程序設計》課程教學的探索和嘗試。
1 通過奇妙性和實用性來激發和引導學生的學習興趣
努力上好第一節課。在上第一節課時,應避免“從概念到概念”的這一教學模式。在簡單介紹了Visual Basic的窗口構成后,應通過一些簡單實例來顯示程序設計的奇妙性和實用性,引導學生學習、思考。結合學生的特點和學習的需要,利用最基本的方法開發簡單的應用程序,使學生對程序設計、窗體、屬性、事件和方法獲得直觀的體驗和認識。例如,教師可引導學生利用Form、Label、Command和Text等控件來顯示“Hello World! ”、“歡迎您!”設計實現一個簡單的計算器等。利用picture控件顯示精美的圖片,安排一些簡單有趣的動畫程序使學生了解如何用Visual Basic開發應用程序,讓學生從優美的畫面顯示過程中感受到用Visual Basic編寫程序的樂趣,用具體有效的簡單實例開發引導學生體會到用Visual Basic進行程序開發的實用性和有效性,顯示Visual Basic的實用價值。教師在現場操作,往窗體中添加各種控件,設置各控件的屬性,編寫代碼,講述并引導學生理解代碼的意義,達到最直觀、最鮮活、最直接的教學效果,教師不失時機地加以繪聲繪色的講解和點評,安排實驗課,讓他們在教師的指導下一步一步地做出來,契合學生渴望成功的心理,這樣能喚起學生強烈的好奇心和進一步深入學習的興趣,這樣想方設法上好入門課,使學生在不知不覺中便對窗體、對象、事件、方法、控件及其屬性等概念有初步的認識和理解,在隨后運用這些概念時,水到渠成,順理成章,學生便容易理解和接受。
2 通過設置適當的學習階梯來引導學生逐步深入學習
VB教學的目的之一是使學生能夠獨立編寫程序,而學習編寫程序不是一蹴而就的,需要經過反復練習才能掌握。其中,設置恰當的學習階梯和步驟是一個重要的教學方法。在教學中,設置問題的階梯,以學生較易理解為尺度,合理控制在學生可以接受的范圍,步步為營,循序漸進,逐步深入,一步一步引導學生練習程序設計,使學生容易獲得學習的成就感,感受到學習的樂趣,增強學習的主動性,培養學生獨立探索、勇于攀登、開拓進取的精神。
在教學中,可以鋪設必要的過程和臺階使學生練習編寫程序:第一,仔細分析問題,明確問題的要求,理清思路;第二,精選實例,精講例題,思考用到哪些算法,畫出算法流程圖,設計界面,設置各個控件的屬性,編寫代碼;第三,加強閱讀程序的訓練,要求學生閱讀程序、寫出程序運行結果、指出程序的功能等,使學生體會各種語句的功能和使用,能夠讀懂別人寫的程序是今后自己獨立編程的基礎和前提;第四,引導學生做程序填充題和程序改錯題,給出程序,把其中一些關鍵的地方留空,要求學生填充,或者在程序中有意提供一些錯誤語句,讓學生自己改正;第五,布置相應的編程題,讓學生模仿練習和完成;第六,要求學生獨立編寫應用程序。
例如,要求學生編程求20個整數的最大值的程序,之后再讓學生求這20個整數的最小值,再求這20個整數的和與積,最后寫出求這20個整數的排序方法(如冒泡排序)。通過這個實例,可以使學生加深對數據交換、函數MsgBox( )、選擇結構及循環結構的理解和運用,在學習了數組之后,這個問題也可以用數組來解決,這樣可以從不同的角度和方向來提出問題。
此外,可以根據問題特點,設置問題的梯級,引導學生思考和練習,體現教學過程中問題設置的階梯性,循序漸進,由淺入深,逐步深入,在教學過程中對問題逐層展開和深入推進。
例如,要求學生編寫程序,打印如下所示的“數字三角形”:
這是文獻⑤上的一道練習題,學生看到這道題時,感到難以著手。教師可因勢利導,為學生鋪設臺階,讓學生自己思考完成:
編寫程序,打印如下的“數字三角形”:
進一步,可提出如下問題,鋪設另一個臺階:編寫程序,打印如下“數字三角形”:
待學生思考之后,再讓學生考慮原來的問題,學生便不再感到困難,而且很快獲得成功的喜悅,學習的興趣油然而生。
3 培養學生的自主學習能力
課程概念多、內容多,課時少,在教學中,不必對教材中的每一部分都講解,可根據教學的需要,選擇基本或重要的內容詳細講授,調整教學內容的先后順序,降低學習的難度,待學生有了一定基礎后,再提高對他們的要求。在教學中培養學生的自學能力,課堂上無法講授的內容,可安排讓學生自主學習。
引導學生在選擇結構和循環結構中養成運用動態思維理解程序的習慣,積累各種算法設計技巧,加強算法的教學。算法是指解決特定問題的思路和方法,是程序設計的靈魂,是程序設計教學的重點之一。對一個問題,先分析問題,考慮問題用到哪些算法,算法清楚了,再編寫代碼。即,在順序結構、選擇結構、循環結構和數組的教學中,要明確和強化求和、求積、階乘、通項計算、最大最小值、排序、判斷素數和奇偶數、遞歸、過程調用、迭代計算、最大公因數、方程求根、定積分計算、數據交換、查找、字符串的一般處理、順序和二分檢索等常用算法的技能訓練。對這些知識點應詳細講解。算法弄清楚了,程序設計就有章可循。
難點解決了,常用算法搞清楚了,就容易擴展到其它的問題,學生對程序設計就不會感到無所適從,就容易取得成功,學習的興趣才會持續和深化。
4 通過歸納和總結來提高學生的程序設計能力
這也是由本課程概念多、內容多、知識點多決定的。采用案例教學法,在教學中滲透基本概念和知識的教學,注意選擇案例的知識性、趣味性、實用性、典型性、代表性、綜合性和完整性,包括要講的新的知識和語句,同時也大量使用了前面已學過的知識,在學習新知識的同時復習了前面學過的知識,這樣以“任務”為載體,以點帶面。在學完一個單元后,引導、幫助學生總結,布置相應的練習。比如,對循環結構,應引導學生比較幾種循環語句的聯系、區別和使用,多重循環語句的使用以及For Each…Next用法等,注意結合具體的實例來講解。學完本課程后,還要幫助學生梳理、歸納和總結,講授和布置一些典型的綜合編程練習題,在練習中復習、鞏固所學的程序設計知識,提高程序設計能力。
5 鼓勵學生把自己掌握的程序設計技巧應用于實際中
興趣是最好的老師,而實踐是學習知識獲得技能的目的和必要的途徑,也是深入學習提高技能,保持興趣,形成和促進良性循環的最好方法。在學生學習了VB程序設計的基本知識后,應不失時機,把教學班分為若干興趣小組,每組給定任務,要求學生努力完成,使學生在做中學,在學中做。培養學生的實際動手能力和學習能力。例如,給每一組學生各布置一道用VB開發較簡單的數據庫應用系統設計⑥⑦的題目,如圖書管理系統、學籍管理系統、超市管理系統等,使學生認識到所學知識在實際中能派上用場,增強學習的自覺性和積極性。一段時間后,就可以布置這樣的問題讓學生動手做,要求在學期結束完成。教師要提出明確的要求,可以先簡要介紹建立數據庫的基本知識,介紹用VB連接數據庫的方法,講解常用數據控件,通過實例做必要的示范,讓學生在做信息系統的過程中真正掌握VB程序設計的知識和技能,提高程序設計的能力。
6 結束語
教師要根據教學實際,適當降低入門的難度,精心選擇合適的實例,注意實例的知識性、趣味性、實用性和典型性,合理設置問題的難度和梯級,由淺入深,循序漸進,突出重點,分散難點,以點帶面,引導學生學習、總結和復習,把程序設計知識應用于具體的實踐中,培養、保持和發展學生的學習興趣,積極思考,努力探索和實踐,提高程序設計的能力和自主學習的能力。
基金項目:項目編號0992023-5、HYSYS-ZD01、HYSYS-ZD02
注釋
① 沈國珍.《VB程序設計》課堂教學的探索與實踐[J].福建電腦,2007(4).
② 朱勇.論培養學生綜合編程能力的幾點思考[J].農業網絡信息,2005(9).
③ 包健.高等代數中的概念教學探討[J].高等數學研究,2007.10(4):17-25.
④ 楊錦偉.關于《高等代數》教學改革的若干嘗試[J].2007.20(1):78-79.
⑤ 劉炳文.Visual Basic 程序設計教程(第二版)[M].北京:清華大學出版社,2003.