黑龍江科技大學計算機與信息工程學院 張興華,王國權,于海英,韓紫恒,史健婷
《程序設計訓練》具有非常明顯的交叉性,其主要的教學目標是要教會學生們一些科學以及工程方面的問題,確保學生們能夠進行可計算的分析以及驗證,這對理論性以及實踐性二者的結合具有相當高的要求,由于這門課程具有傳統型、交叉性、理論性以及實踐性融合的特點,因此在高校的一些理工科的專業當中,有相當多的一部分很長時間不編程或者根本不會編程的教師卻在對學生們的編程課程進行教學,這就導致了大部分的學生雖然考試能夠得到高分,但是實踐能力卻非常弱,他們往往不會運用編程的思想解決問題,也不會用查閱資料的方式來對工具進行調試,更不會具有計算思維。在這樣的情況下對“金課”導向下的《程序設計訓練》課程進行創新以及改革具有十分重要的意義。
《程序設計訓練》課程的創新性要求這一課程必須要具備一定的前沿性以及時代性;要求教學形式能夠體現出先進性以及互動性;要求學習結果要具備研究性以及個性化的特征。從最初到現在《程序設計訓練》課程已經由最初的簡單計算逐漸發展為復雜推理,從原來的單機逐漸發展為網絡,最終再到移動,從最簡單的數據處理再到對大數據的分析。由此可見,這一過程當中對前沿性以及時代性的要求都非常高。此外,《程序設計訓練》課程具有非常強的實踐性,因此在教學的過程中應該以實踐教學為主。在《程序設計訓練》課程教學形式方面來說,其必須要對實踐教學采取足夠的重視,而且還必須要將先進性以及互動性都體現出來。《程序設計訓練》課程在教學的過程中要充分地考慮到學生就業的問題,學生在未來可能會在各個領域當中就業,這就需要這一課程的教師在充分地保留原有一些經典內容的基礎上,對一些前沿學科的內容進行汲取,然后再融合一些現代化的元素,重點對學生們的計算思維進行培養,確保學生們在未來無論從事哪一個行業都有一定的基礎。
《程序設計訓練》課程的挑戰性指的是這一課程具有一定的難度,需要學生們多努力學習,這在一定程度上對教師的教學活動以及學生們的學習活動提出了更多的要求。比較好的課程設計應該是在課堂教學的過程中學生們能夠聽懂教師所講授的一些內容,而在課下學生們能夠依照自己已經掌握的知識來完成相關的作業。教師在對學生們布置作業時需要增設一定的難度,不能夠使得學生們能夠直接套用課堂上教師已經講解的算法流程來完成,必須確保學生們在完成作業的過程中要不斷地分析、試驗以及調整,有效地調動學生已經學到的知識,并將這些知識進行綜合運用,才能夠解決這些問題。
在將來的一些科學研究以及工程應用的過程中,學生們需要面對的問題往往是千變萬化的,其內容相當復雜而且繁瑣,并沒有一些固定的套路可供學生們選擇來解決問題,在這樣的情況下,學生們往往只能通過一些具有挑戰性的訓練才能夠獲得一些解決實際復雜問題的能力,要想能夠做到這一點,《程序設計訓練》課程教師在教學的過程中就必須要以教材作為基礎來設計開發一些具有啟發性的教學案例。學生在課下必須要認真地進行復習,然后在復習的過程中還必須要結合一些計算機編程的練習,因為僅僅依靠學生們在課堂上學到的知識肯定是遠遠不夠的。由此可見,只有對學生們的解決實際問題的能力進行培養,學生們才能夠更好地面對一些具有挑戰性的問題,進而尋找到最合適的解決方式。
從一定程度上來說,《程序設計訓練》主要是對學生們的編程習慣進行培養,重點在習慣養成的方面,并不是技巧提升方面。但是在這其中存在的問題是信息與通信專業的大一新生由于一些基礎計算機課程的開設不足,進而導致學生們的課程前期基礎十分的薄弱,因此有相當多的學生很難能夠完成教材當中的一些習題,從這一方面上來說,《程序設計訓練》課程中所設置的一些實訓項目對他們來說往往具有不小的難度。
在高校當中,有相當多的學生在之前并沒有接觸過編程的相關內容,他們的思維仍然受初高中階段一些培養模式的影響,導致他們在解決問題的過程中養成了一定的依賴性,他們總是希望教師在他們完成相關編程任務時能夠給他們一定的提示,這就在很大程度上束縛住了學生們的創造性。此外,還有相當多的學生在對程序進行設計的過程中非常害怕犯錯,但是他們不明白程序設計其實就是在不斷犯錯的過程中進行調整,進而使自己的能力有所提升。由此可見,這種已經固化的思維在很大程度上對《程序設計訓練》課程的培養效果產生了不良的影響。
《程序設計訓練》這門課程是以C語言為基礎而建立的,而且在后續的教學過程中往往還會導入《數據結構與算法》當中鏈式存儲、順序存儲以及排序算法等相關內容,其內容相對來說十分充實,但是這對于高校大部門的學生們而言內容難度比較大,很難能夠準確地將其理解,最終很難達到層次化教學的目的,對學生們的學習活動產生了相當大的阻礙。
由于Python語言具有簡潔性、可擴展性、易讀性以及可視化的特點,因此其已經成為當前階段非常受歡迎的語言。在這樣的情況下,就可以用Python語言來代替C語言進行程序設計中思維以及程序設計方法等方面的訓練。一般來說,Python語言都具備十分明確的編程規范,甚至每一個縮進都有十分明確的規定,這就可以使學生們在剛接觸到編程的相關知識時就能夠養成一個良好的習慣。此外由于Python語言具有非常方便以及個性化的IDE可供學生們選擇,這就使得學生們在程序調試訓練這一方面具有非常大的便利性,進而能夠幫助學生們更好地對《程序設計訓練》進行學習。
《程序設計訓練》課程最終的教學目的就是要使學生們能夠學以致用,在這一過程中通過加強與企業之間的合作能夠幫助學生們對所學知識的用途進行理解。因此高校就有必要加強與百度、華為、科大訊飛以及阿里之間的合作,在合作的基礎上邀請這些企業當中的資深工程師到校兼任導師,通過導師講解程序設計產品功能需求、功能實現以及軟件測試全方位的內容,有效地增強學生們的學習動力,確保學生們對自己的職業規劃更加明確,讓學生們能夠真正地明白自己學習這一課程的重要意義,最終有助于提升《程序設計訓練》課程的教學質量。
從某種程度上來說,編程與其他一些基礎類的課程存在相當大的差異,學生們進行程序設計往往是為了能夠實現一些既定的功能。在高校層面上來說,要想能夠將學生們培養成一個高素質的編程人才,就需要鼓勵學生們不斷地犯錯誤,在犯錯誤的過程中一遍又一遍地領悟,然后在教學的過程中還要注意教授學生們一些改正錯誤的方法,進而使得學生們在不斷地調試以及改正錯誤的過程中能夠有效地提升自身的編程能力以及編程技巧。與此同時,《程序設計訓練》課程教師在教學的過程中還要注重對學生們主動學習的習慣進行培養。在程序設計相關內容的學習中往往需要對一些已經封裝好的函數方法進行調用,這就需要學生們能夠自己在課下運用手中的資源來尋找最佳的解決方法。
高校為了能夠有效地對學生們的實踐能力進行培養,就要積極地鼓勵學生們參與一些與《程序設計訓練》課程有關的比賽,將這些各種形式的比賽都融入《程序設計訓練》課程教學活動當中。此外還要充分地鼓勵學生們參與到一些省賽以及國賽當中,確保學生們能夠以多途徑的方式來對這些比賽有所了解,有效地拓寬學生們的視野。此外在比賽的過程中能夠充分地激發學生們的競爭意識,當學生們的競爭意識提高那么他們的學習積極性也會提高,最終使得《程序設計訓練》課程教學能夠取得良好的效果。
綜上所述,在“金課”導向下對《程序設計訓練》課程進行改革以及創新是提高學生們學習效果非常重要的一個措施,能夠將學生們培養成全面發展的程序設計人才,進而使得學生們在未來能夠有更好地發展。