時間:2022-10-20 11:16:52
序論:速發表網結合其深厚的文秘經驗,特別為您篩選了11篇c語言程序設計論文范文。如果您需要更多原創資料,歡迎隨時與我們的客服老師聯系,希望您能從中汲取靈感和知識!
數學地質解決地質問題的一般步驟或途徑如下:第一,進行地質分析,定義地質問題和地質變量,建立正確的地質模型;第二,根據地質模型選擇或研究適當的數學模型;第三,運用數值分析理論對數學模型進行求解;第四,運用C語言設計計算機程序,并上機試算;第五,對計算機輸出成果進行地質成因解釋,對所研究的地質問題作出定量的預測、評價和解答。為了很好地解決地質問題,需要同時學好《數學地質》、《數值分析》和《C語言程序設計》三門課程。本文將對《數學地質》、《數值分析》和《C語言程序設計》三門課程的教學內容和方法進行研究,并介紹瓦斯危險性預測數學地質軟件的開發。
1數學地質的教學內容及方法
數學地質(mathematicalgeology)是六十年代以來迅速形成的一門邊緣學科。它是地質學與數學及電于計算機相結合的產物,目的是從量的方面研究和解決地質科學問題。它的出現反映地質學從定性的描述階段向著定量研究發展的新趨勢,為地質學開辟了新的發展途徑。數學地質方法的應用范圍是極其廣泛的,幾乎滲透到地質學的各個領域。
1.1 數學地質的教學內容
數學地質的研究對象包括地質作用、地質產物和地質工作方法。通過建立數學模型查明地質運動的數量規律性。這種數量規律性具體表現為地質體的數學特征、地質現象的統計規律以及地質勘探工作中存在的概率法則。其內容可概括為以下3個方面:①查明地質體數學特征,建立地質產物的數學模型。例如礦體數學特征是指礦體厚度、品位等標志變化的數量規律性。按其屬性可劃分為礦體幾何特征、空間特征、統計特征和結構特征等4類。比如,盡管礦產有多種多樣,但礦石有用組分品位的統計分布卻服從正態分布、對數正態分布等有限的幾種分布律。從它們的分布特征可以分析判斷其成因特點,而且各類數學特征還具有不同的勘探效應。②研究地質作用中的各種因素及其相互關系,建立地質過程的數學模型。如盆地沉積過程的數學模型,地層剖面的計算機模擬,巖漿結晶過程的馬爾柯夫鏈分析等。③研究適合地質任務和地質數據特點的數學分析方法,建立地質工作方法的數學模型。論文寫作,C語言程序設計。例如,對于地質分類問題,可根據研究對象的多種定量指標,建立聚類分析或判別分析的數學模型,對所研究的地質對象進行分類或判別。又如針對大量的描述性的地質資料,通??蓪⑵滢D化為0~1變量,建立各種二態變量的多元分析模型(邏輯信息模型、特征分析模型、數量化理論模型等),以解決地質成因分析和成礦遠景預測等各類地質問題。論文寫作,C語言程序設計。
1.2 數學地質的教學方法
數學地質的教學方法可概括為:①數學模型法。應用最廣泛的是各種多元統計模型。例如用于地質成因研究的因子分析、對應分析、非線性映射分析、典型相關分析;用于研究地質空間變化趨勢的趨勢面分析和時間序列分析方法等。②概率法則和定量準則。由于地質對象是在廣闊的空間、漫長的時間和復雜的介質環境中形成發展和演變的,因此地質現象在很大程度上受概率法則支配,且具有特定的數量規律性,這就要求數學地質研究必須遵循和自覺運用概率法則和定量準則。同時,地質觀測結果不可避免地帶有抽樣代表性誤差,因此對各種觀測結果或研究結論都要做出可靠概率的估計和精度評價。以礦產定量預測為例,不僅要求確定成礦遠景區的空間位置,而且應給出可能發現礦床的個數及規模,發現礦床的概率,查明找礦統計標志的信息量、找礦概率及有利成礦的數值區間等。
數學地質的主要研究手段是電子計算機技術,其中包括:①地質過程的計算機模擬,該項技術可以彌補物理模型法和實驗地質學法的不足;②建立地質數據庫和地質專家系統,以便充分發掘和利用信息資源和專家經驗;③計算機地質制圖;④地質多元統計計算及其他科學計算。
2數值分析的教學內容及方法
數值分析(numericalanalysis)是研究分析用計算機求解數學計算問題的數值計算方法及其理論的學科,是數學的一個分支,它以數字計算機求解數學問題的理論和方法為研究對象。為計算數學的主體部分。
2.1 數值分析的教學內容
運用數值分析解決問題的過程:實際問題→數學模型→數值計算方法→程序設計→上機計算求出結果。數值分析的教學內容包括插值法,函數逼近,曲線擬和,數值積分,數值微分,解線性方程組的直接方法,解線性方程組的迭代法,非線性方程求根,常微分方程的數值解法。論文寫作,C語言程序設計。
數值分析具有如下特點:第一,面向計算機。第二,有可靠的理論分析。第三,要有好的計算復雜性。論文寫作,C語言程序設計。第四,要有數值實驗。第五,要對算法進行誤差分析。
2.2 數值分析的教學方法
根據數值分析的特點,教學時首先要注意掌握方法的基本原理和思想,要注意方法處理的技巧及其與計算機的結合,要重視誤差分析、收斂性及穩定性的基本理論;其次,要通過例子,學習使用各種數值方法解決實際計算問題;最后,為了掌握數值分析的內容,還應做一定數量的理論分析與計算練習,由于數值分析內容包括了微積分、代數、常微分方程的數值方法,學生必須掌握好這幾門課的基本內容才能學好這一課程。
3C語言程序設計的教學內容及方法
C語言是一種計算機程序設計語言。論文寫作,C語言程序設計。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。因此,它的應用范圍廣泛。
3.1 C語言程序設計的教學內容
C語言程序設計主要有兩方面教學內容:一是學習和掌握C語言的基本規則;二是掌握程序設計的方法和編程技巧。“規則”和“方法”即語言和算法,是本課程的兩條主線,二者不可偏廢其一。從一定意義上說,“方法”更重要,因為它是程序的靈魂。一旦掌握,有助于學生更快、更好地學習和使用其他的程序設計語言。
3.2 C語言程序設計的教學方法
C語言程序設計是一門實踐性很強的課程,對C語言初學者而言,除了要學習、熟記C語言的一些語法規則外,更重要的是多讀程序、多動手編寫程序。學習程序設計的一般規律是:先模仿,然后在模仿的基礎上改進,在改進的基礎上提高。做到善于思考,勤于練習,邊學邊練,舉一反三,學會“小題大做”,一題多解,這樣,才能成為一個優秀的C程序員。
4瓦斯危險性預測數學地質軟件的開發
瓦斯危險性預測包括瓦斯含量預測、瓦斯涌出量預測和瓦斯突出預測。在利用數學地質技術進行瓦斯危險性預測時,需要進行大量的計算工作,一般要求用計算機完成其數學建模和未采區預測工作。隨著計算機軟硬件和可視化技術的發展,編制高速、高效、準確、靈活、用戶界面友善的數學地質預測軟件,是瓦斯地質研究向定量化發展的需要。論文寫作,C語言程序設計。
4.1 數學地質模型的建立
瓦斯含量預測和瓦斯涌出量預測采用回歸分析建立數學模型,即通過規定因變量和自變量來確定變量之間的因果關系,建立回歸模型,并根據實測數據來求解模型的各個參數,然后評價回歸模型是否能夠很好的擬合實測數據;如果能夠很好的擬合,則可以根據自變量作進一步預測。
瓦斯突出預測采用判別分析建立數學模型,即按照一定的判別準則,建立一個或多個判別函數,用研究對象的大量資料確定判別函數中的待定系數,并計算判別指標。據此即可確定某一樣本屬于何類。
4.2 數學模型的求解
對建立的數學模型,采用迭代法對線性方程組進行求解,即利用計算機運算速度快、適合做重復性操作的特點,讓計算機對一組指令(或一定步驟)進行重復執行,在每次執行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。
4.3 數學地質軟件的開發
采用C語言編寫計算機程序,開發數學地質軟件。瓦斯危險性預測軟件的操作較為簡便,功能較為齊全。在軟件主界面菜單欄的菜單項下面,可分別進入瓦斯含量預測,瓦斯涌出量預測、瓦斯突出預測的對話框模塊。在對話框里分別輸入變量數據和數據文件,運行數據文件,按下詳細資料或判別結果按鈕,可以查看運算結果。按下預測未知單元按鈕可進入預測對話框。
5結論
1)對數學地質、數值分析、C語言程序設計教學內容及方法的研究為解決地質問題提供了便利途徑。
2)瓦斯危險性數學地質軟件的開發較好地運用了數學地質、數值分析、C語言程序設計的理論和方法,為數學地質、數值分析、C語言程序設計的教學提供了應用實例。
參考文獻:
[1]韓金炎.數學地質[M].北京:煤炭工業出版社,1993.1-282.
[2]姚傳義.數值分析[M].北京:中國輕工業出版社,2009.1-373.
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)04-0059-04
1 背景
如今各大高校均需要一個完整的系統來管理和保存學生的各門課成績信息,以便后期使用,論文以河海大學文天學院的工科專業學生成績為例,運用C語言程序設計和程序運行的環境,設計了一個簡單的學生成績管理系統,下面就來介紹該系統是如何構建的。
2 系統需求分析
2.1 系統功能劃分
該系統主要功能如下:
1)學生基本信息和成績的錄入;
2)學生成績的管理,如計算總分、排序、統計等功能。
2.2 系統功能結構設計
這個學生成績管理系統中包含的學生信息有:學生的學號、姓名、性別、高數成績、英語成績、計算機成績、三門功課總分,主要的功能模塊如下:
1)輸出學生基本信息并算出總分;
2)按照學號進行排序;
3)按照總分進行排序;
4)統計各門課程平均分;
5)統計男女學生人數;
6)按照姓名進行排序;
7)統計高數成績優秀(大于等于80分)的人數,并輸出符合條件的記錄;
8)統計每門功課成績都在80分以上,或總分在240分以上的人數,并輸出符合條件的記錄。
C語言中系統的每個功能由一個函數來實現,其系統功能模塊層次結構圖如下:
圖1 學生成績管理系統功能模塊層次結構圖
因為函數就是功能,所以對于圖1的功能模塊層次結構圖,每個模塊就對應C語言中的一個函數,該系統中所涉及的函導捌涔δ莧縵攏
1)int Menu();
主控菜單函數,有返回值,無參數。用菜單形式顯示該系統能實現的所有功能,以供用戶查看和使用。函數中的返回值為用戶輸入的序號code,為局部整型變量。
2)void Read(struct student stud[],int *n);
讀入數據函數,無返回值,有參數。形式參數stud為結構體數組,由于調用此函數時實際參數為數組名,因此此處用數組接收;形式參數n為指針變量,由于實際參數為存放學生人數的整型變量的地址,因此n指向存放學生人數的整型變量,這樣可以在讀入學生信息的同時,還可以統計出學生的人數。
3)void Print(struct student *pstud,int n);
輸出數據函數,無返回值,有參數。形式參數pstud為指針變量,指向存放學生信息的結構體數組,這樣可以將相關變動信息返回給主調函數;形式參數n為整型變量,存放學生的人數。
4)void total_order(struct student *pstud,int n);
按總分排序函數,無返回值,有參數。形式參數同上。
5)void num_order(struct student *pstud,int n);
按學號排序函數,無返回值,有參數。形式參數同上。
6)void ave_count(struct student *pstud, int n);
統計各門課平均分函數,無返回值,有參數。形式參數同上。
7)void nn_count(struct student *pstud,int n);
統計男女學生人數函數,無返回值,有參數。形式參數同上。
8)void name_order(struct student *pstud,int n);
按姓名排序函數,無返回值,有參數。形式參數同上。
9)void gxyx(struct student *pstud,int n);
統計高數成績優秀人數函數,無返回值,有參數。形式參數同上。
10)void mm(struct student *pstud,int n);
統計每門課分數不小于80分或總分在240分以上人數函數 ,無返回值,有參數。形式參數同上。
3 C語言程序設計
一個C語言源程序由若干個函數構成,且有且僅有一個主函數,主函數的名字只能是main,其他函數名字由用戶自己定義,只要滿足標識符的四大規則即可。一個程序總是從主函數開始執行,無論主函數在前還是在后,該系統中除了主函數外,還有十個函數,下面針對其中幾個重要的函數進行程序設計。
3.1 主函數程序設計
為了方便讀者更好地讀懂該程序,部分地方加了注釋,以上程序中/* */為注釋,計算機并不執行。其中第四行的N為符號常量,表示該系統記錄了10個學生信息,每個學生信息用結構體類型的數組來保存,該結構體類型包含4個子成員,每個成員又是另一種類型的數據,其中學號、姓名、性別均由字符數組存儲,成績由整型數組存儲,這樣就構成了struct student結構體類型,主函數中的第一條語句就是用這種類型定義了結構體數組stud,用來存放十個學生信息。接下來就在主函數中調用各個函數,實現相對應的功能。
3.2 用戶自定義函數程序設計
3.2.1 主控菜單函數的設計
在屏幕中顯示主控菜單,scanf為輸入函數,需要輸入一個整數,通過輸入相對應的數字序號,可以實現相應的功能,例如輸入1,即顯示學生全部信息。
3.2.2 讀入數據函數的設計
該系統是從文件中讀取數據,10名學生的信息存儲在文本文件studfile.txt中,如果想修改學生信息,直接在文件中修改即可,不用修改程序,這樣既方便又快速,大大節省了時間。
3.2.3 按姓名排序函數的設計
以上程序使用冒泡的排序方法按姓名從小到大排序,系統直接將排序的結果輸出到屏幕中,以供用戶查看和使用。
4 系統界面
將以上程序輸入到計算機C語言開發環境Microsoft Visual C++6.0中,經過編輯、編譯、連接以后就可以運行了,運行界面如下:
1)系統菜單界面
當按下回車鍵,系統進入菜單模式,按照序號選擇需要顯示的信息。
2)@示學生信息界面
當按下序號1,系統進入顯示全體學生信息界面,顯示的同時計算出了3門課總分。
3)按學號排序界面
按下回車鍵繼續進入菜單進行選擇,當按下序號3,系統進入按學號從小到大排序的界面。
4)統計高數優秀的學生人數和記錄
按下回車鍵繼續進入菜單進行選擇,當按下序號7,系統進入統計高數不低于80分的人數和記錄。
5 結束語
論文主要介紹了學生成績管理系統的設計與實現過程,分別從系統需求分析、系統程序設計和系統界面設計三個方面展示了系統的設計與實現,其中系統需求分析包括大體功能劃分和具體功能結構設計,并設計了功能結構圖,描述了各項功能,系統程序設計包括主函數和其他自定義函數的設計。該系統總共實現了八項功能,學生信息來源于文本文件,這樣大大方便了學生信息的增刪改查等功能。系統中所有功能使用到的方法,還可以實現更多的功能,拓展性能良好,便于各高校各專業使用。
參考文獻:
[1] 胡楓. 《C語言程序設計》的案例式教學的設計[J]. 青海師范大學學報, 2010(4).
[2] 譚浩強. C程序設計[M]. 4版.北京: 清華大學出版社, 2010.
1 引言
C語言是國際上廣泛流行的計算機高級程序設計語言,他既可以用來編寫系統軟件,也可以用來編寫應用軟件。在高等學校的計算機教育中,C語言程序設計幾乎成了所有計算機相關專業的必開課程,從本科的計算機科學與技術、軟件工程、網絡工程等相關專業,到電子信息類理工科各專業,乃至高職的計算機應用技術、計算機網絡技術、應用電子技術等相關專業。有的是專業基礎課,有的是公共必修基礎課,只是課程名稍有差異,常見的有“C語言程序設計”、“高級語言程序設計”、“C語言”、“C程序設計”、“結構化程序設計”等。無論是哪類專業,也無論叫什么樣的課程名,其課程的教材選用卻無太大差別,大部分以譚浩強主編的清華大學出版社出版的《C語言程序設計》為教材。論文參考網。只是課時分配和教學要求差異較大。本科以學科知識教育為主,高職教育以應用為主,不過從目前的發展趨勢來看,本科教育也在向應用為主傾向。
2 賦值運算的定義
2.1賦值運算是各種計算機高級程序設計語言都提供的一種運算
在C語言程序設計中,賦值運算是應用最廣泛的運算之一,其定義的一般格式為:
變量 賦值號 表達式
他的作用是將一個數據賦給一個變量。
2.1.1 變量
變量是一個簡單變量。
2.1.2 賦值號
賦值號包括兩種,一種是“=”,就是C語言中的賦值運算符,他是一個雙目運算符,該運算符包括兩個操作數。例如:
#include “stdio.h”
void main()
{
int x;
x=5;
printf(“x=%d”,x);
}
其中“x=5;”,他的作用是執行一次賦值操作(或稱賦值運算),把整數5賦給變量x。最后程序執行結果是:x=5。
另一種是復合的賦值運算符,在賦值符“=”之前加上其他的雙目運算符,就構成了復合的賦值運算符。在C語言中,提供了10種復合的賦值運算符,他們是:“+=”、“-=”、“*=”、“/=”、“%=”、“>>+”、“<<=”、“&=”、“^=”、“|=”。其中前五種是關于算術運算的,后五種是關于位運算的。例如:
#include “stdio.h”
void main()
{
int x;
x=10;
x+=5;
printf(“x=%d”,x);
}
其中:“x+=5;”,等價于:x=x+5;他相當于使x進行一次自加5的操作,即他使x加5,再賦給x。程序的執行結果為:x=15。
再如:x*=y+5,等價于:x=x*(y+5) (注意:此時圓括弧不能省略),他的作用是使x乘以(y+5),再賦給x。還有 x%=5 等價于 x=x%5 等。
復合的賦值運算符可以簡化程序,使程序精練,也是為了提高程序編譯效率。
2.1.3表達式
表達式可以是:
常量:包括整型常量、實型常量、字符常量、字符串常量、符號常量等五種。
變量:包含C語言中允許的各種變量。
含有運算符和操作數的各種表達式,如:算術表達式、關系表達式、邏輯表達式等。論文參考網。
還可以是數組中的某個元素。
賦值運算符是右結合性的運算符,就是先將右邊表達式的值求解出來,再賦給左邊的變量,如果變量原來有值,此時就將原來值覆蓋了,變量當前值就是表達式的值。
3 賦值運算的讀寫過程
當賦值運算符的右邊表達式是變量時,參與表達式運算的是變量的值,也可以說是變量對應存儲單元的內容。而運算符左邊的變量是指變量對應的存儲單元。這樣就使運算符兩邊的變量有了不一致的說法,使一部分初學者產生了困惑。
計算機高級程序設計語言編寫的源程序,計算機無法直接識別,為了使計算機能夠執行源程序,必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進制形式的“目標程序”(object program),然后再將該目標程序與系統的函數庫以及其他目標程序連接起來,形成可執行的目標程序,即二進制指令。CPU進行取指令和執行指令的操作。在執行指令時,如果需要訪問存儲單元,則要在讀、寫信號的控制下進行,所謂讀操作,就是在“讀”信號的控制下,將地址線指出的存儲單元中的內容復制一份通過數據線取出,存儲單元中的內容不改變。寫操作,就是在“寫”信號的控制下,將數據通過數據線送入由地址線指出的存儲單元,存儲單元中的內容被改變。
例如:
z=x+y,讀x單元,讀y單元,進行類型處理后,加法,結果寫到z單元。此例中變量x、y單元的內容沒有被改變,z單元的內容被改變。
x+1,讀x單元,進行類型處理后,與常量1做加法,結果未做處理。論文參考網。此例對x的操作只有讀,因此其內容沒有改變。
x=x+x,讀x單元,進行類型處理后,加法,結果寫x單元。此例中兩次讀出的是x單元在賦值運算前的內容,最后對x單元進行了寫操作,x的內容被改變。
4 結束語
從上面的分析可以看出,只有對變量單元進行賦值運算時,即對變量單元進行“寫”操作時,變量單元的內容才會發生改變。如果對變量單元進行“讀”操作,變量單元的值不會改變。知道了這樣一個過程,對我們學習、理解賦值運算就容易多了。
參考文獻
[1]譚浩強. C程序設計(第三版).清華大學出版社
[2]李寅杰.賦值運算中的變量單元.科學時代
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2013)36-8369-02
單片機課程實踐是高校自動化專業集中實踐環節的必修課,是學生學習《單片機原理》課程后,進行的一次全面的綜合實踐,其目的旨在加深對單片機基礎理論和基本知識的理解,培養學生具有單片機系統應用軟件設計和開發的能力,在具體實現過程中強化學生的實踐意識,提高應用能力、創新意識和合作精神。在項目的實踐中,使得學生掌握一定的理論與技術知識,而且應該樹立管理理念,建立項目工程思維觀念,而這一點正是高級語言編程思維的一種體現。
通過將單片機課程實踐和高級語言程序設計實驗相結合,使學生在理解單片機理論和高級語言編程思想的基礎上,實際動手開發一個實際的應用系統,來提高綜合運用所學理論知識的能力。
1 研究內容或對象
引導學生運用已學的單片機理論知識、單片機程序設計方法和高級語言編程思想,具體設計一個實用的小型單片機應用系統,開發設計過程按以下順序進行――選定課題、調查用戶需求、總結歸納數據流程、分析性能、書寫需求分析及總體設計報告(包括組成原理圖、硬件連接、程序流程、系統功能模塊)、完成應用系統的開發、撰寫課程實踐報告、系統驗收、組織課程實踐答辯。讓學生在這一系列工作中綜合運用單片機系統原理以及編程語言等相關課程知識,培養學生的綜合素質。
根據單片機課程實踐和專業課程實踐兩個實踐教學環節各有4~5周但分散的實際情況,考慮將其進行整合。并在實踐教學環節中安排相應的指導老師對學生進行必要的指導和幫助,為學生提供分析思路,解決學生項目完成中碰到的實際問題。
2 研究擬達到目標
通過在單片機課程實踐中結合高級語言編程思想,使學生在掌握單片機理論基礎知識的同時,通過參與項目的分析、設計與實現,建立軟件工程理念,具備一定的理論與單片機實物實踐相結合、解決實際應用問題的能力。同時在完成項目的過程中,鍛煉科研開發能力和科研論文寫作能力,為大四的畢業設計和畢業論文的順利完成奠定基礎,并為以后工作中的理論與實踐相結合奠定良好的基礎。
使學生在單片機課程實踐和高級語言程序編程實踐相結合的實踐教學環節中,利用所學的單片機系統原理和C語言程序設計基礎知識設計單片機應用系統,解決單片機系統應用中的實際問題,掌握高級語言編程思想,借助相關編程工具,完成一個小型項目的自主分析、設計與實現。
3 主要研究方法
教師提供部分項目供學生選擇,學生亦可自擬項目,但課題的選擇要由教師審查核準。項目盡量選擇實際需求的題目,讓學生走出校園,通過調查走訪,了解國內單片機應用發展的狀況,開闊眼界,而且在開發一個真實項目的過程中,帶來求知的源動力,激發學生自主學習的渴望以及創造力;對于虛擬項目,要求學生做到切合實際需求,能解決一定的應用問題,有一定的應用價值。
編程開發工具原則上推薦學生使用KEIL C,如果學生認為其它開發工具更適合可由學生自主選擇。由于實際可用的編程開發工具與日俱增且不斷更新,為此在課程實踐中,對學生開發工具的選擇不做過多限制,使得學生可以選擇自己感興趣的程序設計工具進行項目開發,既鍛煉了學生自學的能力,又能讓學生成為項目開發的決策者,這種主人翁意識使得學生變被動學習為主動學習,從而激發學生自主學習的積極性。
為了防止學生對課程實踐任務敷衍了事,對課程實踐的考核方式由原來的提交程序和文檔改變為答辯的方式。且在集中教學環節之前就讓學生明確單片機課程實踐的任務,同時考慮在集中教學環節結束后適當放寬學生上交可運行的項目程序和課程實踐報告以及組織答辯的時間,讓學生能更好的延續自主學習的積極性并進一步完善項目的開發。
4 特色、創新及推廣應用價值
通過將單片機課程實踐和高級語言程序設計基礎實驗相結合,讓學生在項目的分析、設計、與實現的過程中掌握單片機理論知識、單片機系統應用的設計方法和高級語言程序編程思想 ,提高自動化專業學生理論與實踐相結合的能力,激發學生的學習積極性和主觀能動性,提高學生解決實際應用問題的能力。
《單片機原理》課程實踐教學,將單片機課程實踐和高級語言程序設計實驗兩個教學環節有機整合,讓學生能在該實踐教學環節中綜合運用單片機系統原理和高級語言程序設計基礎以及相關編程思想等多種知識,培養初步的科研能力和科研論文寫作能力以及團隊合作精神。并通過組織課程實踐答辯使學生進行類似畢業答辯的演習。
中圖分類號:TP3 文獻標識碼:A 文章編號:1009-3044(2014)19-4518-03
Java Programs Applied Undergraduate Teaching and Research Group for the Training of Software Engineers
YU Xiao
(Wuhan Technology And Business University Department of Information Engineering, Wuhan 430065, China)
Abstract: In this paper, application-oriented university training Java software engineers in the process of teaching a number of issues, analyzes how demand-oriented enterprise Java software engineers conduct group teaching curriculum design, including accurate positioning training applied talents teaching objectives, optimize Curriculum reconstruction and the accumulation of experience teaching curriculum system, integration and research.
Key words: Application-Oriented; Training of Software Engineers; Java Curriculum Group; Teaching and Research
1 應用型本科Java課程群的教學現狀
隨著計算機行業的發展進入到互聯網時代,由于 Java語言在計算機軟件開發尤其是支持網絡編程方面的優勢,大多數高校計算機科學與技術專業在培養計劃中都設置了Java系列課程的培養方案。應用型本科大學作為第三類大學在進行Java系列課程教學改革中確定Java課程群體系的培養目標是非常重要的。因為應用型本科培養的軟件類畢業生在就業中將會與研究性大學本科??飘厴I生、職業技術專科學院和職業培訓機構的學生進行競爭。為了適應軟件行業對Java開發人才的需要,高校簡單的開設一門Java語言程序設計是遠遠不夠的[1]?,F階段,應用型本科大學的Java課程體系是參考研究性大學本科課程體系的標準而制定的,并沒有突出應用性的特點,而學生在編程方面的能力培養遠不及職業技術學院、職業培訓機構的學生在實踐編程能力的培養。
2 面向培養Java軟件工程師課程教學的重要性
現階段計算機應用軟件的開發主要采用.Net平臺和Java兩大平臺,這兩個平臺各有千秋[2]。在計算機類職業培訓機構的課程體系中Java系列課程也是熱門的課程。Java軟件工程師的職位在目前就業市場中屬于緊缺職位。面向培養IT企業需要的軟件工程師,為企業輸送急需對口人才是各大高校在進行Java課程群的教學建設中需要考慮的問題。但是,很多Java課程體系的教學與市場需求存在脫節的情況。另外,Java教學的知識落后于企業正在使用的技術。計算機行業是發展和更新知識非??斓男袠I,由于高校教師缺乏與企業交流而導致在Java教學過程中不能及時更新到最新的技術,使得學生在畢業時所學的知識過時。
3 面向培養軟件工程師的Java課程群教學思路
3.1應用型本科大學在Java課程群教學改革中的優勢
應用型本科大學比科研型本科大學在課程設置上允許更為靈活,所以在Java課程群教學中可采用多種培養方式相結合。例如,在實踐教學環節可以加強校企合作。Java的實踐課程可以由企業的講師或軟件培訓機構的人員參與教學過程,在教學內容上,可以比研究性大學更偏重應用。也可以在高年級的實踐教學中的有限課時內讓學生直接在企業中實習。為實施素質教育,提高學生的專業技能,培養技術應用型人才,需要不斷探索以變更落后的教學方法,改革傳統的教學模式[3]。
應用型本科大學在教學過程中比職業培訓機構更注重綜合能力的培養。比如,應用型本科教學不僅教授的是Java語言,除此之外教學課程體系中還會設置有《數據庫原理》、《計算機網絡工程》、《操作系統原理》和《軟件工程》等重要的理論性指導課程,使學生在計算機應用能力上更具全面性,為學生更好的在職業發展中成為軟件工程師打好理論基礎,而不僅僅只能成為程序員。
3.2 面向培養軟件工程師的教學目標
應用型本科Java課程體系教學應將與Java技術緊密相關的多門課程整合起來形成課程群,以強化課程間的關系,理清課程間的銜接,避免課程內容的重復性。設計課程群中實踐課程的遞進關系。課程群的建設應緊密結合企業的需求,設計面向培養軟件工程師所需的能力項目的定向案例或課題。進行Java課程群教學培養的目標應是面向企業需求的以應用型為主的強化實踐編程能力的軟件工程師。
3.3 Java課程群體系
根據現有Java技術相關的教學課程選擇五門課程組成Java課程群,分別是Java語言程序設計、Java語言程序設計課程設計、Java Web程序設計、Java Web程序設計課程設計、Java技術畢業設計。課程群中前一門課程是后一門課程的基礎,課程的難度是遞進的由淺入深的介紹Java技術的應用。每門課程都有不同的教學培養的側重點,如下表所示。
表1 Java課程群的培養與考核
[課程名\&能力培養側重點說明\&考核方式\&Java語言程序設計\&Java語言基礎、面向對象程序設計、圖形用戶界面編程、文件編程\&理論筆試與實踐課程綜合評分\&Java語言程序設計課程設計\&三個方向的綜合應用程序開發:圖形用戶界面與文件流結合編程;圖形用戶界面與網絡通信結合編程;圖形用戶界面與數據庫結合編程\&答辯與課程設計論文綜合評分\&Java Web程序設計\&JSP技術基礎、JDBC、JSP進行動態網站開發\&理論筆試與實踐課程綜合評分\&Java Web程序設計課程設計\&使用JDBC數據庫連接技術進行JSP動態網站開發的綜合應用\&答辯與課程設計論文綜合評分\&Java技術畢業設計\&使用EJB應用開發、Java API的使用及服務的應用進行小型實際應用項目的開發\&畢業設計答辯與畢業設計論文綜合評分\&]
課程群的每門課程都分為理論教學環節、實踐教學環節和考核環節組成。每門課程的評分標準根據課程的特點而定。程序設計課程以理論考試與實踐課程的程序完成情況進行綜合評分,課程設計課程以系統運行演示與答辯結合課程設計論文的綜合評分,畢業設計環節需要通過本科畢業設計答辯和本科畢業論文的考核綜合評分。
4 面向培養軟件工程師Java課程群的教學研究
4.1 面向培養軟件工程師Java課程群教學方法的研究
在應用型本科大學教學多年Java課程群的課程以后,根據教學實際情況在教學方法方面進行了歸納總結。在Java課程群教學中應以學生在學習該課程的實際情況為出發點,一方面強化面向對象編程思想,因為面向對象是軟件工程的基礎,為后續用Java工具進行軟件工程與產品設計打基礎;另外一方面應突出Java與C++的不同點和各種工具包,主要以圖形用戶界面與事件作為重難點。具體來說,課堂教學方法上盡量深入淺出而突出重難點,因為一般來說,開設《Java程序設計》課程是在大學本科已經開設了至少兩門語言課程《C語言程序設計》、《C++語言程序設計》之后的高年級專業課,一部分內容希望學生在老師的引導下培養自學能力或在后續課程《軟件工程》與《Java Web程序設計》課程中逐步強化細節。
4.2面向培養軟件工程師Java課程群教學方式的研究
教師在本校應用型本科大學教學過程中與學生進行了多次交流,得到了學生寶貴的反饋,結合教師在不斷教學探索與實驗教學過程中的體會與思考,對進行培養面向軟件工程師的Java課程群教學方式改革進行了總結,得到以下五個方面的改進措施。
1) 實踐教學與課堂教學整合
學生反映理論教學在教室學習效率不高,建議安排在實驗機房進行教學,理論教學后及時進行上機操作能更好的鞏固知識,實現理論與實踐的同步教學。課堂教學中的每個知識點在理論教學后布置上機的小實例作業,學生通過完成小實例作業就能很好的檢測該知識點的掌握情況,將實踐教學與課堂理論教學整合。整個教學全程安排在實驗機房完成。
2) 分步式案例教學
Java課程群中的課程的每門課程開始列出該門課程的重要知識點。在教學過程中以一個綜合應用案例為線索,涵蓋該門課程大部分最重要的知識點應用。將這個綜合案例分解成若干部分,整個教學過程中在不同的重要章節中逐步分別講解案例的某個部分。最后,將分步驟講解的案例部分組合在一起,完成整個案例的拼接運行與演示。這種分步式案例教學讓學生對該門課程有一個完整的知識體系。分步式案例教學在培養學生綜合應用能力方面取得了很好的效果,使學生從應用角度對該門課程每章的內在聯系有了一個總體的了解。
3) 學生演講與教師指導相結合
一般來說,學生在學習Java課程群的課程時已經具有了一定程序設計語言的基礎,學生在現有的C語言或C++語言學習的基礎上進行多種編程語言的對比,能更好更快的掌握Java課程群的新知識。關于Java語言基礎和JSP語言基礎部分,例如變量與常量、表達式與運算符等知識點,可以讓學生進行課下自學,并在上課過程中由學生進行演講,對比現已學過的語言,分析Java語言或JSP語言的不同點和相同點。教師在學生講課中及時進行補充或更正學生知識點的講解。學生演講與教師指導相結合的方式適用于Java課程群中程序設計語言基礎部分。這種教學方式在一方面鍛煉了學生的表達能力,在另一方面讓學生鞏固了以往的知識點并學習了新的知識點。在一定程度上調動了學生的學習積極性和促使學生更加參與課程教學,增加教與學的互動。
4) 分組答辯式教學
學生的課程設計或教學演講都可以采用分組的方式,例如一個班級30人,一般將該班級分為6個組,每組5人。因為企業大型項目開發都是以團隊的方式進行的。在應用型本科Java課程群的課程設計類課程中以團隊方式進行答辯,每組團隊得到相同的分數等級。使學生更具有團隊合作意識,增進團隊合作能力進行編程,使學生在企業中作為軟件工程師能更快適應軟件開發團隊。
5) 案例式擴展教學在實踐教學過程中的應用
Java課程群中實踐課程教學可以采用一個應用實例貫穿到每個實踐環節。從課內小案例的添加功能就可以完成該門課程的大案例,再在這個大案例的基礎上進行優化完善可以完成綜合課程設計,然后添加高級應用功能可以達到畢業設計的要求。使實踐課程體系中的所有課程共同使用一個應用實例使這些多門實踐課程具有內在的連續性,又可以很好的擴展性,使一個應用實例不斷進行加強與優化。
參考文獻:
1 CDIO工程教育模式
CDIO工程教育理念中C代表構思(Conceive)、D代表設計(Design)、I代表執行(Implement)、O代表運作(Operate)。CDIO表述一種工程教育模式,從產品研發到產品運行的過程中,讓學生把理論知識和實踐動手兩者有效銜接在一起。其中構思,以工程實踐為目的,首先讓學生掌握基礎專業知識,用以確定以后的發展方向;設計,以解決某一具體的問題為目的,通過產品設計、規劃、研發,然后得以實現;執行,該環節實施一體化的課程實踐教學,主要考驗學生應用掌握的理論知識來進行實踐操作;運作,學生必須了解產品應用的各個環節,同時能為市場提供服務[1-3]。CDIO工程教育理念,注重培養學生基礎知識學習能力、個人能力、團隊協作能力、工程系統能力。
2 電子工程系《C語言程序設計》往屆教學情況
我系電子信息、電氣、機械專業,《C語言程序設計》在大一上學期開展,集中在教室進行理論教育。我院為培養學生良好的學習習慣,對于大一新生不允許帶電腦到學校,杜絕沉迷游戲荒廢基礎課學習的情況。但是,造成學生無法在課后練習C語言編碼,區分各種語法的差別,驗證代碼正確性,C語言學習效果不理想。進入大二學習《單片機》課程時,由于先修課程基礎不牢固,用C語言進行編程困難。先修課程沒有為后續課程起到很好的輔助作用。通過對往屆學生的調查,學生反映了《C語言程序設計》教學的問題。教學過程中過于注重語法細節,強調語法知識,為配合知識點的講解,引入的案例都是以輔助講解語法規則為目的,學生學習起來既覺得抽象又覺得無法引起興趣。學生覺得難以接受,學習缺乏動力,導致課堂氣氛沉悶,學生缺少學習興趣,造成學習效果不理想,更不可能真正理解程序設計的精華所在?!禖語言程序設計》課程沿用傳統的教學模式,易疏忽于對學生程序設計能力、程序代碼編寫能力以及團隊共同合作能力的培養。如果不注重積累工程經驗,學生不具備工程能力與動手能力,造成所學與實際所需相脫節?!禖語言程序設計》改革當務之急是如何借鑒先進的教育理念和方法,改變師生之間角色,讓學生成為課堂的主角,教師成為課堂的觀眾,從而激發學生主動學習積極性。
3 基于CDIO的《C語言程序設計》課程教學改革
3.1 調整課程設置,注重培養學生動手能力
根據CDIO工程教學理念,以培養學生動手能力、團隊協作能力、工程能力為目的。在大一上學期和下學期分別開設C語言程序設計和C程序實訓課程。《C語言程序設計》課程教學中注重“抓大放小”。“放小”,不拘泥于語法要素的細枝末節,避免學生在學習時容易產生厭學;“抓大”,側重循環、數組、指針、自定義函數等知識點的講解,讓學生掌握并熟練應用這些知識點。對于非計算機專業學生,在算法上不做過高要求,只要求會靈活應用現成算法解決問題。因此在教學過程中注重基礎知識的講授,通過引入具有代表性的案例,讓學生仿照這些案例的思想來解決類似的問題,讓學生從學習過程中獲得成就感,激發學生的學習興趣。后續的C程序實訓課程,通過單項目實訓和綜合項目實訓的方式,加強學生動手編制較大規模程序的能力。培養學生團隊合作意識,訓練學生工程動手能力,積累工程經驗和編程經驗,奠定堅實的基礎,無論是后續的專業課程學習還是將來的工作,學生都將顯現較好的分析問題和解決問題的能力。
3.2 結合多種教學方法,提高教學質量
3.2.1 “做中學”
“做中學”是CDIO的核心思想之一,該思想的主要目的是激發大家的學習興趣。為較好獲得“做中學”的效果,把學生學習地點從教室轉換到實驗室機房,讓學生邊學習邊實踐。在《C語言程序設計》教學中使用課堂案例和實驗案例,二者功能不同。課堂案例主要用于教師課堂講授,讓學生模仿編程進行驗證;實驗案例主要用于小項目編程調試。實驗案例是讓學生獨立編寫程序、調試程序,并敘述編程思路。程序設計的結果有助于增強學生的成就感,激發學生程序設計的熱情。
3.2.2 開展項目教學,培養學生團隊協作能力
CDIO另一個核心思想是“基于項目的教學”。“項目教學法”,主要通過實現一個完整的項目,讓學生明白,項目任務如何分配,如何協作完成,明白個人力量和團隊的力量。這一教學活動目的是把理論知識學習與實踐動手教學有效結合在一起,最大程度挖掘學生的創造能力,讓具備學生分析并解決實際問題的能力。在C語言程序設計和C程序綜合實訓課程的教學過程中實施“項目教學”的理念,我們把項目教學分為小項目教學和綜合項目教學。在C語言程序設計教學中實施小項目教學。所謂小項目教學就是教師把一個具體的管理系統拆分為幾個模塊,讓學生針對這些模塊展開討論和設計,然后整合這些功能模塊,最后老師按照完成情況給予學生。通過小項目將教學,讓學生懂得如何編寫和調試程序。在C程序綜合設計教學中實施綜合項目教學。在綜合項目教學中,老師提供若干個項目題目以供小組選擇。學生由2-3人組成一個項目小組,各自明確分工,小組完成程序設計、代碼編寫、代碼調試、歸納形成小論文和制作PPT參加答辯,最后由老師根據各個環節完成情況給出成績。通過小項目教學和綜合項目教學,不僅培養了學生動手實踐調試能力,而且逐步培養學生項目設計與實現能力,項目結題時的表述、演示能力。希望通過這種學習方式,使學生有更多的主動學習的機會。
3.2.3 借助網絡學堂,培養自主學習
利用學院網絡學堂平臺,教學案例,便于學生在課堂驗證程序,掌握語法知識;同時,每節課學生往網絡學堂上傳課堂練習程序,便于老師督促學生在課堂認真學習。由于課堂時間有限,另外在網絡學堂布置實驗案例,讓學生在課后完成,并提交到網絡學堂便于老師檢查。把學生編寫得較好的程序,公布在網絡學堂,不僅是對學習較好同學的肯定,更是對其他同學的激勵,激發他們學習《C語言程序設計》的信心和決心。借助網絡學堂的討論區,老師和學生、學生和學生可以在網上開展問題討論,學習不再局限于有限的課堂時間。
4 結束語
CDIO教育模式是理論聯系實際,激發學生創造能力,培養學生用發散型思維來思考問題并且解決問題,是一種卓有成效的教學方法。我們在《C語言程序設計》理論教學和程序綜合實訓中引入CDIO教學思想,通過案例和項目教學,讓學生在“做中學,學中做”;通過項目教學,整個教學充滿挑戰,進一步提強學生的學習主動性,培養學生解決實際問題的能力,具有了一定程度的項目開發、調試能力。
【參考文獻】
中圖分類號:TP311.1 文獻標識碼:B
文章編號:1671-489X(2017)06-0084-03
1 引言
C語言程序設計是理工科專業(如電子信息與科學、通信工程、物聯網技術和應用數學等)的基礎課程,嵌入式系統中的單片機與DSP程序設計,采用C語言編寫應用程序比匯編語言可讀性更強,且更易于維護[1]。該課程的學習目標是不僅要使學生學習程序設計的基本概念和基礎方法,學習編程規則,還要培養學生的計算思維能力、理論與實踐相結合的解決專業領域問題的應用能力,提高專業化教育過程中的創新培養層次。
然而絕大多數學生在剛開始接觸C語言程序設計這門n時,對計算機語言、算法和數據結構知之甚少,更不具備抽象建模、程序設計技巧的相應知識[2]。加上這是第一門程序設計課,大量的新概念、新名詞讓學生感覺應接不暇,在剛剛接觸編寫程序時毫無頭緒,只能仿照現成的例子照貓畫虎,進行淺層次的驗證性實驗,根本掌握不到程序設計的精髓,更達不到計算思維能力的培養,以致該門課程教學質量普遍不高。
為了解決這些問題,筆者在長期教學實踐中總結教學經驗、探索教學方法,提出“基于專業內容,以解決本專業問題為導向,以計算機圍繞專業問題服務為原則,促進學生個體發展,增強學生創新意識,產生創新能力”的教學思想。針對C語言程序設計課程特點,從教學理念、考核形式、教學方法、課程內容等方面做了大膽的改革與創新,采取多種教學方法和教學手段相結合,提高學生學習興趣,取得良好的教學效果。
2 精心設計以解決本專業問題為導向的教學案例
在以往的教學活動中,大部分學生的基礎知識雖然掌握得不錯,但在靈活解決實際問題方面,還是有不小距離的。他們雖然心中有一些解決問題的模糊思路,但不會將想法轉換成程序,甚至還有一些學生直到最后也不會把實際問題變換成算法設計。針對上述問題,課程組教師在教學內容的安排上注重在C語言教學中緊密結合本專業特點,本著“精講多練,重實用,重算法”的原則,結合專業方向對C語言程序設計課程教學內容的差異化要求,確定分專業分層次的教學內容,制度詳細的教學任務,選擇各專業的經典問題作為課堂教學案例。以專業知識為基礎,以解決專業問題為目標,采取任務驅動、因材施教的方式,創建多元化的教學體系,能夠激發學生的學習興趣。
將單純的C語言程序設計教學與專業領域應用相結合,把計算機程序設計作為解決專業問題的工具,有利于學生了解C語言程序設計作為“專業工具”的作用,便于學生對C語言精髓的掌握,能夠培養學生的計算思維能力、邏輯思維能力和邏輯推理能力,以及利用計算機解決本專業問題的能力,提高學生學習本課程的主動性、積極性,促進學生個體充分自由地發展,培養學生的應用能力和創新能力。
3 項目遞進驅動教學法
在實驗教學過程中,制定各專業領域相關實訓項目,以由易到難、循序漸進為主線,采取多層次的項目拓展訓練、遞進式的螺旋式教學方法,讓學生整體提高程序設計能力。整個教學設計分為三個階段。
編程基礎準備階段 本階段的教學內容主要是以本專業的經典問題作為課堂教學案例,引出本課程單元基礎知識。在這一部分教學中通過教師對教學案例的講解,學生通過實訓項目的上機操作,會出現輸入、編寫等問題,通過解決實訓時出現的問題加強對語法、編程規則的掌握。本著“精講多練,重實用,重算法”的原則,用大量典型案例進行實訓,起到拓展學生編程思維的作用。如在為數學專業設計程序三大基本結構項目時,本階段的教學案例分別為分支結構為分段函數的計算、循環結構為求1到10之間的自然數的和。
項目拓展階段 通過基礎階段的訓練,學生已經初步對程序設計有感性認識,并有一定的計算思維基礎,本階段的任務設計上以第一階段的任務為基礎,將與此相近、相關的案例進行總結,主要是通過實訓項目的形式來鞏固基礎階段的訓練成果,養成良好的編程習慣。如在為教學數學專業設計程序的三大基本結構項目時,本階段讓學生完成的項目有:求1到100之間自然數的和、判斷某數是否為素數、求1到100之間的素數、打印楊輝三角形、輸出各種形式的九九乘法表等。實訓題目按類別設計,同類的實訓項目一般設計多個,每個題目又根據難易程度設置不同的分值(方便后期的多元立體化評價),學生可根據自己對知識掌握的情況和自己的興趣愛好選擇一部分題目來練習。但不管是容易的題目還是難度較大的題目,都必須嚴格按照要求提交相關文檔以及編寫的程序代碼。
項目遞進階段 本階段讓學生自由組合成3~5人的互助式小組,以大作業的方式對整個學習階段的效果進行鞏固,同時進行測試和驗收。由于任務量比較大,所以該階段主要在課下完成。在本階段中,教改組成員在對不同專業做了詳細調研的基礎上,精心設計若干個與大學生各類競賽緊密結合的、貫穿整個教學過程的大項目作為本階段的任務。教改組成員為數學專業學生設計的課程大項目是學生成績管理、分析系統,該系統用到大量的數學分析函數來實現對學生成績的統計分析,要求學生盡量自己編寫這些數學分析函數,然后和系統提供的函數做出比較。為電子信息科學與技術專業學生設計的課程大項目是汽車導航系統,該系統用到硬件之間的通信和C語言基礎編程,讓學生看到原來C語言還可以做出如此高級的產品。這一階段主要以學生自主完成作業、教師負責答疑的形式進行,教師對學生提出的問題并不直接給出答案,僅僅給予學生一定的指引,引導學生通過各種途徑查找資料,促使學生自覺利用互聯網、校園網、圖書館、BBS教學網站系統來輔助本課程的學習,幫助學生學會文獻檢索的技能,為學生在以后的學習和工作中保持繼續學習打下堅實的基礎。在這一階段中,要求學生必須提供完整的項目文檔并完成教師組織的簡單答辯。
以上三個階段中,除第一階段由任課教師為學生寫出項目文檔大綱、學生進行補充完善外,其他兩個階段學生都要獨立撰寫項目文檔。在第二、三階段中,教師將學生分成若干小組,每個人作為小組的成員,都有分工,每個小組選出一名小組長負責整個小組內部以及小組之間的協調和管理工作,小組和小組之間以競賽的形式完成各個實訓題目并相互評價。教師H僅起到“導師”的作用,幫助學生打開解題思路,及時引導學生總結歸納編程技巧和語法知識,為學生提供技術支持。通過小組學生之間的討論和協作,提高他們學習C語言的主動性,同時也鍛煉了學生的團隊協作能力[3]。最終要求學生以小組為單位提交相關文檔以及編寫的程序代碼來檢驗本階段的教學效果,避免了以前個別學生抄襲別人報告的現象。
4 制定合理的過程監控機制,有效記錄學生的學習過程
積極探索有效記錄學生學習過程的監控機制,以上每個階段結束,任課教師都會及時對學生項目中的亮點和不足進行分別講解,并認真對學生的每個項目進行批注,以便學生進行改進。同時為每次作業劃分等級,讓學生明確自己本次學習所處的層次,讓學生既有學習的興趣,又有學習的壓力和動力。期末考核方式參考平時作業成績,采取“筆試+實驗考核+開放式作業+課程論文”的形式進行過程考核,積極探索C語言程序設計課程的“嵌入式”考核方式。
5 以解決本專業問題為導向的教學法的教學效果
基于專業內容的案例教學,培養了學生的學習興趣 以“加強基礎、拓寬專業、注重實踐”為原則,以案例教學、任務驅動、螺旋式上升模型等多元化的教學體系引導學生學習,把計算機程序設計作為解決本專業知識的工具,以本專業經典問題為導向的課堂教學案例,促進學生對專業知識的加深理解,使學生體會到C語言程序設計課程在專業學習中的地位,培養學生的計算思維能力、邏輯思維能力和邏輯推理能力,以及利用計算機解決本專業問題的能力,提高學生學習本課程的主動性、積極性,促進學生個體充分自由地發展,培養學生的創新能力。
螺旋式上升的項目任務,激發了學生的求知欲 項目遞進驅動的教學法,通過一個比較實際的切入點,特別是再通過附加一些微視頻,微視頻中教師一步步的詳細演示使學生感覺能夠入手,解決了學生學習程序設計課程的恐懼心理,然后再將此實例不斷修改、擴充,加大難度,引出與此實例相關的一組例子。在這樣的案例教學中,因為有提出問題、解決問題、擴展問題、再解決問題、對解決問題的方法進行評價、優化設計等幾個環節,實際上是一個循序漸進、螺旋式滾動上升的過程[4]。
在案例教學過程中,學生和教師相互提出問題、共同解決問題、深化和擴展問題、再提升解決問題、并對問題解決方法進行評價,這就是一個不斷漸進、提升的過程,在這個螺旋式上升的過程中,能夠非常自然地調動學生的參與。通過不斷擴展一個問題的多種解決方案并對多種方案進行對比,有效開闊學生的思維,強調學生的學習主體地位。這種層層推進的教學方法避免了學生“三級跳”式學習,而有了“走臺階”的扎實基礎,使學生在解決實際問題的過程中完成學習任務,實現計算思維能力培養與專業實際應用的無縫融合,激發學生的求知欲,增強學生的自信心。
立體化的過程監控機制,克服了學生臨時抱佛腳的學習劣習 “筆試+實驗考核+開放式作業+課程論文”的“嵌入式”過程考核機制,使得學生重視學習過程,避免考試前臨時抱佛腳的學習劣習。這種監控機制和“課堂教學實驗教學創新實踐”理論與實踐相結合、相輔相成、相互促進的螺旋式上升模型新教學手段,更符合各專業的教學需求。
6 結語
綜上所述,從專業內容出發,以解決專業實際問題為導向的C語言教學方法是以建構主義學習理論為指導,通過選取專業領域的經典問題,以協作學習的方式開展學習,通過完成最終的工程項目來達到意義建構。它突破了一般的教學模式,通過解決學生本專業的經典問題來實現學生對C語言程序設計知識的掌握,學生通過螺旋式上升的遞進教學法的學習,計算思維能力、解決專業領域實際問題的能力有了極大提高,大大提高了學習本課程的積極性和主動性。本文的教學理念和教學方法不但對非計算機專業學生的C語言課程教學效果比較好,對計算機專業學生的C語言教學也是很好的借鑒。特別是針對目前學生學業水平差異大、自主學習能力差的現狀,加上本課程應用性強的特點,本文的教學方法有其卓越的表現。
參考文獻
[1]馬玉春,汪文彬,王冬,蘇靜.面向工程技術的C語言程序設計教學實踐研究[J].瓊州學院學報,2011,18(5):64-68.
一、C語言程序設計教學工作的重要性
C語言是一門長盛不衰的程序設計語言,深受廣大軟件愛好者的喜愛。它功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,而且有著比較豐富的數據類型、運算符以及函數供以選用,又直接與內存打交道,使修改、編輯其他程序與文檔變得輕松、簡單,因此而廣受業內人士的青睞。在中等職業學校,C語言程序設計作為一門高級語言程序設計課程,是各理工科專業的公共基礎必修課。所以,開展好C語言程序設計的教學工作具有非常重要的理論意義和現實意義。
作為中職學校的C語言程序設計教師,我認為要想讓學生學好這門課程,不僅要通過認真講解課本知識讓他們掌握教材內容,更重要的是通過上機實踐增強和鞏固他們的知識,達到活學活用的教學目標。要讓學生在理論學習和基礎實驗的基礎上,提高他們的實際操作能力,培養他們綜合運用理論知識來分析和解決實際問題的能力、嚴謹的科學態度和良好的程序設計習慣,最終實現由知識向智能的初步轉化。在課堂教學中,要把注重教師的教轉向注重學生的學,要讓學生充分參與、充分體驗、充分感受C語言程序設計,通過自主合作探究和動手動腦實踐操作熟練掌握編程技巧,將課本上的理論知識與動手實踐有機地結合起來,既鍛煉他們分析解決實際問題的能力,又提高他們適應實際、實踐編程的能力。這是在傳統教學中難以實現的,因此突破傳統教學的禁錮和束縛,全面深化課堂教學改革,發揮現代課堂的生機與活力,激發學生的學習熱情和求知欲望已經成為當代教師義不容辭而且迫在眉睫的重任。
二、推進C語言程序設計課堂教學改革的緊迫性
本人任教的重慶工商學校創建于1987年7月,1996年被認定為首批國家級重點中等職業學校,2002年被確定為中國――澳大利亞職教合作項目五所項目學校之一,先后獲得全國職業教育先進單位、全國成人教育先進單位、全國中等職業學校德育工作先進集體等榮譽稱號。經過27年的辦學實踐探索,我校已成為目前中國西部地區規模最大、綜合辦學實力最強的中等職業學校之一。但是,我校的C語言程序設計教學工作還存在一些亟待解決的問題,迫切需要我們一線教師更新觀念、大膽創新,積極推進這門課程的課堂教學改革,點燃學生的學習熱情,提升課堂教學實效。
從教師的角度來說,由于C語言程序設計是各理工科專業的公共基礎必修課。因此涉及這門學科的專業較多,由于不同的專業根據實際情況制定了不同的人才培養方案,導致各專業在C語言程序設計課程上設置的學時數、考試性質等不盡相同,教學大綱也會根據人才培養方案中對該課程的不同安排再進行修訂,這就為我們一線教師增加了教學工作需要不斷變換的難度。為此,我們教師應該堅持學習,努力提高自身的教育教學理論水平,把不同專業的不同學時合理地分配到順序、選擇、循環三大基本結構和數組、指針、函數等教學內容當中去,并通過大膽嘗試和積極摸索,全面推進課堂教學改革,培養學生對C語言程序設計的興趣,激發他們的學習實踐熱情,提升課堂教學實效,讓學生通過這門課程的學習切實掌握技能,全面增強能力。
從學生的角度來說,C語言程序設計課程既不算是文科,也不算是理科,因為文科就算一個論文再長,寫100張紙也總有寫完的時候;理科的數學題再難,只要套上了公式就能得出答案,1就是1,變成2就錯了。但是計算機語言并不是這樣,如果要寫一個程序,你可能2天就做出來了,也有可能兩個月都做不成。再加上這門課程概念繁雜、知識點多、內容枯燥、難度較大且實用性不強,很容易讓學生產生畏難情緒和厭學情緒。而且由于教材對知識的介紹是分散的、循序漸進的,學生在學習過程中接觸到的例題也大都比較簡單,僅為說明某種特定算法而已。與之相反,我們在實際工作中將面臨的問題會復雜得多。另外,C語言提供了大量實用函數和擴展功能,這些往往是學習過程中無法涵蓋的。因此經常會出現這種情況:學生把課本上的知識掌握得滾瓜爛熟,但拿到一個設計卻無從下手,這也會嚴重削弱學生的積極性。針對這種情況,唯有教師改革課堂教學手段,把理論與實踐結合,把知識與能力并重,才能真正提升課堂教學實效,達成這門課程的教學目標。
三、C語言程序設計課堂教學改革的具體舉措
1、改變“滿堂灌”的教學方式,把注重教師的教轉向注重學生的學
課堂上,我們要一改往日“滿堂灌”的授課方式,通過提出問題,引導學生分析問題,讓他們自己去找尋解決問題的方法;然后再給出源代碼,分析源代碼,引出新知識點,對知識點進行講解;最終留給學生一個設計任務,讓他們自主合作探究,通過小組討論、齊心協力共同完成任務,達到鞏固知識點的目的。這樣的授課方式與“滿堂灌”相比,更為形象直觀,而且學生可以主動參與到問題的分析與討論中來,把注重教師的教轉向了注重學生的學,更有利于集中學生的注意力,更有利于發揮學生的主觀能動性,課堂效率也就自然而然提高了。
2、把理論與實踐結合,把知識與能力并重
摘要:計算機基礎課程在信息技術飛速發展的今天,更需要在網絡這個開放的環境中,為學生提供在線開放課程并共享課程資源。文章以清華大學計算機基礎課程為例,提出課程開放與共享的幾個方面,包括教學理念共享、教學設計共享、教學資源共享、實施方案共享和學習機會共享,討論教學資源開發中的指導思想問題、需求分析問題、標準化問題和知識產權問題。
關鍵詞:教學資源;開放課程;在線學習;資源共享;基礎課
隨著信息技術的快速發展,人們的學習方式也在發生著變化。信息技術不僅可以令學習不受時間與空間的限制,而且使得教師和學生可以通過網絡實現教學過程,令沒有機會進入校園的學習者可以在網絡這個更廣闊的范圍內學習自己需要的知識。在這種形勢下,計算機基礎課程如何利用網絡開放的環境為學生提供他們需要的在線學習資源,是一個值得思考的問題。
1 開放共享課程的現狀與思考
大量開放共享課程正在不斷涌現,主要由課程作者或教育機構開放課程或在線學習課程。開放課程的受益者主要是學習者,也就是要向學習者開放學習機會,但這并不夠,共享問題并沒有得到很好的解決。目前強調得比較多的教學資源共享,實際上只是教學資源公開。公開不等于共享,如果公開的僅僅是教學資源,那么這些資源將很難使用,原因在于教師不知道這些資源是根據什么樣的教學理念設計和開發、需滿足怎樣的教學設計目標以及應如何利用這些資源實施教學過程。
目前,國家精品資源共享課程是一個有效的機制,但是僅有平臺和形式還不夠,教師和教育機構還需要從理念上認識到共享的意義,從機制上保障和促進共享,真正愿意共享課程。同時,開放共享的資源需要標準化,這樣便于資源在不同的平臺間共享。另外,開放共享還需要有完善的知識產權保護機制。
2 課程開放與共享
2.1 教學理念共享
教學理念共享是課程開放共享的基礎與前提。教學理念就是人們對教學和學習活動內在規律的認識的集中體現,同時也是人們對教學活動的看法和持有的基本態度和觀念,是人們從事教學活動的信念。教師對一門具體課程的教學理念,是其對教學目標、教學內容、授課對象、教學模式等的理解。教學理念是指導教學設計、課程建設、教學活動實施的指導思想和總綱。
教學理念共享的內容至少應該包括課程目標、課程建設與實施的指導思想。例如,清華大學計算機公共系列課程的目標是培養能夠運用計算機科學理論與技術從事其他專業研究的跨學科人才;課程體系設計理念是寬口徑、厚基礎、強實踐、重創新。其中,程序設計公共課目標是培養學生運用計算機程序設計技術從事本專業科學研究與工程開發的能力。課程建設與實施的指導思想是以理論為基礎、以能力為目標、以技術為手段,鼓勵多樣化人才發展,提倡教師引導下的學生自主學習,鼓勵協作學習和共同知識構建,加強實踐環節和增強實踐能力,引導和鼓勵創新。我們的課程設計與實施和課程資源建設正是在這樣的教學理念指導下進行的。
2.2 教學設計共享
教學設計包括教學內容的選擇、講授的線索和邏輯。所有教學環節的設計不僅包括教學活動和考核方式的設計、教學活動中涉及的資源,還包括多種教學模式和教學環境設計。同一個教學活動可以針對學習者的不同需求在不同環境下實施,如聽課環節讓學習者既可以在實際課堂上聽課,又可以在線聽課。
教學設計要根據不同的教學目標,為教學活動設計不同的資源與環境,如掌握知識和理解理論需要多種形式的課程內容(錄像、講稿、文字教材等),學會技術和掌握技能需要例題、案例演示、習題、實驗環境等,進行設計、創意/創新需要協作學習環境和設計開發環境等。只有共享教學設計,使用者才能明確知道每種資源分別應用于什么目的和哪一個教學環節。例如,C++語言程序設計的教學設計主要包括以下內容。
(1)課程內容以面向對象的思想為主線,介紹程序設計基礎知識、類與對象的基本概念、繼承與多態、輸入輸出流、常用數據結構基礎知識,此外還簡單介紹泛型程序設計。
(2)教學模式是多種模式相結合,給學生自由選擇學習方式和考核方式的空間,真正實現以學生為中心的自主式學習。
(3)學習模式包括常規教學模式和網絡教學模式。常規教學模式包括大課、實驗輔導和答疑;網絡教學模式包括網上自學在線課程、在線討論、在線提交作業和評分。
(4)考核模式包括常規卷面考試、自選題目的論文(包括答辯)和自選題目的項目訓練(包括答辯)。
2.3 教學資源共享
教學資源共享是落實教學理念和教學設計共享,一般來講,教學資源包括教材、教學錄像、講稿、題庫、實驗/案例等。例如,C++語言程序設計課程的教學資源包括以下幾個方面。
(1)教材有《C++語言程序設計(第4版)》《C++語言程序設計案例教程》《C++語言程序設計(第4版)學生用書》《C++基礎教程學生用書》《面向對象程序設計經典實驗案例集》(包括87個實驗項目,數百個題目)等。
(2)教師用書《C++語言程序設計(第3版)教師用書》。
(3)多媒體課件包括《C++語言程序設計(第4版)》講課錄像、《C++語言程序設計(第3版)》配音課件、《C++語言程序設計(第3版)》視頻課件、《C++語言程序設計(第3版)》講課錄音。
(4)案例學習系統。
(5)教學網站包括清華大學網絡學堂(主要面向校內學生)、開放學習社區(http:∥)、清華大學出版社“智學苑”()等。
2.4 實施方案共享
實施方案是指課程所有教學環節的具體實施方案,包括學時、具體教學和考核方式。只有共享實施方案,才能使得其他的共享落到實處。實施方案的共享途徑包括教師互訪和聽課、以文字形式共享教案、在線呈現教學過程。C++語言程序設計課程實施方案主要包括以下內容。
(1)大課:2學時/周。以應用引導,以實際開發環境進行講解。
(2)課外輔導。其中,教師補充例題講解:1學時/周;學生分組討論:2學時/學期·人。
(3)作業批改模式為考試系統自動批改加助教批改。
(4)案例學習內容包括學習《C++語言程序設計案例教程》或通過在線案例學習系統學習。
(5)基礎實驗課:2學時/周。助教輔導并當堂驗收。
(6)項目訓練,包括選題與需求分析報告、系統設計、程序實現、用戶手冊測試報告、總結報告、答辯。
2.5 學習機會共享
學習機會共享是為學習者提供開放公平的學習機會,使得沒有機會進入校園的學習者能夠享有同樣的學習機會,以實現人人擁有公平的學習機會。具體方式可以是將課程在線開放、提供錄像及學習資源下載、提供在線學習指導和答疑、針對學習者的特點提供盡量真實的課堂教學體驗或者適合在線學習的網絡課程。要實現學習機會共享,僅有上述開放方式還不夠,還需要解決面向社會服務的運營模式問題,才能真正為學習者提供合適的服務。
3 教學資源開發
3.1 指導思想問題
開發共享的教學資源,首先要從指導思想上具有共享的誠意與服務的意愿。無誠意的共享往往是因為某種課程建設和教材建設項目的要求而提供一部分教學資源,但是不提供最關鍵的資源,使得教師無法充分利用共享資源。其實,很多開放課程旨在開放卻無意共享,因此只向學習者開放,并不提供給其他教師使用。誠意共享就應無保留地完全共享教學理念、教學設計、課程資源、實施方案、學習機會,并且要本著為教師和學生服務的指導思想認真分析需求,以需求為導向開發共享資源。
3.2 需求分析問題
任何一個項目在開發之前都要進行需求分析,而開發教學資源則往往會忽略需求分析。需求分析包括以下兩個方面。
(1)適用對象分析。面向全日制學習者的主要教學環節是以面授為主,包括大課、面對面答疑、習題課、實驗課等。親臨現場聆聽教師的觀點、對知識的詮釋、對理論的演繹,其效果遠遠優于看錄像。由于全日制學生的主要任務是學習,因此他們可以利用完整的時間段進行系統性學習。網絡學習環境是對面授的補充和對課外學習的支持,因此主要包括資源、答疑、討論、練習和擴展學習。業余學習者以及在師資缺乏的學校和地區學習的學生,則需要使用網絡教學獲得優質的學習資源和方便的學習環境。
(2)學習過程需求分析。典型的學習過程主要包括新知識和理論學習、思考質疑和交流討論、實踐練習、嘗試創新。網絡學習系統應該為學習過程各個環節提供支持。
理論課程學習需要的資源包括多種形式的課程內容(錄像、講稿、文字教材等)、拓展閱讀資料、例題/案例演示、習題;實踐課程需要的資源包括實驗指導和實驗演示、虛擬實驗素材/構件庫、交互式虛擬實驗、測試題等。
3.8 標準化問題
標準化是資源共享的基本技術保障。標準化有利于優質資源復用、有效管理和高效檢索,因此能夠促進共享;有利于管理信息互聯互通,實現全局有效管理、異地學習、終身學習,促進教育公平;有利于優秀教學系統軟件共享,能夠縮短系統開發周期、降低開發成本、實現共建共享。
標準化指的是按照標準的格式描述教學資源的屬性。標準化與個性化不矛盾,通過屬性的描述可以更準確地描述資源的特征。標準化有助于保護知識產權,標準屬性中具有與知識產權相關的屬性。目前,我國已教育信息化相關的7項國家標準和7項教育行業標準,待12項國家標準和6項教育行業標準,正在研制23項國家標準和4項行業標準。國際標準化組織ISO/IEC JTCI有一個分技術委員會SC3,專門從事學習、教育、培訓領域信息技術標準的制訂。
我國已的教育信息化國家標準如下:
·GB/T 21364-2008信息技術學習、教育和培訓基于規則的XML綁定技術
·GB/T 21365-2008信息技術學習、教育和培訓學習對象元數據
·GB/T 21366-2008信息技術學習、教育和培訓參與者標識符
·GB/T 26222-2010信息技術學習、教育和培訓內容包裝
·GB/T 5271.36-2012信息技術詞匯第36部分:學習、教育和培訓
·GB/T 28824-2012信息技術學習、教育和培訓學習對象分類代碼
·GB/T 28825-2012信息技術學習、教育和培訓數字權利描述語言
·GB/T 28823-2012信息技術學習、教育和培訓平臺與媒體分類代碼XML綁定規范
3.4 知識產權問題
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2015)30-0104-03
《C語言程序設計》是針對我校理工類專業大一新生所開設的一門重要的專業基礎課程,該課程是目前高校最流行和實用的一種計算機高級程序設計語言,是進行程序設計教學和計算機軟件開發的主要工具之一,也是理工類專業學生學習其他相關專業課程的一座重要橋梁,因此,該門課程一直是高校所開設的高級語言課程之一。
1 現狀分析
筆者通過問卷調查的方式,了解目前我校教師在《C語言程序設計》這門課程教學方面的現狀及學生的學習情況,分析,總結了師生普遍感到這門課程難教、難學的原因,覺得有以下幾個方面。
1.1 我校學生的學習積極性處于比較低層次
大多數學生是少數民族,入校時學習基礎比較薄弱,對中文的學習能力和理解能力比較弱,邏輯思維能力和動手能力相對比較差,對學習的自信心不太強,學習的主動性和積極性也有所欠缺,大部分同學自主獲得知識的能力偏差,總的來說,他們的學習能力處于較低層次,學習方法比較落后,在學習過程中,對中文的理解能力欠佳,大多同學,不理解課堂上老師所講的內容,只會采用死記硬背的方法,被動地記憶教師講授的基本概念、語法知識等,上機也只會調試程序,根本設計不出程序,對上機實踐操作興趣不高,缺乏對所學知識的綜合運用能力,不會舉一反三,給自己增大了莫名的學習負擔,編程上遇到一些困難就容易退縮。尤其是在大一第二學期階段,有不少學生對計算機的基礎知識及操作還不太熟悉,程序設計課程對初學計算機的非計算機專業學生來說顯得更加抽象、一些程序設計的流難以理解,這往往是導致學生的學習興趣不高,產生畏難、甚至恐懼情緒的原因,最終導致厭學的后果。
1.2 教學內容的組織不太合理
教學內容的組織和教學方法對培養和增強學生的學習興趣和學習信心起著極為重要的作用?!禖語言程序設計》這門課一般都是在大一階段第二學期開設,此時學生對計算機的系統結構、工作原理有了一定的了解,但對高級語言程序設計方面的內容,了解的甚少。因此,針對我校學生的基礎特點,現對《C語言程序設計》這門課程內容進行提煉,減少傳統的C語言教材較為復雜語法知識、算法等知識,傳統教材一開始上來的幾節課便是介紹和計算機硬件結合緊密術語、數據類型、語法規則,算法流程等基本概念,學習內容顯得相當的抽象、繁雜、枯燥,新概念名詞和規則如排山倒海般涌來,學生在學習過程中感覺學習的內容相當多,而且比較枯燥乏味、跟實際生活毫無關聯,頓感學習壓力很大,對程序設計的好奇心和期待隨著前幾節課云山霧罩般語法知識和規則的涌來消失殆盡,一開始滿懷的學習熱情受到壓抑,因而失去進一步的學習興趣和學習信心,失去學習動力,甚至有極少學生因而產生畏懼情緒選擇放棄,不利于課程的進一步學習。
1.3 上機實踐存在問題
《C語言程序設計》是一門實踐性很強的課程,主要培養學生的動手能力和編程能力,所以,實踐教學對這門課程來講,非常重要,很多理論知識必須要通過上機動手調試才能夠加深理解,幫助學生掌握和鞏固所學知識。目前,許多高校的《C語言程序設計》這門課程的考試形式基本上是采用筆試,考試的主要內容僅僅是對所學的理論知識進行檢測。這種考試形式使得學生在平時只注重理論知識的學習,不太重視實驗實踐的環節,另外,也有因為硬件環境或課時原因而造成學生上機實踐課時不足,使得學生的理論知識學習與實踐環節脫節,反過來影響了對理論知識的深入理解和掌握。
2 教學內容的改革
重構《C語言程序設計》課程教學大綱,包括理論教學大綱和實踐教學大綱,課程內容分為2個階段,第一階段C語言基礎,第二階段是程序設計。制定的新課程教學大綱“本著理論夠用,重在實踐”的教學理念,強調學生的自主學習能力、創新能力、程序設計能力和對所學知識的綜合應用能力。教學內容由淺入深,由易到難,降低程序設計的難易程度,加強程序設計中分析問題和解決問題的深度和廣度,教學內容循序漸進,螺旋式上升。增加新知識、新理論以及交叉學科知識的介紹,補充教材難以編入的學科發展的前沿知識,充分體現該課程教學大綱的系統性、實用性、實踐性、科學性、先進性。
該門課程的開設64課時,其中理論32課時,實踐32課時,在教學實施過程中,在充分掌握理論知識的同時,加強實踐教學。通過修訂教學大綱、課程標準、授課計劃等相關教學文件,著力加強實踐教學,并對實踐過程進行單獨考核。另外,為了彌補不同層次學生對不同知識的需求情況,將實驗項目計劃增設了選做內容和必做項目,要求學生根據自己的學習情況選做相應的項目,利用業余時間完成。在實踐教學過程中推行“項目驅動、小組合作”的實踐教學模式。選擇趣味性強且與學生生活貼近的項目作為教學主線,合理布局第一個項目,將每個實踐項目分解成一個個體現相關的知識點又與實際生活緊密相連的子項目,對應理論教學的各個教學知識點,把相關的知識點融入到項目的各個環節中去,層層推進項目。通過對項目中的問題的深化和知識點的補充,來拓寬學生對所學知識的深度理解,實現獨立完成項目的目的,從而達到學習知識、培養能力,提高實踐能力的目的。
另外,在教學內容的選擇上,尤其是介紹新內容時,避免選取復雜程序或學生不熟悉的數學、物理等問題作為案例,盡量選擇學生平常比較熟悉的問題來進行分析講解程序設計。在學生了解了新的知識點及新的編程方法后,再擴展介紹新方法的應用和一些常見的技巧,由淺入深,有利于學生了解掌握有一定難度但常用的一些編程技巧。
在教學內容的安排上,以程序設計思想為教學內容的主線,圍繞著一個學生熟悉項目,努力讓學生能主動而非被動接受新教學內容。用教學項目把整個課程諸多關聯的知識點有機地聯系起來,緊緊圍繞著一個案例,如學生進行計算器的設計,從這個主題出發,循序漸進,逐漸延伸、拓展,隨著帶領學生不斷提出新的用戶需求并主動設法解決,引出能滿足新要求的方法和相關知識點。
3 教學方法的改革
按照我校學生的實際情況,制定符合我校學生實際的課程標準、教學大綱,圍繞本課程的教學目標,根據《C語言程序設計》課程和學生的特點,按“夠用、實用”為原則對傳統的教學內容進行重新組織,合理取舍設置教學內容。教學內容上舍棄了一些不常用的語法和章節,注重強調基礎性、實用性和實踐性,同時,兼顧教學和自學兩方面的適用性。例如:可以先帶領學生完成一個簡單的項目――設計一個簡單“加減乘除”的計算器程序,做簡單的輸入二個數據、然后計算結果和輸出計算結果的工作,而后再給學生進一步講解完成每一步工作所用的相關語法知識和需要注意的問題。而學生對兩個數據的“加減乘除”的處理方法很熟悉,學生通過把平常熟悉的工作用計算機語言描述出來并在計算機上運行得到所需的工作結果,讓學生體會到C語言程序的神奇而不神秘,有趣而不難學,體會到用計算機解決問題步驟的條理性、邏輯性和掌握相關語法知識的重要性,減少、消除學生初學程序設計語言時的神秘感和恐懼感,激發學生的學習興趣和求知欲望。
形成“三結合一補充”的教學方法,即:“理論教學與實踐教學相結合、自主學習與過程評價相結合、平時考核與開放考試相結合,模擬項目對課堂教學進行補充”的教學方法;充分利用信息技術手段,滿足學生的個性化發展,包括多媒體教學手段、網絡課堂、數字圖書館等。
3.1 采用任務驅動式的項目教學法
在理論教學過程中,拋棄傳統的從介紹基本概念、語法知識和規則再到舉例說明它們的應用的教學方法,采用任務驅動式教學方法。在教學過程中,全程貫穿任務驅動式教學的思想,按照提出問題、分析問題、解決問題的邏輯思路,引導學生主動參與從接受任務到如何完成任務的整個過程中,改變以往的被動接受為主動學習,充分發揮主觀能動性,積極地思考、學習和掌握編程知識和編程方法,鍛煉提高分析問題和解決問題的邏輯思維能力。
3.2 采取有效的講課方法
在課堂教學過程中,采取有效的講課方法,調動學生積極性。如采用師生互動法,避免傳統的“滿堂灌”、“填鴨式”教學方法,以免學生因被動學習產生抵觸情緒。加強師生互動,采用小組合作的教學模式,融“教學做”為一體,引領學生積極參與教學中,主動提問題,積極思考解決問題。在利用基礎知識解決問題的過程中,培養學生舉一反三的能力,適時提出或引導學生提出一些進一步的要求,拓展學生的思路,讓學生從如何編出程序能解決問題再進一步提高到如何把問題解決的巧妙些、任務完成的更好些、程序的質量更高些,培養學生的問題求解、編程及創新能力。
圖1 采用“教、學、做一體化”的教學模式圖
對于重點、難點的問題,要采取有效的講課方式和思路進行講解,如啟發式、循序漸進式、師生互動式、實例法、類比法等方法,可以有效突出重點、化解難點。如幫助學生對循環控制變量作用的理解,可以類比環形跑道上的長跑裁判員統計運動員所跑的圈數并給出最終判斷。
對于一些比較抽象的、難于理解的內容,借助動畫將其轉化為直觀的形象便于學生理解。如講解數據冒泡排序時,我們老師做了教學動畫幫助學生理解一組數據排序的過程及最后最終結果,這樣學生對抽象的一組數據的排序就容易理解了。
在教學手段上,充分利用多媒體教學和傳統板書的優勢互補,在碰到難點內容時,我們制作微課,幫助同學們理解較為抽象的內容。使用多媒體電子課件和微課相結合的方式,演示程序設計中的難點部分,提高教師、學生的教、學效率,利用微課,提高學生的學習積極性。因此,結合傳統板書來講課,寫出重點難點,畫龍點睛,幫助學生加深對重點內容的印象,理清程序運行過程中的數據變化情況。尤其在初期講解程序設計時,利用板書逐步寫出程序的效果更好些,這樣在整個板書過程中能夠有效控制要講解的內容,思考、提問、修改等環節有機結合起來。使得學生的思路能與教師的講解保持同步。
3.3 實驗教學的改革
讓學生明確編程理論知識必須要通過上機動手調試才能加深理解和掌握,思維能力、編程能力等都需要通過實踐教學來培養,建立重視實踐教學的新理念,主動積極參與實踐教學。將實驗內容設為基本篇和提高篇,基本篇用以鍛煉學生應用基本知識編程解決簡單問題。在此基礎上提出更高的要求,設為提高篇用以鍛煉學生能靈活運用所學知識編程解決較為復雜的問題,培養學生探索創新能力和實踐能力。
為保證實驗的效果,要求學生必須做好上機前準備,設計源程序和調試中可能會出現的問題及解決方法,實驗結束上交源程序,課后上交實驗報告。
3.4 建設多元的立體化教材
積極進行立體化教材的建設和實踐。其中包括教材、教學大綱、實驗大綱、實驗指導、教案、電子多媒體課件、微課堂、教學網站、題庫、習題集等。 出版1部教材。由筆者參編的《C語言程序設計項目教程》是以項目教學為編寫思想,在該教材中融入大量最新的以同學們生活非常貼近具有趣味性的教學案例和操作性非常強的實例,力求提高教材的通讀性和實用性,強化學習實踐操作能力,做到“教師易教,學生易學,技能實用”。
教案中除教學目的與要求、教學重點和難點、教學內容等內容外,根據《C語言程序設計程序設計》課程特點,編寫了課后的作業題、思考題等內容,電子教案內容非常充實,充分體現了教師與學生之間、學生與學生之間的互動;在多媒體課件內容的設計上,盡量簡明扼要,突出重點,只要有用的;知識點之間的銜接思路清晰,既包括了教材的所有內容,在又能激發少數民族學生的學習興趣,取得良好的教學效果;本課程電子課件、作業、課后思考題、教學大綱等均通過網絡以精品課程的形式對全校所有同學開放,另外有充足的網絡教育資源加上對于該門課程的難點內容利用微課來展現,這些對提高學生的自主學習能力,培養學生的學習興趣,發揮了積極作用。
4 考核方式的改革
考核對學生的學習起著重要的引導和促進作用。改變以往以筆試為主的考試方式為全面考核,既要考核學生的理論知識,也考核學生上機動手實踐能力。為了更加公平、公正的檢測學生的學習效果,體現教學改革的效果,《C語言程序設計》課程采取“過程考核”和“期末考試”相結合的方式,改變傳統的一考定成績的方式,過程考核是以上機操作為主,突出學生的實踐能力的培養,在進行完一個知識點的學習后,就進行相應的考核,讓學生更好地掌握自己的學習情況,以及與同學之間的差距,根據考核結果調整學習計劃;期末考試,以試卷考核為主,主要考查同學對所學理論知論的綜合應用能力。
5 評價方式的改革
在《C語言程序設計》這門課程的教學改革中,對考核的評價方式作了大量的修改,制定了符合我校學生實際,又能激發學生學習熱情的考核方式。在該門課程的考試中,除了期末的考試由教師來評價之外,對學生的實踐操作采取了過程性的考核方式,其中過程性的考核采用了“學生評價、學生互評、教學評價”等多種評價方式,激發了學生的學習興趣。
6 總結
本課程的教學改革在我校實施一年以來,取得了一定的成效,但教改成果與國家精品課程標準有相當大的差距和不足,我們將繼續加大《C語言程序設計》這門課程的教學改革國度,加強教學研究,發表高水平教學論文,完善網絡教學資源,加強課程在線學習手段,提高學生的自主學習能力,最終增強學生對所學知識的綜合應用能力。
參考文獻:
隨著微電子技術的發展和廣泛應用,基于單片機上的系統開發,C語言作為一種高級的編程語言,越來越受到人們的關注。現在,無論是嵌入式系統開發企業還是電子設計競賽、畢業設計等,一般都以C語言為主要開發工具。結合單片機的系統資源,用C語言開發符合實際工程需要的單片機系統,對于編程者來說就有重要的意義。
1.C在單片機教學中的地位
C語言作為一種結構化的程序設計語言,它是程序開發工具中使用最廣泛一門編程語言。C語言具有很強的功能性、結構性、可移植性。用C語言編寫程序比匯編更符合人們的思考習慣,程序開發者可以擺脫與硬件不必要的接觸,更專心地考慮程序的功能和算法而不是考慮一些細節問題,這樣就減少了開發和調試的時間。由于它具有良好的程序結構,適用于模塊化程序設計,因此采用C語言設計單片機應用系統程序時,采用結構化的、自頂向下、逐步求精的程序設計方法,將功能模塊化,由不同的模塊完成不同的功能。這樣可使整個應用系統程序結構清晰,易于調試和維護。
2.單片機教學現狀
單片機技術是現代電子工程領域一門飛速發展的技術,是現代電子技術中的一項不可缺少的重要技術。隨著技術的不斷進步和日益普及,單片機技術已滲透到各個領域,影響著我們的日常生活和工作。因此電子技術及相關專業的學生學習單片機技術越來越成為社會發展的需求。當前,各大高校的電子、計算機類專業均開設單片機課程。
《單片機》是我院電子系一門實踐性極強的專業主干課程,是我校電子系重點建設課程之一,是本專業學生的必修課程。為了提高我系單片機教學效果,我們對單片機教學進行了大膽改革,使用C語言開發單片機,且課程的設計打破了學科體系的框架,將單片機和C語言的相關知識和技能按“項目”進行整合,并將《C程序設計》課程列為電子類專業核心基礎課程之一。因此,《C程序設計》課程教學效果的好壞,將直接影響學生后續專業課程的學習。
從近幾年我系《C程序設計》課程的教學效果來看,學生普遍反映該課程的學習比較困難,課程的語法知識較多,理解和記憶都不太容易,即使記住了語法知識也不能靈活應用;不知道學習C語言究竟有何用處,學完C后不能很好地利用C進行單片機小型系統的開發,缺乏知識的靈活應用能力。因此,根據以往單片機教學所得經驗,我覺得教師有必要在《C程序設計》課程的教學過程中在以下幾個方面引起足夠的重視,并在教學中加以改進,為后續單片機課程的學習打下堅實的基礎。
3.《C程序設計》課程教學方法探索
3.1上好每堂課,激發學生的學習興趣
語言程序設計教學被認為是一種需要師生雙方改進的一門課程,因為大多數語言教材中通常先給出一般的語法格式,然后逐步講解語法要點,再給出實例。這種順序灌輸會使學生失去學習的興趣,所以我認為在課堂教學環節應采取以學生為主體、以教師為主導的教學模式,要求學生自己先看有關知識點,并識記。教師采取精講實例,在這過程中引出相關知識點,然后再舉一類似實例讓學生自己分析,鞏固知識點。教師應把主要精力放在算法的分析和各語句語法的具體應用上,同時培養學生自學能力,采取互動機制,迫使學生主動學習。
3.2注重演示,強化實驗,提高實踐操作能力
因為授課對象是一年級新生,所以教師多用通俗易懂的語言進行講解,多舉實例,使學生容易理解和消化。在教學過程中,盡量采用講解、演示方法,如在講解經典算法后,按照理論方法所述,用DEV C++軟件進行編程演示,從而加深學生對教學內容的理解。
在教學過程中,教師應將理論知識與實驗內容進行整合,根據教學內容并結合實際應用設置實驗題目,讓每個學生獨立完成。遇到學生不能解決的問題,教師應利用多媒體進行演示解決問題的過程,從而加深學生對教學內容的理解并提高實踐操作能力。 3.3培養良好的編程風格
3.3.1優化程序
由于在許多工業測控領域中的嵌入式系統都采用單片機開發,它們所需要的計算和控制工作日趨復雜,其中軟件的設計是最復雜和困難的,工作量大,特別是對于控制系統,設計人員需要考慮單片機的軟硬件資源分配,但是單片機系統是一種資源十分有限的系統。這主要表現在CPU和片內結構簡單、程序存儲器資源的不足。因此在用C語言進行單片機開發時,如何使用好這些有限的資源就顯得十分重要。雖然C語言具有許多的優點,但是生成的代碼相對要長,基本多占用存儲空間20%—50%。因而,在“C程序設計”課程教學中,教師不僅要教會學生如何編寫程序,而且應在教學過程中向學生灌輸優化代碼的思想,讓學生從大一開始就有開發項目的一些經驗。
3.3.2合理選用數據類型
C語言在程序開發中提供了的豐富的數據類型,尤其是關于用戶界面開發和一些動畫與圖像技術的實現。但是在開發單片機系統時,我們要按照實際需要,合理地選用數據類型。C語言中有Char等少數的數據類型是機器語言直接支持的數據類型,用此類數據類型的語句所生成的代碼較短,而其它的數據類型如整型、浮點型等數據要有一定的內部程序或內部函數的支持,相對來說較復雜的數據類型的語句生成的代碼也復雜,不利于轉化成單片機的代碼。因此,在“C程序設計“教學過程中,要向學生適當說明選擇合適數據類型的好處,并盡可能地減少程序中使用的數據類型的種類,為以后學生的單片機學習打好基礎。
3.3.3灌輸模塊化程序設計思想
在普通微型計算機上進行C語言程序開發設計時,只需考慮程序功能實現,而不必考慮程序代碼的長短。但是在單片機上進行C語言程序設計就必須考慮系統的硬件資源,要求設計的軟件程序結構是合理、緊湊和高效的。同一任務,有時用主程序完成是合理的,但有時需子程序效率最高,占用資源最少;有時并不是程序的算法越簡單、長度越短越好,由于有一些算法要調用一些內部的子程序和函數,生成的機器代碼質量反而較低。不同的算法對程序代碼效率影響很大。因此,在進行“C程序設計”教學時,教師應適當向學生灌輸模塊化程序設計的思想,在不影響程序功能實現的情況下可以采用一些優化算法,并且把程序分成若干個功能獨立的模塊,為學生今后的單片機項目開發做好鋪墊。
4.結語
單片機系統采用C語言開發與設計,極大地促進了單片機在生產、生活各個領域的應用,提高了程序開發效率。因而,C語言學習效果的好壞,對今后單片機課程的學習具有深遠的影響。除了講解C語言的基本語法外,更重要的是改善教學方法,利用各種方法培養學生的學習興趣,并向學生灌輸良好的編程風格與編程方法,為今后的單片機課程的學習打下良好的基礎。
參考文獻
[1]向艷.“C程序設計”課程教學體系和模式探討[J].計算機教育,2010,(3):112-114.
[2]董蘊寶,潘旭君.淺談C語言在單片機中的程序設計[J].科技信息,2009,(13):59-67.
[3]張洪靜.電類專業C語言教學探討[J].電腦知識與技術,2010,(29):8280-8281.