李潤澤 楊春序 周玉鑫 赫一諾 董佳晨 王筱蔓
編者按:
文科的同學學編程,理科的同學學寫作,以下兩篇講述發生在北大和清華的事,預示著大學生綜合素質培養的一些趨勢。
點擊了Run程序中的運行鍵后,謝云騰帶著疲憊爬上床,留下電腦在黑暗中飛速運行。這已經是他寫這次文科計算機基礎實驗班課程作業的第三個晚上。
這是一次網絡爬蟲作業,要求爬取“新浪每日熱點新聞”版面連續31天的新聞內容,并對字數、圖片等信息進行分析。由于數據量龐大,程序運行耗時長,再加上校園網不穩定,經常導致程序報錯,停止運行,沒有點好運氣,程序很難執行成功。第二天早上醒來,謝云騰終于看到了“Process finished with exit code 0”(程序執行成功,正常退出)。
謝云騰的困擾在北大并非個例。自從程序設計被全面納入文科計算機教學,許多文科生都不得不面對這個陌生的領域。隨之而來的是種種不適應:老師講得太快,難以跟上;作業得不到細致講解,答案很難看懂;上課聽得明明白白,自己操作卻總是失敗……一時間,文科生學編程被推上了風口浪尖。
編程歸來
實際上,編程并不是在2018年秋季學期第一次進入文科計算機課程。
早期的教學計劃要求文科生必選兩個學期的文科計算機課程,第一學期教授計算機基礎知識和辦公自動化,第二學期教授程序設計。2000年后,隨著Office的普及,第一學期的內容變為計算機基礎知識和Office,第二學期則提供多個專題供學生自主選擇學習,其中包括程序設計。2015年前后,隨著畢業學分調整,文科計算機課程被壓縮成一學期;同時,信息科學技術學院也開始了讓編程回歸文科計算機必修課程的探索。
2018年是試驗的第3年,也是最后一年。此后,不管是在實驗班還是基礎班,編程都成為了必修內容。
編程的回歸也引發了不少爭論。
教學方式是爭論的焦點。“老師沒有操作代碼,直接把例子放在課件上展示,當我們還在看代碼是什么意思的時候,已經放過去很多張幻燈片了。”國際關系學院2018級本科生張宸赫說。他認為編程教學進度過快,效果不好,不如把課程分為兩個學期,第一學期詳細學習Office,第二學期慢慢學Python。“就像學語言一樣,從學音標開始。”
“培養科學家和培養實際使用者,這兩個是有區別的。”負責文科計算機基礎實驗班教學的鄧習峰老師猜測,第一次講Python的老師可能采用了培養專業“碼農”的方式,轉換成適合文科生的教學方式需要一個過程。“另一個問題在于時間太短,”鄧習峰分析,“現在的文科計算機課程由原來雙學期的課變成單學期,時間縮短導致內容講不完,不夠精細,學生容易處于半生不熟的狀態。這是課程建設過程中要繼續優化的內容。”
但他也表示,課程開設之初,學院就制定了針對文科生的教學計劃,編程語言的選擇就是特點之一。
“這次選擇經過了復雜的決策,但后來我們都選了Python。”鄧習峰說。相比其他編程語言,Python具有跨平臺、入門簡單、數據處理能力強、功能庫豐富等優勢。也正因此,近年它的流行程度上升很快,并成為2018年TIOBE編程語言排行榜年度語言。
由于處在過渡期,2018年秋季學期的編程教學沒有設立統一大綱,不同班的教師自主選擇授課方式和內容。“但只要是程序設計,內容基本是差不多的。”鄧習峰說,“可能每個老師對難度的把控是不一致的,但到了2019年秋季學期就會相對統一。”同樣,試卷也由各班教師自主命題,但均包括筆試與上機測試,按不同比例計入總成績。
文科與編程
在鄧習峰看來,“自用程序設計”是文科生學習編程的主要目的。相對于“公用程序設計”,后者目的在于給別人使用,而前者注重滿足自己的需求。
“比如處理研究數據時,如果Excel解決不了,就可以先用Python解決,再交給Excel做可視化。”他以自己研究的北京交通大數據舉例:北京一天的交通數據約有1600萬條,Excel完全無法處理,其他軟件的效果也不好。但用Python處理只需要很短時間,就可以得出每個車站的客流量、乘客上下車時間、不同地區乘客的乘車偏好等信息。再將數據進行拓展,加入每個站的經緯度,結合地圖后就可以分析哪些地方人最多、人群的流向是哪里。這就為國民經濟的決策提供了保證。
而在人文學科中,中國歷代人物傳記數據庫(CBDB)也為歷史學研究提供了更多角度。CBDB依托程序設計與數據庫技術,收錄中國歷代40余萬人物的傳記和譜系。借此,研究者可以查詢某地在科舉和出仕方面的表現,或將某特定時空下的個人創作連接起來進行分析。
“這樣的技術應用到了歷史學,很多概念的呈現會更加可視化、更加直觀。”鄧習峰認為,相比于定性研究,編程更多是在用數與算的概念去衡量我們所面對的世界。這在一定程度上彌補了中國傳統思維的欠缺。
對2015級元培學院光華方向本科生韋銘杰而言,編程屬于專業的一部分。在他學習的量化金融領域,編程的地位舉足輕重。他表示,國外有些面試地點就有計算機,要求面試者現場編程。一次量化金融行業的實習面試中,面試官當場提出一個問題讓應聘者寫程序,并現場對程序進行點評。
由于當時的文科計算機教學不包含程序設計,韋銘杰特意選擇了計算概論B。在他看來,學校學的和工作用的編程是有差異的,實際用的編程一定比學校學的復雜,但如果沒有課程內容做基礎,是做不到實際運用的。
2012級經濟學院本科生唐奕波在大四時嘗試過自學編程,因為感到投入產出比太低而放棄。他認為編程不能只依賴于效率較低的自學,更希望能有比較熟練的人引導,這樣有問題可以直接問他們。
編程無用?
但是,對于大部分選擇就業的學生,編程并不是必備技能,在應聘中也不一定錦上添花。
“(就業對編程是否有要求)主要看找哪方面的工作。”2012級經濟學院本科生沈士竣介紹,“做量化金融或搞學術的話,對編程的要求還是很高的。但如果做行業員、投行、基金、PE(私募股權投資)等,要求不高。”從本科到研究生,他接觸的編程主要集中在MATLAB、Stata等數據分析軟件。但對于學習Python、C++等編程語言,他表示尚未考慮:“暫時接觸不到。”
同樣,雖然唐奕波從事的股票研究行業需要相關程序,但他所在公司有專門的IT部門負責研發模塊,自己基本用不上程序設計。股票研究企業招聘時,除非是量化研究,否則就對編程沒有任何要求,也不會有“掌握編程優先”的情況。
這也正是很多文科生心中的疑慮:如果未來用不到編程,現在花很大力氣去學,有什么意義?
信息科學技術學院的郭煒老師認為,沒有用很多時候是不會用導致的。如果會(編程)的話,你可以主動發現這樣的機會,在工作中展示自己。這個才能對你的職業發展很有利。他希望學生不要抱著“這個東西好像沒什么用,我就不學”的想法。“那很可能以后有用卻來不及再學,就錯失這個機會了。”
同樣受到重視的,還有編程學習對思維的影響。鄧習峰很看重編程對文科生數理邏輯和計算思維的養成。“比如,把一個大的任務分解成幾個小的任務,或定義若干函數,每一個都要把自己一段的任務做好。實際上這是一種思維的訓練。”
2016級信息科學技術學院本科生吉如一也有相同的看法。“編程和說話不一樣。說話可以有些模糊不清的地方,但是編程必須很嚴謹,邏輯性很強,不能出一點失誤。”
“所有人都要學編程”
當校園中探討著文科生是否需要學編程時,編程熱已經遍布全國,乃至世界。
在百度指數中以“編程”為關鍵詞進行分析,早在2012年,“編程”的媒體指數就經歷過一次高峰,之后多次登上新聞頭條。進入2018年,媒體指數又迎來高潮。正如郭煒所說:“現在所有人都要學編程。”
“原因很明顯。”郭煒說,“計算機在各行各業都得到了很廣泛的應用。所以,不管什么行業,你很快就會遇到需要編程的場合。以后編程可能不那么熱了,我覺得是因為它就像數學一樣,每個人都要學了。”
鄧習峰認為,編程入門難度的變化也是原因之一。隨著軟件提供的編程環境讓程序設計的門檻降低,“熱”形成了初步條件。“就像計算機的操作,原來是字符界面,進入圖形化的界面后,計算機在全國、全世界都更加的普及。”鄧習峰說,“程序設計是聯系邏輯思維、實證思維和計算思維的重要途徑,它能幫我們更好地理解當今信息社會。我相信未來它會成為中國大學生必備的基礎技能。”
在哈佛大學,編程已經成為基礎課程。CS50是哈佛大學的編程公開課,面向所有專業的學生,講授包括C、PHP、JavaScript、SQL、CSS、HTML在內的多種語言,早在2015年秋季學期就已經成為校內最熱門的課程,得到超過800人注冊,其中只有10%有過編程背景。
“我相信我們能做到比它更好。”鄧習峰說。
“課程壓力很大,這是推行編程的代價。”鄧習峰說,“但我們還是要堅持,我認為我們走的是正確的方向,更多老師也都已經認可了。這是大勢所趨。”
但文科計算機課程依然需要改善。更好的教學效果需要更多的時間。由于學校的課時已經非常緊張,增開課時并不現實,通過引入新技術提高上課效率是當下最好的辦法。鄧習峰表示,未來計劃采用MOOC(慕課)和翻轉課堂的形式,把Office和計算機基礎知識放到網上供學生自學,給編程教學更多課堂時間。
同時,上機課的教學也會引入新的形式。“比如說我們把每一次作業都做出多種解決方案,學生之間可以互相比較,看有沒有更好的方案,讓學習的質量更高。”此外,他表示如果時間允許,將會設計“百練百講”,為每個教學專題附加難度適中的題庫,幫助學生通過實踐,盡快上手程序設計。
鄧習峰還認為,學生需要改變抵觸情緒。在文科計算機課程納入編程前,Office和計算機基礎知識是主要的學習內容,大部分同學對此已有一定基礎,學起來相對容易。相比之下,編程的難度顯然更高。“如果這門課改個名字,叫‘計算概論,可能很多人心里就平衡了。”他開玩笑說。
但他認為,程序設計絕不是文科生無法接觸的。他表示,在Windows沒流行起來之前,文科生用DOS系統學FoxBASE、FoxPro(編程軟件),甚至沒有可視化界面,但學的效果也不錯。“當然,對文科生的教授方法,比如說教學的案例、內容需要我們去優化,但是不能說文科生就學不會程序設計。”
變化仍在繼續。鄧習峰相信,隨著課程本身與文科生結合更緊密,編程一定會走進文科生內心,達到最終目標:“通過程序設計,文科生能掌握一門伴隨自己工作和學習的程序設計語言,也能更好地去理解當今的信息技術。”
責任編輯:尹穎堯