為什麼國內高校沒有專門開設web前端的課程?

現在前端這麼熱門,需求也很大,技術也很成型,為什麼高校不開展相關課程呢


曾經參與百度高校公開課,作為講師在清華、北理有過授課經歷。

@沈洪順 就是這個項目的百度方面的工程師負責人,他的答案介紹的比較全面了,我想對這種現象做一下分析。

這裡要從前端的特殊性說起:

前端的本質是一種運行在瀏覽器中的GUI軟體。

理論上講,前端在高校的基礎課程應該是偏向於圖形用戶界面(GUI)相關的知識。GUI工程本身歷史短、概念少,所以高校很少針對GUI開發設立課程,統一歸類到基礎學科課程中學習就好了,畢竟對於傳統軟體工程開發來說,開發GUI軟體和開發一般軟體在工程上沒有太大差別。

其實高校的課程設計思路是正確的,學習基礎學科之後,理論上通過「演算法+數據」就能組合得到GUI軟體,方法論相同。

OK,坑爹的事情來了:前端是運行在瀏覽器環境下的GUI軟體!本來正常的計算機畢業生所掌握的知識經過簡單培訓是能上手傳統GUI軟體開發的,但前端卻不能,因為你要花時間摸清楚瀏覽器的「脾氣」,而後才是運用本科的基礎知識進行開發。這個摸清瀏覽器「脾氣」的過程,可能就要經年的積累了,這就是造成現在前端校招比較難對口的原因之一。

高校計算機課程認為前端並不特殊,再怎麼複雜,也就是GUI開發而已吧。而前端從業者知道,從科班畢業之後,還有一段痛苦的自學之路。然而,這些經驗應該在本科傳授么?我覺得以現代前端發展這個尿性來看,是不可能的,你今天教的東西,明天就過時了,學生畢業各個都會兼容IE6也沒啥用,這是很諷刺的。

在高校培養前端工程師,應該教他們點什麼?

「教學生點什麼」是擺在眼前最大的問題。一方面要擺脫前端一直以來在高校眼中的low逼氣質,另外一方面要傳授一些不會過時的知識,課程設計最為關鍵。如果我來定製高校的前端課程,我覺得可以在已有計算機專業課基礎上,增加(或加強)以下課程(必修):

  1. 《瀏覽器體系結構》:瀏覽器就是我們前端應用運行的「虛擬機」,類比本科階段計算機專業學習的《計算機組成原理》,其目的是幫助計算機本科學生掌握計算機基本體系結構,前端從業者學習瀏覽器體系結構是非常有助於掌握瀏覽器的「脾氣」的;
  2. 《JavaScript引擎原理》:在《編譯原理》的基礎上,介紹現代瀏覽器的js引擎設計理念,這是一門理論與實踐結合的課程,幫助學生掌握引擎工作原理,了解語言的內部機制;
  3. 《瀏覽器內核設計》:類比本科專業課的《操作系統》課程,介紹瀏覽器的排版和渲染演算法,工作原理以及各個系統模塊的調度機制。這也是一門理論和實驗課程,學生的實驗作業是實現一個簡易的瀏覽器內核;
  4. 《CSS渲染原理》:在《瀏覽器內核設計》課程的基礎上,深入學習CSS渲染原理,了解CSS的發展史,設計思想,渲染的規則樹,盒模型的內核工作機制。
  5. 《HTTP協議》:在《網路工程》課程基礎上,深入學習HTTP協議,1.0/1.1/2 等版本的發展史,HTTP協議的格式、RESTFul語義等,《HTTP權威指南》是不錯的教材
  6. 《前端工程》:在《軟體工程》課程基礎上,學習前端有別於傳統GUI軟體的工程化部分,可能涉及到開發框架、設計模式、組織架構、系統測試、前端安全、統計監控、性能優化等;
  7. 《馬列毛鄧三八》:無論做什麼研究,都要有信仰

以下是一些選修課:

  1. 《頁面設計鑒賞》:增加審美的,最好有一個美女老師,天天帶著我們看國外的小站點(羞羞)
  2. 《Extjs編程》:就好像現在大學還教foxpro窗體編程一樣,前端的大學課程也要有一兩個學習這樣老古董的機會
  3. 《Photoshop 8.0實用技巧》:跟網頁設計鑒賞課一樣,也是一個美女老師教的,帶大家玩玩PS 8.0的各種功能,課程大作業就是PS一張毫無ps痕迹的圖
  4. 《生理衛生與青春期教育》:本來這個應該是必修的。。。
  5. 選修課我實在編不下去了,哈哈。。。

必修課部分我覺得都是值得在本科學習的,一方面是在已有計算機基礎上深入了解一些編譯原理、數據結構、軟體工程等學科是如何在瀏覽器這個集大成者的軟體上應用的,這是對已有計算機基礎課程的延伸,符合高校課程設計胃口;另一方面我們讓學生在本科期間就從瀏覽器內核層面理解瀏覽器的工作原理,縮短我在開篇提到的「摸清瀏覽器脾氣」的過程,一舉兩得。

說著說著,我突然好懷念大學時光。。。。

========【4.22補充】========
很多答案提到了「我們不是技校,不用學前端」。摔,這明顯是不了解本科課程設計的思路。比如現階段本科課程與計算機直接相關的一般有:計算機組成原理、數電模電、彙編、編譯原理、數據結構、操作系統等課程,但是最後教授出來的學生是為了讓他們都去研發CPU、寫編譯器、設計操作系統么?顯然不是,本科課程教的是基本的計算機科學思維方式+了解基本的計算機原理,為將來的工作和深造打下一個基礎,是在訓練學科素養。所以本科也沒有開設《20天學會C++》,《php從入門到精通》這些就是所謂的「技校課程」吧?

所以,如果是前端在高校的課程,其課程設計思路也不用是教你「怎麼寫前端」,而可以以「如何設計實現現代瀏覽器」的目標去授課,最後,學這些的學生畢業出來才大多去寫前端。。。(哈哈)

相信現代瀏覽器的複雜程度和涉及的知識廣度已經足夠開設幾個學期的課程了,而且這些內容對於基礎本科課程具有一定的鞏固作用。深入瀏覽器內核研究可以覆蓋很多本科課程的知識點,如果幾個學習了這個課程的本科生能在期末實現一個簡易的瀏覽器,這個課程也足夠「高大上」了吧,即不失學院派的學術形象,又是一個與現代IT時代高度契合的課題,是本科接觸前端的一種非常合理的途徑。

另,這裡附上 @錢康來 同學答案中給出的清華大學web前端公開課的地址: Web前端技術實訓課程的課程信息 很感謝這個公開課能摒棄傳統觀念擁抱前端,我讀書那會要是能接觸到這些就好了。

什麼高端低端的,事在人為好么!!!


很少在知乎回答問題,也是應清華劉強老師的邀請來回答這個問題。首先,國內高校有開設專業的前端課程,但是確實不多,而且很多也是開展一段時間,下學期就沒有了,問題主要有以下幾方面:

1. 高校,首先高校是否認可或者說了解前端這個課程是一個主要問題,前端是一門年輕的學科,發展並不是很成熟,前端工程師也比較偏年輕,在業內的影響力也較有限,所以高校在決定是否開展這個課程的時候是面臨較大的挑戰和風險的。

2. 公司,前端這門課確實目前較偏工程,所以一般學校都會選擇和一些較大的公司來合作(百度、阿里、騰訊等),公司一般會選擇一些較資深的工程師來給學生上這個課,我們暫且不說講課的質量,主要的問題其實還是堅持的問題,很多時候部門換了老大或者kpi變了,課程舉辦一次就夭折了,很難一直堅持下去。

3. 學生與講師(工程師),他們其實是整個課程的主體,但是卻很難起到關鍵性的作用,之前在清華、北航、上海交大和中山大學(這裡只列舉幾個我參與的學校,其實還有很多其他學校)都開展過前端課程,有本科也有研究生,學生反響比較好,一方面可以和大公司的工程師接觸,一方面可以學到很多工程經驗和技巧;講師一般也比較積極,工程師其實是比較純粹的,就是和學生分享心得,很多時候是沒有任何報酬的,一方面講師自己可以得到鍛煉,另一方面也會有很大的成就感。同時也存在一些問題,一般學生平時課業都比較重,加一門課程會加大學業負擔,所以需要謹慎選擇開課時間以及開課學生;很多講師雖然都比較資深,但是講課技巧存在一定問題,當然也有過來應付完成公司任務的,這種會給學校和學生留下不太好的印象。

雖然存在很多問題,還是有一些積極的成果,清華與百度的前端課程已經連續舉辦了兩屆了,今年的暑期會繼續開展(貌似還會接受外部報名)以後也會堅持一直開展下去,這裡介紹一些成功的經驗:

1. 學校(清華)對前端這門學科有著積極客觀的理解和認識,總理今年也提出了互聯網+的概念,前端(泛指)是互聯網行業里不可缺少的一部分,JavaScript 也是 github 上很活躍的語言之一,前端正在走向成熟、走向規範,也需要更多人才參與進來推動它更快更好的發展。

2. 工程師的積極推動,雖然很多公司開展宣講或是課程的初衷都是比較功利,畢竟是公司行為,但是參與其中的工程師卻可以藉助這個平台和機會把整個事情做得更好,前端工程師的性質會更擁抱開源、更傾向於分享(也是由於Javascript這門特殊語言所決定)

3. 新平台、新模式,互聯網教育這些年一直在風口,如果可以藉助好這些平台,那麼或許會讓前端課程覆蓋到更廣的範圍吧


缺師資,知道該講什麼,有能力講的,都已經供不應求了,每天忙被獵頭挖,顧不上這個。。。


個人感覺,一來是前端還是太年輕,發展太迅速,變化太大,本身就不好去做課程教育。二來,前端包含內容太多,特別是實踐。而大學課程更注重基礎,思想,體系的培養。所以即使有課程,也可能是js語言相關的。三來,中國的大學,特別是統招,相對來說,課程設置更統一,內容更新和變化更慢。所以,即使有前端,也會先以選修課的形式存在。


我從學生的角度回答一下吧。
學校里的老師普遍覺得前端就是畫畫網頁,沒什麼技術含量。他們可能並沒有與時俱進。
我認為互聯網就想新中國的建立一樣。先是解決人民的溫飽問題(完成基本功能需求),再考慮奔小康(非功能性需求)。高校的老師們還普遍停留在解決溫飽問題的階段。他們可能覺得做演算法研究更有技術含量,而前端或者用戶體驗是一種仁者見仁的感覺,不好去衡量好壞。
還有更重要的一點是,學生是要畢業的,對於畢業設計,做前端很難能寫出好的論文來,導師也不好指導。所以對於畢業設計的評判,也導致了高校對前端的不重視。


因為現在在很多人的眼裡 web前端還是用PS切切圖 用dreamweaver做個靜態頁,
什麼better performance呀 什麼responsive呀 什麼compress呀 根本不知道。


貴校有啊_(:з」∠)_和百度合作的,找業界的人來講課
清華大學-軟體學院-Web前端技術實訓課程的課程信息

update: 我剛才問了下劉老師,她表示以後會上MOOC...現在暫時還木有-。-


這個我來答,我自學前端半年了,最近一個月發現特么多網路大公司居然有前端培訓這個項目面向大眾開放,而且要自己的工程師親自出馬,其他的項目還沒有見過了。目測想盈利的想法不大,想做在線教育也不會在這樣 一個狹隘的地域。
1、首推網易的微專業前端開發工程師,前端開發工程師微專業
這個雖然要錢,有五折卷搶,好多人都搶到,我也搶到了,而且報名了。因為自學好久了,好多東西付出與收益比值太低了,作為學生黨想給自己一個機會好好拼一把。
2、360前端星計劃HTML5高手特訓營
這個就直接到總部培訓了,因為我在廣州,所以也沒有報了。
3、百度Web前端技術學院baidu-ife/ife · GitHub
這個沒有基礎的不要去,我報了,好多問題都要請教別人,後來放棄 了,默默回去補基礎。
4、騰訊前端突擊隊Tencent CodeStar
這個沒了解,人家介紹了,看上去也很 Niubility。
說真的,網路的培訓太渣了,收費不收費我 都體驗過了,那些回一點軟體就出來做老師,什麼前端架構根本不會,好多東西想學 深,還是專業的人員來傳授經驗了。
暫時這麼多,以後有的話再更新,我滾回去繼續 寫代碼了。


畫網頁這種偏嚮應用性質、低端且不需要什麼知識基礎的工作,應該是中職技校去教學的。高校不應該浪費資源在這個上面。

利益相關:前端工程師。


這屬於職業技術學院學的東西,本科還是偏基礎理論。


-_-||我們在講web,.net-_-||
講的比較淺吧
主要是html css js


其實挺無奈的,我上大學那會兒互聯網都是泡沫。


那會兒學習代碼首選都是c ,譚浩強那個版本的。Java倒是有教程,叫做基礎入門。

我敢說90%的高校學校網頁和教學系統都是ASP微軟做的。學校裡面老師連Java都是一周課程上完了,HTML css js這麼簡單的東西還需要開設一門課程?

你太小看高校的能力了,我們只按照書本教學,十年前的教程可以一直延續到今天,十年前的技術你們學習就可以了。

這裡我要引用上海大學校長金校長的一句話:現在的企業和我們學校裡面的教學內容沒有連接起來,我們學校教的是c語言,可是外面企業招聘的卻是Java。

那是不是學校裡面就沒有這方面的大神呢?

在學校裡面就成為前端大神的據我所知還真沒有幾個。都是在工作後成為的,你看看Vue作者和玉伯等等。

說開了吧,學校老師不放你去實習,看中的是你能發表多少篇論文。

當然了現在的前端這麼複雜了,可以拭目以待未來有可能會成為一門課程。畢竟聽說某些高校就有了DOTA教學班。


不知現在如何,但答主大二的時候(2009年),上過計算機系開設的《網頁設計與製作》課程(選修),學習了HTML, CSS, Dreamweaver, Photoshop, Gif, Flash等等。當時還是使用表格進行布局的,老師說了一下弊端,但我們還是很多人圖方便不去用div。


又不是職業技術培訓學校...


因為前端簡單,簡單的幾行關鍵字,複雜是因為涉及太多,HTML,CSS,JS,PS,


問為什麼之前先問是不是,中國傳媒大學動畫與數字藝術學院數字媒體藝術(網路多媒體方向)開設HTML,CSS,Javascript一系列課程,歡迎各位前端安利你們的師弟師妹們報考,謝謝


上周在機房寫javascript代碼,老師看到了,問這是asp代碼嗎?我說不是,這是javascript。然後他說不要浪費時間,好好學java。

大學老師普遍看輕前端,還停留在dw拖表格布局頁面的認知上。


高校就不要做職業教育的事情了。。。。而職業教育出來把工作技能當做敲門磚來教學的,出來的學生又沒有作為「工程師的情懷」。

實踐和工作中去學習才是王道啊。。。


我們學院的倆工作室都是做web的 前後台美工都有 學姐學長帶學弟學妹 老師和前輩接項目 一起做 很多學校都有這樣的工作室吧


1. 展示層的編程(局限性)。
其他編程大多是建立在抽象思維和數據模型之上的,而web編程還必須含雜了一些視覺表現的模型(如DOM),這決定了他基本上只能做表現層的東西。這是不是很局限呢?
2. 運行環境不穩定。
而且還要在一個瀏覽器上運行,要知道瀏覽器是個變化很快很巨大的東西呀,而且幾家大公司在「瀏覽器戰爭」上不分伯仲,導致行業標準不穩定。我在IE4時就寫過js,到後來DOM模型都不知道增加和改變了多少了,想起這個發展史比較令程序員噁心。高校不會把這不穩定的東西拿來教學。
3. 能講的乾貨不多。
以瀏覽器為容器進行開發,我始終覺得像二次開發。能教寫什麼呢?除非是一些奇技淫巧。不過如果真的要寫出有功力的前端代碼的話,無非還是數據結構、設計模式等原理性的思想作支撐。大學授課要教的東西很多,時間寶貴,所以真沒必要開這麼課。

....以後的,想到我再說。


推薦閱讀:

人長大後就一定要變得很功利很現實嗎?
可汗學院的視頻製作過程中用到了哪些軟體?
如何看待男子挑戰義務教育自己培養女兒11年 的新聞?
如何看待只要孩子不要婚姻的未婚生子實驗?

TAG:前端開發 | HTML | CSS | 教育 | 編程 |