徐芝琦 潘瑞芳
摘要:在新工科建設(shè)形勢下,地方應用型本科高校的理工類人才培養(yǎng)重點已轉(zhuǎn)為應用創(chuàng)新型人才的培養(yǎng)。程序設(shè)計課程是理工類人才培養(yǎng)的核心基礎(chǔ)課。作者針對目前應用型高校的程序設(shè)計課程中存在的問題,創(chuàng)新性地設(shè)計、探索和實踐了一門程序設(shè)計拓展課程。文章詳細闡述了該課程的教學目標、課程體系,并佐以教學案例詳細介紹了其獨特之處,最后結(jié)合問卷調(diào)查論證了該課程對學生的計算思維能力和創(chuàng)新創(chuàng)造能力培養(yǎng)的積極教學效果。
關(guān)鍵詞:程序設(shè)計拓展課程;Processing;創(chuàng)新編程
中圖分類號:G433? ? ? ? 文獻標志碼:A? ? ? ? ? 文章編號:1673-8454(2020)02-0048-04
一、引言
2017 年,教育部啟動“新工科”發(fā)展研究工作,即針對新技術(shù)、新產(chǎn)業(yè)與社會新形態(tài)的變化,推進面向可持續(xù)競爭力的新型工科人才培養(yǎng)模式改革[1]。新工科人才培養(yǎng)模式改革與此前國家深化教育改革相呼應,對于地方應用型本科高校的理工類專業(yè)而言,重點培養(yǎng)應用創(chuàng)新型復合人才,才能滿足社會對新工科人才的需求。
應用創(chuàng)新型人才主要以培養(yǎng)技術(shù)應用能力為主線來設(shè)計學生的知識、能力、素質(zhì)結(jié)構(gòu)和培養(yǎng)方案[2],并以應用為主旨和特征構(gòu)建課程和教學內(nèi)容體系,強調(diào)學生的技術(shù)應用實踐能力的培養(yǎng),同時重視人才的創(chuàng)新能力培養(yǎng)。在對地方本科高校所培養(yǎng)的應用創(chuàng)新型人才的知識、能力和素質(zhì)的要求上,并不過于強調(diào)技術(shù)的熟練程度以及崗位對應性的操作能力,而是強調(diào)其既具有寬厚的知識基礎(chǔ)、應用性專業(yè)知識和技能,又具有轉(zhuǎn)化和應用理論知識的實踐能力以及一定的創(chuàng)新能力,如對應用知識進行技術(shù)創(chuàng)新和技術(shù)的二次開發(fā)能力等[3]。
在新工科人才培養(yǎng)體系中,程序設(shè)計課程的重要性毋庸置疑。不論是C語言還是Java語言,不僅是計算機相關(guān)專業(yè)的核心基礎(chǔ)課[4],也是應用型大學中理工類專業(yè)的專業(yè)基礎(chǔ)課,其傳統(tǒng)教學目的是培養(yǎng)學生逐步掌握程序設(shè)計的基本方法,培養(yǎng)其計算思維和實踐能力,為后續(xù)課程打下堅實的基礎(chǔ)[5]。然而遍觀目前應用型大學的程序設(shè)計課程教學現(xiàn)狀,絕大多數(shù)學生在理論課上能聽懂某種程序設(shè)計語言的基本語法和語句基本執(zhí)行過程,對教師所講的基本知識與例題能夠基本理解,但是對稍難一些的算法理解起來就顯得很困難。導致上機實踐編程時絕大多數(shù)學生只是機械地模仿例題,無法真正去動手編寫程序解決實際問題[6],更缺乏創(chuàng)新性。
針對目前應用型大學程序設(shè)計課程的教學現(xiàn)狀,面向大一學生,筆者開設(shè)了一門程序設(shè)計拓展課程《游戲數(shù)學與物理》。該課程的教學內(nèi)容以基礎(chǔ)數(shù)學與物理知識如何應用于游戲與交互媒體作品的設(shè)計開發(fā)中為主線,鼓勵大一學生在Processing平臺上探索游戲與交互媒體作品的核心算法和關(guān)鍵問題并且進行創(chuàng)新實踐。本課程的獨特性和創(chuàng)新性在于,一方面作為程序設(shè)計拓展課,它拓展了學生對編碼的認知,以項目驅(qū)動積極鍛煉了學生的實踐動手能力,另一方面它在游戲與互動媒體作品的設(shè)計與開發(fā)中融合了基礎(chǔ)的數(shù)學和物理知識,切實培養(yǎng)了學生的計算思維能力。
二、Processing
在本課程中,Processing是學生的實驗工具。它是一款基于Java語言的開源編碼平臺,支持現(xiàn)有的Java 語言基本架構(gòu),將Java 的語法進行了簡化并將其運算的結(jié)果視覺化[7]。
Processing以數(shù)字藝術(shù)為背景,為對科學與藝術(shù)之間的跨領(lǐng)域表現(xiàn)有興趣的人而設(shè)計,它表現(xiàn)出以下特點:[8] ①簡單易用。具有圖形用戶界面,操作極其簡便,并且有相當完備的開發(fā)者文檔,便于學習。②開放性強。由于其本身作為開源軟件,使用者可依照自己的需要自由裁剪出最合適的使用模式。社區(qū)活躍,國內(nèi)外的開發(fā)者眾多。③擴展性強。由社區(qū)開發(fā)者提供的大量第三方庫能兼容各種類型的軟硬件,能提供各種實時鮮明的視覺反饋,讓使用者能很快創(chuàng)作出聲光兼?zhèn)涞慕换ナ叫旅襟w作品。④支持多語言。Processing在發(fā)展過程中,支持的開發(fā)語言由Java擴展到了JavaScript、Python等多種語言,為使用者提供了多種選擇。⑤易分享。OpenProcessing等多個網(wǎng)站都提供了Processing在線編輯分享的平臺,用戶可上傳自己的代碼,分享自己的作品。
正是由于Processing具備了上述特點,它被廣泛用于創(chuàng)新編程,尤其是數(shù)據(jù)的視覺表達、生成藝術(shù)和互動藝術(shù)的創(chuàng)作中。而這些特點,可以大幅縮短大一學生這些編程新手學習的時間曲線,更容易理解抽象邏輯法則,并且豐富的視覺表達和互動效果能讓學生充分鍛煉其創(chuàng)新能力,并且獲得較強的學習成就感[8]。
三、教學目標及創(chuàng)新點
《游戲數(shù)學與物理》主要是為了改善目前應用型大學理工類專業(yè)的大一學生學習程序設(shè)計的教學現(xiàn)狀,為了提高應用型人才的動手實踐能力和創(chuàng)新能力,而研究和設(shè)計的一門程序設(shè)計拓展課程。該課程的教學目標是讓學生利用代碼進行探索、研究與創(chuàng)新,如何將基礎(chǔ)數(shù)學和物理知識,包括幾何圖元、向量、矩陣運算、線性變換、幾何檢測以及基本運動學、力學應用、動量與碰撞、粒子系統(tǒng)模擬等內(nèi)容,應用于游戲和交互媒體作品的設(shè)計開發(fā)中。本拓展課程在設(shè)計教學內(nèi)容時,秉持以下三大方針:
1.以項目為驅(qū)動,加強學生自主學習能力
理論教學采用混合教學模式,將重要知識點的教學錄制成微視頻,發(fā)布在中國大學MOOC的SPOC在線教學平臺上。通過在線學習,能充分培養(yǎng)學生自主學習能力。而實踐教學則設(shè)計以項目為驅(qū)動。學生需要完成的項目分為自由創(chuàng)作型項目和限時完成型項目兩種類型。
(1)自由創(chuàng)作型項目
自由創(chuàng)作型項目,綜合性強且完成周期較長。比如在“幾何圖元”單元中,需要在一周內(nèi)完成的自由創(chuàng)作型項目具體要求為:
請在Processing平臺上,利用各種幾何圖元,創(chuàng)造一副屬于你的作品!
必須用到的幾何圖元包括:線段(line)、圓(ellipse)、矩形(rect)、三角形(triangle)以及其他形狀。
根據(jù)上述項目要求,在一周時間內(nèi),每個學生需要充分熟悉Processing中各種幾何圖元的構(gòu)造方法,并且從內(nèi)容和交互方式開始設(shè)計到用代碼實現(xiàn),獨立完成作品,優(yōu)秀作品如圖1所示。
(2)限時完成型項目
限時完成型項目,是與課堂上的隨堂項目訓練緊密結(jié)合在一起的。在設(shè)計該類型項目時,首先緊密圍繞某個知識點,然后結(jié)合游戲或交互作品等案例來設(shè)計。表1所示的是以知識點“拋體運動”為例,以隨堂限時項目訓練為主要內(nèi)容設(shè)計的課堂教學任務,通過該項目的實踐訓練能強化學生對這一難點知識的掌握。
2.注重計算思維的綜合訓練
不論是入門課程還是拓展課程,程序設(shè)計課程群最本質(zhì)的教學目標是培養(yǎng)學生的計算思維能力。計算思維具有四個重要基石:[9]①問題分解,學生需要學會把復雜問題分解成更小、更簡單的問題;②模式識別,學生需要學會在相似的問題和經(jīng)驗之間建立聯(lián)系;③抽象,要求學生從問題中識別出重要本質(zhì)的信息,忽略不相關(guān)的細節(jié);④算法,則是指學生在解決問題時需要利用算法思維設(shè)計問題的解決步驟,從簡單到具體。
本課程為了訓練學生的計算思維能力,依托游戲場景和交互式新媒體作品,設(shè)計了一系列實踐項目。每個項目對應于相關(guān)知識點單元,但不局限于單一知識點。在課程的中后期,項目的綜合性愈強,融合了多個知識點,甚至擴展到了其他交叉課程的內(nèi)容。比如在“粒子系統(tǒng)模擬”的章節(jié)中,以流動的水面為模擬對象,學生需要對從三角函數(shù)到Perlin噪音等原理進行多方面綜合探索實踐。
筆者將詳細介紹在“動量和碰撞”章節(jié)中如何從經(jīng)典彈球游戲入手設(shè)計實現(xiàn)實踐項目。該項目的問題是,如何利用Processing再現(xiàn)經(jīng)典彈球游戲中的碰撞。
首先,學生需要對游戲中彈球發(fā)生碰撞的場景進行分解,從最經(jīng)典的場景入手,比如取彈球與三角斜面發(fā)生的碰撞為切入點,其碰撞過程如圖 4a所示。然后,學生需要將該碰撞問題轉(zhuǎn)化為利用Processing可模擬的圓與任意平滑斜面的碰撞,如圖 4b所示。
接著,學生需要結(jié)合知識點“向量的非軸平行反射原理”充分理解該碰撞實現(xiàn)的本質(zhì)與抽象,然后設(shè)計相關(guān)的算法并且編碼實現(xiàn)如圖 5a所示的圓與簡單斜面碰撞。學有余力的學生可對簡單問題進行復雜化,逐步分析并實現(xiàn)圓與復雜斜面的碰撞,如圖 5b所示。對于實踐能力強的學生,甚至可以引導他們結(jié)合Processing第三方庫開發(fā)完整的彈球游戲。
3.堅持創(chuàng)新能力的培養(yǎng)
本課程設(shè)計的實踐項目結(jié)合了Processing的特點,具有較強的開放性,鼓勵學生根據(jù)自己的興趣進行探索型的創(chuàng)新。本文將以“力學應用”和“粒子系統(tǒng)模擬”的實踐項目為例進行詳細介紹。
“力學應用”項目要求學生結(jié)合拋體運動和力學進行綜合創(chuàng)作,主題和內(nèi)容不限。眾多學生在實踐中都突破了教學案例的約束,進行了創(chuàng)新創(chuàng)作。如圖 6所示,該學生在其作品中嘗試利用LeapMotion設(shè)備,用手勢來控制球的發(fā)射速度和角度。
“粒子系統(tǒng)模擬”項目也是開放性的設(shè)計:根據(jù)相關(guān)知識點,創(chuàng)作和模擬粒子系統(tǒng),并且需要結(jié)合碰撞。眾多學生在實踐中在前序項目的已有基礎(chǔ)上進行了連續(xù)地創(chuàng)新創(chuàng)作。如圖 7a所示,該學生在前序項目“動量與碰撞”中主要將音樂的播放與碰撞、幾何檢測進行了綜合創(chuàng)作。而在“粒子系統(tǒng)模擬”的實踐中,如圖 7b所示,該生以前序項目為基礎(chǔ),結(jié)合了Processing中更多與音頻相關(guān)的第三方庫,將音樂的多種元素用粒子系統(tǒng)來進行可視化表達。
終上所述,本課程具有如下獨特之處:①拓展性。應用型大學的理工類大一學生在學習了程序設(shè)計課程之后,大部分學生還是不知道代碼能做些什么。本課程通過游戲和交互媒體作品的創(chuàng)作,能讓學生直觀地了解代碼如何真實地應用于作品中。②綜合性。本課程融合了程序設(shè)計、線性代數(shù)、基礎(chǔ)物理乃至人機交互。線性代數(shù)的基礎(chǔ)知識(向量和矩陣運算、線性變換等)和基礎(chǔ)物理知識(線性運動、力學應用、動量與碰撞、粒子系統(tǒng)模擬等),如何轉(zhuǎn)換為代碼,并且應用于富有視覺表達力的作品開發(fā)中,這個實踐過程讓學生充分鍛煉了程序設(shè)計和開發(fā)能力,進一步加深了對基礎(chǔ)數(shù)學和物理知識的理解和掌握。更重要的是,在學習、探索與實踐過程中,學生的計算思維能力得到了啟蒙和鍛煉。③創(chuàng)新性。本課程創(chuàng)新地將程序設(shè)計的教與學進行了拓展,并且結(jié)合了視覺表現(xiàn)力強且學生喜聞樂見的游戲與交互媒體,有效激發(fā)了學生的學習興趣,提高了學生的學習能動性。教學內(nèi)容也創(chuàng)新性地融合了基礎(chǔ)數(shù)學、物理知識與程序設(shè)計的實踐,以項目為驅(qū)動,教學實踐內(nèi)容和形式新穎。
四、教學效果分析
我們在2017年秋季課程結(jié)束時進行了問卷調(diào)查,該調(diào)查主要面向數(shù)字媒體技術(shù)專業(yè)大一學生,獲得有效問卷120份。在該調(diào)查中,參與的學生中男生66人、女生54人,分別占比55%和45%。接受調(diào)查的學生中,在中學階段曾經(jīng)學過編程課程的人數(shù)為38人,未曾學過編程的為82人,分別占比32%和68%。在120名學生中,有112人支持使用本課程作為編程課程的拓展,高達93%。有94名學生認為學習了本課程之后對編程增加了興趣,高達78%。超過一半的學生(59%,71名)甚至認為應該將Processing作為第一門編程語言。2018年秋季課程結(jié)束時我們也進行了類似的問卷調(diào)查,結(jié)果與2017年問卷調(diào)查較為相似。
從調(diào)查結(jié)果來看,學生對于本課程的開設(shè)與實際教學效果滿意程度較高?;诒菊n程的學習成果,學有余力的學生還進行了深入挖掘和拓展,成功申請了省級新苗人才項目、創(chuàng)新創(chuàng)業(yè)項目等。與此同時,后續(xù)銜接課程的任課教師對本課程的認可度也非常滿意。
未來,我們還將持續(xù)更新和建設(shè)本課程的內(nèi)容,力爭將其建設(shè)成為精品課程、特色課程。并且在大一學生中繼續(xù)推廣本課程,并且希望能將本課程推廣到各個理工科專業(yè)的編程學習中。與此同時,我們將構(gòu)建學生作品的展示和交流網(wǎng)站,并且逐步將該網(wǎng)站的功能從單一的社交型擴展提供在線編程的功能,最后向公眾開放該網(wǎng)站,進一步推廣本課程和Processing。
參考文獻:
[1]徐曉飛,丁效華.面向可持續(xù)競爭力的新工科人才培養(yǎng)模式改革探索[J].中國大學教學,2017(6):6-10.
[2]蔡敬民,魏朱寶.應用型人才培養(yǎng)的思考與實踐——以合肥學院為例[J].中國大學教學,2008(6):14-15+21.
[3]劉煥陽,韓延倫.地方本科高校應用型人才培養(yǎng)定位及其體系建設(shè)[J].教育研究,2012,33(12):67-70+83.
[4]田琳琳,劉斌,于紅,等.面向應用型創(chuàng)新人才培養(yǎng)的程序設(shè)計語言實驗教學[J].計算機教育,2016(3):12-15.
[5]陳志泊,張海燕,王春玲,等.以程序設(shè)計與軟件開發(fā)能力為主的計算機專業(yè)應用型人才培養(yǎng)模式的研究與實踐[J].計算機教育,2015(7):94-98.
[6]李永.面向應用型人才培養(yǎng)的C++教學思考[J].軟件導刊,2014,13(8):189-190.
[7]譚亮,張璇.論代碼在數(shù)字媒體藝術(shù)中的運用——以Processing為例[J].藝術(shù)與設(shè)計(理論),2011,2(4):158-160.
[8]Greenberg,I., Kumar,D.& Xu,D.Creative coding and visual portfolios for CS1[A].In Proceedings of the 43rd ACM technical symposium on Computer Science Education[C].ACM,2012:247-252.
[9]王移芝,金一,周圍.基于“計算思維”能力培養(yǎng)的教學改革探索與實踐[J].中國大學教學,2014(3):49-53.
(編輯:魯利瑞)