韓志豪
摘 要: 近幾年隨著人工智能的飛速發(fā)展,中國、美國已經(jīng)將人工智能寫入戰(zhàn)略層面,但高校的程序設(shè)計(jì)課程與人工智能的發(fā)展存在著脫節(jié)的現(xiàn)象。本文分析了人工智能特點(diǎn)與發(fā)展方向,梳理Python編程語言特點(diǎn)與人工智能的關(guān)系,整理針對人工智能的Python程序設(shè)計(jì)教學(xué)內(nèi)容,結(jié)合Python程序設(shè)計(jì)教學(xué)經(jīng)驗(yàn),提出人工智能方向的Python程序設(shè)計(jì)教學(xué)目標(biāo)、教學(xué)模式、教學(xué)方法。通過教學(xué)實(shí)驗(yàn),論證了本Python程序設(shè)計(jì)的教學(xué)方式優(yōu)于一般的Python程序設(shè)計(jì)教學(xué)方式。
關(guān)鍵詞: Python; 人工智能; 教學(xué)方式; 程序設(shè)計(jì)
中圖分類號:G434 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)07-76-06
Abstract: In recent years, with the rapid development of artificial intelligence, China and the United States have written artificial intelligence into strategic layers. However, there is a disconnect between the programming courses in universities and the development of artificial intelligence. To solve this problem, this paper analyzes the characteristics and development direction of artificial intelligence, combs the relationship between the characteristics of Python programming language and artificial intelligence, organizes the teaching content of Python programming for artificial intelligence, and combining with Python programming teaching experience, proposes the artificial intelligence oriented Python Programming teaching objectives, teaching models and teaching methods. Through the teaching experiments, it is demonstrated that the Python programming teaching method is superior to the general Python programming teaching method.
Key words: Python; artificial intelligence; teaching method; programming
0 引言
2017年7月國務(wù)院發(fā)布《新一代人工智能發(fā)展規(guī)劃》[1],12月國家工業(yè)和信息化部發(fā)布《促進(jìn)新一代人工智能產(chǎn)業(yè)發(fā)展三年行動計(jì)劃(2018-2020年)》[2]。2018年3月起,在計(jì)算機(jī)二級考試加入了“Python語言程序設(shè)計(jì)”。Python語言因其特有的屬性:簡潔高效、解釋性、可擴(kuò)展性、生態(tài)性[3],而成為了最受歡迎的語言,它豐富的第三方庫,既避免了重復(fù)開發(fā),又增加了語言的張力。目前,98%的人工智能的開發(fā),用的是Python語言編程。
在高校傳統(tǒng)的教學(xué)中,用C/C++或Java作為主要語言設(shè)計(jì)編程課程[3]。但是高校教學(xué)需要緊跟時代的步伐,更要走在時代的前列,與此同時,由于大數(shù)據(jù)分析、人工智能的蓬勃發(fā)展,Python語言市場對人才的需求,也正處于供不應(yīng)求的狀態(tài)。因此將Python程序設(shè)計(jì)作為必修課程顯得尤為重要。
Python語言是一種解釋型高級語言,可移植、跨平臺、面向?qū)ο蟮忍攸c(diǎn),運(yùn)用場景也越來越廣泛[3]。與此同時,人工智能提升到了國家戰(zhàn)略層面,推動著人類第四次工業(yè)革命。國內(nèi)高校對Python與人工智能的教學(xué)研究還相對較少,人工智能主要集中在科研領(lǐng)域。在此環(huán)境下總結(jié)Python教學(xué)經(jīng)驗(yàn),探索人工智能方向的Python程序設(shè)計(jì)教育教學(xué)。
1 背景
1.1 人工智能的發(fā)展與教育
人工智能最早于1965年在Dartmouth學(xué)會上被提出,隨后被定義為“人工智能就是研究如何使計(jì)算機(jī)去做過去只有人才能做的智能的工作”[4],人工智能最開始被盲目追捧,到20世紀(jì)七八十年代遭遇發(fā)展瓶頸,但在2016年谷歌基于深度學(xué)習(xí)的AlphaGo戰(zhàn)勝了圍棋世界冠軍,又一次激發(fā)了人們對人工智能的熱情[5]。
人工智能(英語:Artificial Intelligence,AI)的核心是能夠構(gòu)建與人類交流、學(xué)習(xí),甚至超越人類推理、知識、規(guī)劃、學(xué)習(xí)、交流、感知、移動和操縱物體的能力[6]。
目前,我國常用的人工智能方向,主要有無人駕駛、機(jī)器學(xué)習(xí)、智能搜索、智能推薦、圖像識別、語音翻譯、機(jī)器人、博弈、預(yù)測等。國內(nèi)科技巨頭華為、百度、阿里巴巴、騰訊、科大訊飛等公司,加快布局了人工智能的研究,他們成立了專門的研究機(jī)構(gòu),開放他們的定制平臺,如百度的apollo系統(tǒng),用于無人駕駛。阿里巴巴的阿里云ET城市大腦,用于交通管理;科大訊飛的語音云,用于語音識別與實(shí)時翻譯。而國內(nèi)高校對人工智能的研發(fā)與教學(xué)布局還相對較弱。
1.2 Python編程語言的背景與特點(diǎn)
21世紀(jì),計(jì)算機(jī)經(jīng)歷了飛速的發(fā)展。計(jì)算機(jī)的編程語言也蓬勃發(fā)展,出現(xiàn)了匯編語言、C++、Java、C#、PHP、Python、Objective-C等等,但是像Python語言既具有面向?qū)ο蟮奶攸c(diǎn),又像腳本語言方便上手,卻很少有[7]。因此,在2016年,教育部高等學(xué)校大學(xué)計(jì)算機(jī)課程教學(xué)指導(dǎo)委員會發(fā)布了《大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求》(簡稱:《基本要求》)[8],《基本要求》首次建議將Python語言作為首門程序設(shè)計(jì)課程的教學(xué)語言。
相比其他的傳統(tǒng)語言,Python語言有如下的特點(diǎn)。
⑴ 簡潔、易學(xué)。Python的語法邏輯清晰,簡化變量類型的區(qū)分,并且增加多維度運(yùn)算、多類型運(yùn)算等,簡化了編程的語義表達(dá),提高了程序的可讀性,增強(qiáng)了程序的邏輯結(jié)構(gòu)。
⑵ 可嵌入性、可擴(kuò)展性。Python語言可以嵌入到C++語言中,從而提供腳本編程的功能。Python程序中,也可以加入C++語言,來提高運(yùn)行的效率。
⑶ 開放、開源。Python語言遵從GPL(GNU General Public License)協(xié)議,所有的代碼都可以開放出來,這也使得Python擁有12萬個以上的第三方庫,避免了重復(fù)編程,提升了編程效率。
⑷ 高層語言、面向?qū)ο?。Python是一種高層語言,當(dāng)用Python編程時,無需考慮內(nèi)存細(xì)節(jié)、指針問題等。而Python的語法既支持面向?qū)ο笠仓С置嫦蜻^程。
⑸ 跨平臺、可移植性。Python是一種解釋型語言。這使得Python的程序可以直接在各種系統(tǒng)(如Linux、Windows、MacOS)拷貝運(yùn)行,不必?fù)?dān)心環(huán)境配置問題。
2 Python程序設(shè)計(jì)教學(xué)探索
為了適應(yīng)沒有編程基礎(chǔ)的學(xué)生能學(xué)深Python語言編程,同時緊跟人工智能的時代背景,Python程序設(shè)計(jì)課程內(nèi)容主要包括:Python簡介,Python安裝,Python輸入輸出,數(shù)據(jù)類型與變量,運(yùn)算符,條件語句,循環(huán)語句,Python特性,函數(shù),面向?qū)ο?,常見類庫,人工智能編程?/p>
2.1 Python程序設(shè)計(jì)教學(xué)目標(biāo)
教學(xué)目標(biāo)是使學(xué)生進(jìn)步和變化的明確表述,也是教學(xué)活動期望得到的學(xué)生的學(xué)習(xí)結(jié)果。因此,Python程序設(shè)計(jì)的教學(xué)目標(biāo)在整個教學(xué)活動中,起著引導(dǎo)性的作用。
教學(xué)目標(biāo)一 學(xué)生具有用Python編寫基本程序的能力。要求學(xué)生根據(jù)程序的功能需求,建立面向?qū)ο罂蚣?,基于常用類庫,使用Python語言編程并調(diào)試,最終實(shí)現(xiàn)程序功能。
教學(xué)目標(biāo)二 學(xué)生掌握Python編程的特性。每一種編程語言都大同小異,但每一種編程語言都有它獨(dú)有的特性。而Python語言是解釋型語言,非常容易進(jìn)行混合語言編程,方便使用它的第三方庫。因此在運(yùn)用Python時,必須避免與其他語言混淆,而學(xué)生掌握Python語言的特性顯得尤為重要。其中Python較為著名的特性有:①字典;②切片;③生成式;④生成器;⑤逗號的用法;⑥簡單循環(huán);⑦淺拷貝與深拷貝;⑧類屬性與實(shí)例屬性;⑨裝飾器,⑩正則表達(dá)式。
⑴ 字典的示例代碼
name_scores={‘Jack:80, ‘Kevin:95, ‘Pony:75}
print(name _scores[‘Kevin])
輸出:95
⑵ 切片的示例代碼
sale=[155,102,74,11,55,87,63,42,99,82]
print(sale[0:3])
輸出:[155,102,74]
print(sale[-3:-1])
輸出:[42,99]
注:負(fù)號為反方向開始計(jì)數(shù)
print( sale[:4] )
輸出:[155,102,74,11]
注:默認(rèn)為從零開始計(jì)數(shù)
print( sale[::-1] )
輸出:[82, 99, 42, 63, 87, 55, 11, 74, 102, 155]
⑶ 生成式的示例代碼
temp=[x*2 for x in range(1, 11)]
print(temp)
輸出:[2,4,6,8,10,12,14,16,18,20]
⑷ 生成器的示例代碼
temp2=(x*2 for x in range(1, 11))
print(next(temp2))
輸出:2
print(next(temp2))
輸出:4
注:注意括號的區(qū)別
⑸ 逗號的示例代碼
a,b=2,5
print(a,b)
輸出:2 5
list_1=[1,2]
list_2=[‘a(chǎn),b]
for x,y in zip(list_1,list_2)
print x,y
輸出: 1 a
2 b
⑹ 簡單循環(huán)的示例代碼
print(“Tom”*2+”Jack”*3)
輸出:TomTomJackJackJack
⑺ 淺拷貝與深拷貝的示例代碼
import copy
a=[1,2,3]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(id(a),id(b),id(c),id(d))
a.append(4)
print(a,b,c,d)
a=[4,5,6]
print(a,b,c,d)
輸出:
19063880 19063880 19089800 19048840
[1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 3] [1, 2, 3]
[4, 5, 6] [1, 2, 3, 4] [1, 2, 3] [1, 2, 3]
⑻ 類屬性與實(shí)例屬性的示例代碼
class Tool(object):
num=0
def__init__(self,newname):
self.name=newname
注:其中num為類屬性,name為示例屬性
⑼ 裝飾器的示例代碼
def dec(func):
def innt():
print("zhuangshi")
return func()
return innt()
@dec
def func():
print("func")
func()
輸出:
zhuangshi
func
注:python裝飾器本質(zhì)上就是一個函數(shù),它可以讓其他函數(shù)在不需要代碼變動的前提下增加額外的功能,裝飾器的返回值也是一個函數(shù)對象(函數(shù)的指針)
⑽ 正則表達(dá)式的示例代碼
import re
data="Boys are taller than girls"
result=re.match( r'(.*) are (.*?) .*', data)
if result:
print ("result.group():", result.group())
print ("result.group(1):", result.group(1))
print ("result.group(2):", result.group(2))
輸出:
result.group():Boys are taller than girls
result.group(1):Boys
result.group(2):taller
注:將data中與'(.*) are (.*?) .*'相匹配的內(nèi)容賦值給result
教學(xué)目標(biāo)三 使學(xué)生了解常用的Python庫,了解人工智能思想及編程方式。在人工智能時代背景下,若不借第三方庫,只靠Python的標(biāo)準(zhǔn)庫,很難編寫復(fù)雜的處理程序。而Python有開源的特性,其所衍生的第三方Python庫也均都開源,而且很多開源庫都有團(tuán)隊(duì)維護(hù),因此十分適合企業(yè)及個人使用。常見的Python標(biāo)準(zhǔn)庫如pdb、urllib、httplib、hash、os、threading等,常見的Python第三方庫requests、numpy、matplotlib、tensorflow等,其中打敗全世界圍棋高手的AlphaGo,就是基于tensorflow開發(fā)而來的。由于第三方庫眾多,函數(shù)及用法各有不同,讓學(xué)生全部掌握十分困難,需要指導(dǎo)學(xué)生了解第三方庫的特征及用法。當(dāng)學(xué)生需要用時,采用“help()”指令的方式得到該函數(shù)的用法及參數(shù)特性,使學(xué)生學(xué)會去獨(dú)立探索Python庫的多樣性,而不是一味的填鴨式教育,這樣可以提升學(xué)生學(xué)習(xí)的積極性與主動性,提高學(xué)生的動手能力,增強(qiáng)學(xué)生的探索與創(chuàng)新精神。
2.2 任務(wù)驅(qū)動與項(xiàng)目驅(qū)動混合教學(xué)模式
為了達(dá)到上述的教學(xué)目標(biāo),Python程序設(shè)計(jì)在教學(xué)活動中采用學(xué)生主體、教師主導(dǎo)的任務(wù)驅(qū)動與項(xiàng)目驅(qū)動混合模式,開展教學(xué)活動,引導(dǎo)學(xué)生完成每一章節(jié)的具體任務(wù),從而提升學(xué)生的Python語言編程能力。
任務(wù)驅(qū)動模式是指在教學(xué)過程中,以學(xué)生為中心,以任務(wù)為載體,把教學(xué)內(nèi)容巧妙地隱含在一個個具體任務(wù)之中,學(xué)生通過獨(dú)立或協(xié)作完成任務(wù),學(xué)習(xí)新知識和新技能 [9]。Python程序設(shè)計(jì)在教學(xué)過程中,對于基礎(chǔ)章節(jié)每一小節(jié)一個任務(wù),以任務(wù)結(jié)果評價學(xué)生掌握情況,通過這樣的方法打破理論與實(shí)踐分離,將課堂理論運(yùn)用到任務(wù)中去,實(shí)現(xiàn)理論與實(shí)踐相統(tǒng)一。
Python程序設(shè)計(jì)的示例任務(wù)如下。
任務(wù)1 兩個文件file1和file2,各存放一行字母,要求把這兩個文件中的信息合并,并且按字母順序排列,輸出到一個新文件file3中。
任務(wù)1代碼如下:
import string
fp1=open('file1.txt')
data1=fp1.read()
fp1.close()
fp2=open('file2.txt')
data2=fp2.read()
fp2.close()
fp3=open('file3.txt','w')
data_all=list(data1+data2)
data_all.sort()
data_unite=''
data_unite=data_unite.join(data_all)
fp3.write(data_unite)
fp3.close()
項(xiàng)目教學(xué)法是師生通過共同實(shí)施一個完整的項(xiàng)目工作而進(jìn)行的教學(xué)活動。將一個相對獨(dú)立的項(xiàng)目(產(chǎn)品教學(xué)法),交由學(xué)生自己處理。信息的收集、方案的設(shè)計(jì)、項(xiàng)目的實(shí)施及最終的評價,,都由學(xué)生自己負(fù)責(zé) [10]。在Python程序設(shè)計(jì)的項(xiàng)目教學(xué)中,考驗(yàn)了學(xué)生對Python基本庫與第三方庫的了解及運(yùn)用程度,結(jié)合人工智能的編程思路,帶領(lǐng)學(xué)生了解人工智能在日常生活中的運(yùn)用。有些大型項(xiàng)目,學(xué)生無法直接入手,在課程教學(xué)活動中需幫助學(xué)生了解大型項(xiàng)目的開發(fā)流程,模塊分割,聯(lián)合調(diào)試等,使得學(xué)生在學(xué)會協(xié)作編程的同時,提高企業(yè)項(xiàng)目的編程能力。
任務(wù)2 Python程序設(shè)計(jì)的示例項(xiàng)目:有如下一組數(shù)據(jù),X代表房子面積,Y代表房子價格,運(yùn)用面向?qū)ο笤O(shè)計(jì)思想,采用線性回歸擬合,將最后回歸信息通過坐標(biāo)軸展示。
X=[18,20,33,45,94,110,121,133]
Y=[1324,3315,2218,4127,8679,9989,10987,15412]
任務(wù)2的關(guān)鍵代碼如下:
import numpy as np
import matplotlib.pyplot as plt
house_area=np.array([18,20,33,45,94,110,121,133],
dtype=np.float64)
house_price=np.array([1324,3315,2218,4127,8679,9989,
10987,15412],dtype=np.float64)
class House_Price_Predicted(object):
def__init__(self,datenum,iternum,learnrate):
#super(House_Price_Predicted,self).__init__()
self.date_num=datenum
self.iteration_num=iternum
self.learn_rate=learnrate
def simple_d_a(self,cal_price,price,area):
return (cal_price-price)*area
def simple_d_b(self,cal_price,price):
return cal_price-price
def cal_loss(self,cal_price,price):
return sum((cal_price-price)**2)/(2*self.date_num)
def draw_date(self):
chart1a=np.array(np.linspace(-20,20,100))
chart1b=np.array(np.linspace(-20,20,100))
draw_loss=np.zeros(shape=(len(chart1a),len(chart1b)))
for ai in range(0,len(chart1a)):
for bi in range(0,len(chart1b)):
a0=chart1a[ai]
b0=chart1b[bi]
temp=self.cal_loss(a0*house_area+b0,house_price)
draw_loss[ai][bi]=temp
chart1a,chart1b=np.meshgrid(chart1a,chart1b)
return(chart1a,chart1b,draw_loss)
def draw_chart(self):
fig=plt.figure(1,figsize=(12,8))
chart1=fig.add_subplot(1,1,1)
chart1.plot(house_area,house_price)
chart1.plot(house_area,house_price,'o')
chart1.set_xlabel('X')
chart1.set_ylabel('Y')
for step in range(1,self.iteration_num):
__loss=0
all_da=0
all_db=0
for i in range(0,len(house_price)):
tempda=self.simple_d_a(a*house_area[i]+
b,house_price[i],house_area[i])
tempdb=self.simple_d_b(a*house_area[i]+
b,house_price[i])
all_da=all_da+tempda
all_db=all_db+tempdb
__loss=(a*house_area[i]+b-house_price[i])**2/2.0
tempx=np.linspace(0,1,4)
tempy=tempx*a+b
chart1.plot(tempx,tempy)
a=a-all_da * self.learn_rate
b=b-all_db * self.learn_rate
all_loss.append(__loss)
all_step.append(step)
plt.ioff()
plt.show()
def main():
hp=House_Price_Predicted(8,100,0.01)
hp.draw_chart()
if __name__ == '__main__':
main()
注:為了方便運(yùn)算,代碼通過標(biāo)準(zhǔn)化將數(shù)據(jù)調(diào)整到0~1之間。
通過上述代碼當(dāng)?shù)螖?shù)為20次時,線性擬合為圖1所示。
當(dāng)?shù)螖?shù)設(shè)為100時,線性擬合如圖2所示。
當(dāng)?shù)螖?shù)設(shè)為500時,線性擬合如圖3所示。
Python程序設(shè)計(jì)的任務(wù)驅(qū)動與項(xiàng)目驅(qū)動混合教學(xué)模式,在整個教學(xué)過程中,基礎(chǔ)知識部分適合以任務(wù)驅(qū)動教學(xué)模式,而在拓展知識部分及綜合訓(xùn)練適合以項(xiàng)目驅(qū)動教學(xué)模式,其中拓展知識部分主要包括面向?qū)ο?,常見類庫,人工智能編程?/p>
任務(wù)驅(qū)動與項(xiàng)目驅(qū)動混合教學(xué)模式,克服了理論知識枯燥乏味,學(xué)生積極性、主動性不高,實(shí)操能力不強(qiáng)等問題,同時與單一的任務(wù)驅(qū)動相比,增加了學(xué)生真實(shí)的項(xiàng)目經(jīng)驗(yàn),實(shí)現(xiàn)了產(chǎn)教融合,與單一項(xiàng)目驅(qū)動相比,減輕了學(xué)生學(xué)習(xí)Python編程與人工智能編程的壓力,給予學(xué)生更多的編程信心與編程樂趣。
2.3 Python程序設(shè)計(jì)“1171”教學(xué)方法
教師為實(shí)現(xiàn)教學(xué)目標(biāo)而開展各種教學(xué)活動設(shè)計(jì)教學(xué)程序,采用必要的教學(xué)手段。
在Python程序設(shè)計(jì)課程中,把每次課程分為4個階段,分別占用課時比例為10%,10%,70%,10%,故簡稱為“1171”教學(xué)法。前10%主要采用講授法或啟發(fā)式教學(xué)法,帶學(xué)生引入課程,并理解知識點(diǎn);接下來10%為課程的演示階段,主要通過演示法或討論法,向?qū)W生演示編程實(shí)現(xiàn)某個功能的過程,或向?qū)W生提出綜合性的項(xiàng)目問題,與學(xué)生展開討論;占比最大的70%時間,用于學(xué)生的編程實(shí)操、實(shí)驗(yàn),在學(xué)生需要幫助時給予啟發(fā),提高學(xué)生自主探索的能力;最后的10%時間,采用講授法或討論法,向?qū)W生闡述整個課程中遇到的常見問題及編程技巧,總結(jié)本堂課的重點(diǎn)內(nèi)容。
根據(jù)實(shí)踐,在整個Python程序設(shè)計(jì)的教學(xué)活動中,采用“1171”的教學(xué)法,能大大提升學(xué)生的自主性與創(chuàng)新創(chuàng)造力,而采用傳統(tǒng)的講授法與實(shí)驗(yàn)法結(jié)合教學(xué),難以激發(fā)學(xué)生的興趣,通過在課程中間穿插學(xué)生對于項(xiàng)目、任務(wù)的討論,加深學(xué)生對于知識點(diǎn)的理解,并為編程實(shí)訓(xùn)做好鋪墊,同時讓學(xué)生懂得了團(tuán)隊(duì)合作。而最后的總結(jié)時間,是引導(dǎo)學(xué)生對于實(shí)操中問題的回顧,加深了學(xué)生對重點(diǎn)和難點(diǎn)的印象。
3 結(jié)束語
在浙江國際海運(yùn)職業(yè)技術(shù)學(xué)院的程序設(shè)計(jì)課程中進(jìn)行了教學(xué)實(shí)踐。實(shí)踐表明,該教學(xué)目標(biāo)、教學(xué)模式、教學(xué)方法可以激發(fā)學(xué)生對Python程序設(shè)計(jì)的學(xué)習(xí)熱情,并且了解人工智能的編程思路,同時使學(xué)生具有運(yùn)用Python解決實(shí)際問題的能力。逐漸的Python代替C語言成為其他非計(jì)算機(jī)專業(yè)的程序設(shè)計(jì)必修課,學(xué)生可以告別復(fù)雜語法的困擾,而專注于其專業(yè)領(lǐng)域的研究。但目前國內(nèi)高校的Python師資短缺,希望本文能為程序設(shè)計(jì)相關(guān)的教輔人員提供教學(xué)思路,以期更好的推廣Python教學(xué)。
參考文獻(xiàn)(References):
[1] 新一代人工智能發(fā)展規(guī)劃[Z].國發(fā)〔2017〕35號.
[2] 《促進(jìn)新一代人工智能產(chǎn)業(yè)發(fā)展三年行動計(jì)劃(2018-2020年)》印發(fā)[J].機(jī)器人產(chǎn)業(yè),2018.1:70-79
[3] 秦科,劉貴松.面向Python應(yīng)用的大學(xué)教學(xué)改革初探[J].計(jì)算機(jī)教育,2017.9:21-25
[4] 派崔克·溫斯頓.人工智能[M].劍橋出版社,1984.
[5] 馬玉慧,柏茂林,周政.智慧教育時代我國人工智能教育應(yīng)用的發(fā)展路徑探究——美國《規(guī)劃未來,迎接人工智能時代》報告解讀及啟示[J].電化教育研究,2017.38(3):123-128
[6] De Meyer, Kris. Foundations of stochastic diffusion search.Diss. University of Reading,2004.
[7] 秦科,劉貴松.面向Python應(yīng)用的大學(xué)教學(xué)改革初探[J].計(jì)算機(jī)教育,2017.9:21-25
[8] 嵩天,黃天羽,禮欣.Python語言:程序設(shè)計(jì)課程教學(xué)改革的理想選擇[J].中國大學(xué)教學(xué),2016.2:42-47
[9] 吳靜.項(xiàng)目教學(xué)法與任務(wù)驅(qū)動教學(xué)法的異同比較[J].北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報,2011.10(3):79-82
[10] 徐肇杰.任務(wù)驅(qū)動教學(xué)法與項(xiàng)目教學(xué)法之比較[J].教育與職業(yè),2008.11:36-37