有人說,孩子太小不要學程式,那種語法不適合小孩子。
其實那是不清楚這幾年來,程式語言進化之快速。只要會說話,比寫好作文還容易。在未來,我相信程式設計在語法上會越來越接近人類的說話模式,所以重要的不再是寫程式,而是思考,思維與思辨模式的建立,然後用"當時"的電腦可以懂的方式輸入就好。
目前當然還沒到這地步,但是我相信不遠了,所以把這種能力教給目前的小孩子,十年後(也許不用十年)他們剛好就會碰上新時代的來臨,若是現在不教,到時就無法趕在浪頭上。
台灣所有的東西幾乎都是跟著外國在追,因為沒有在浪頭來之前就即早做準備,所以很辛苦。
教學初期我們還是必須按部就班,但是慢慢就把思考,思維與思辨嵌進去。我若是說我打算教國中生軟體工程裡的需求發展,大概有人會罵我。問題是,我們的大學生,甚至很多老師都不知道軟工是何物,需求在哪裡都沒弄清楚就卯起來寫程式焊電路,Project怎會做得好?
不要輕忽孩子們的潛能。
假如我的推斷沒錯,未來最厲害的軟體工程師不是程式寫最好的人,而是思考,思維與思辨能力最強的人。
*****
圖說:新竹市光復高中洪敏勝老師(圖右)與學生 傅皓詮 (圖左)共同開發翻轉地理教室App。
新竹市光復高中老師洪敏勝與高三學生傅皓詮合作開發APP「翻轉地理教室」,除了有教師的自製影片,也善用RSS訂閱全球新聞,希望學生下載後可以打破學習的疆界,隨時隨地學地理。
用新新人類的語言激發學習動機
洪敏勝雖然只到光復三年,但是具備國、高中教學經驗的他發現,教科書只有片段的知識,讓學生若對特定章節有興趣,也沒辦法從教科書上獲得更多有意義的延伸教材,非常可惜。再加上他注意到新新人類對網路還有手機的依賴,興起了自製APP的念頭。他找了熟悉電腦的學生傅皓詮幫忙寫程式,決定要讓「學習不只發生在教室內」。
從玩電動學寫程式,立定軟體開發志向
傅皓詮表示,從小受到爸爸影響,三歲開始玩線上遊戲,越玩越多之後,發現很多外掛軟體可以協助使用者更快破關,興起他開始修改手機遊戲的興趣。這次收到老師的邀請要一起開發APP,他大約花了一個星期寫好並且上架,沒想到上架後卻遇到版權問題又被下架,來來回回修改很多次,最後終於成功。但是有了這次經驗,他也立定志向,在母親的支持下,決定往資訊工程的科系發展,希望能累積經驗,從事軟體開發或遊戲設計的工作。
------
經常有人談:(大學)教育非職業教育。不過,或許有許多課程,可以兼得藝術與職業之妙。
Why GM Hired 8,000 Programmers
Car Maker brought much of its technology in-house to make custom software; selling trucks online
By JEFF BENNETT
Alvin Kowalik has purchased many General Motors Co. pickup trucks over the years. But last year, the cattle rancher in Selma, Texas, tried something new, and purchased a pickup through GM’s Shop-Click-Drive website.
計算機編程成為美國中小學熱門課
教育2014年12月09日
在加州米爾谷的編程活動上,12歲的伊姆蘭·哈利克在幫助他的弟弟,7歲的法爾漢(左)以及6歲的艾丹·布朗。
Jason Henry for The New York Times
加州米爾谷——上個月,7歲的小學二年級學生喬丹·萊爾(Jordan Lisle)和家人參加了一場人滿為患的課外活動,活動旨在為學生培養一個新愛好:計算機編程。
「我有點擔心他會落在別人後面,」他的母親溫迪·萊爾(Wendy Lisle)說,這是他們報名參加斯特羅伯里波因特小學(Strawberry Point Elementary School)這個輔導班的原因。
一場全國性計算機編程教育運動正在不斷擴大,此次活動就是其中的一部分。根據Code.org網站,自去年12月以來,從幼兒園到12年級,共有2萬名老師開設了編程課。Code.org是一家由科技行業支持的組織,提供免費的課程。除此之外,大約30個校區已經同意在秋季增設編程課,主要是高中,但也包括低年級。九個州的決策者已經開始給計算機科學課設定與數學和理科等基礎課程相同的學分,不再將其作為選修課來對待。
相關的課外活動也在開展,比如在米爾谷的這次活動。活動中,從幼兒園到五年級的90個學生和70名家長圍在計算機旁,通過動畫智力遊戲來學習計算機邏輯的基本知識。
上個月,在加州米爾谷的活動中,同為8歲的奧德麗·黑根(左)和阿梅莉亞·弗林特學習編程。
Jason Henry for The New York Times
這是計算機科學教育的一個顯著改變,幾十年來,計算機科學一直受到冷遇,地位與木工課等職業技能課程相差無幾。但如今,智能手機和應用程序無處不在,軟件工程方面的就業機會炙手可熱。對於許多家長來說——尤其是居住在科技走廊核心地帶的家長——編程不像是一種課外活動,更像是一種基本的生存技能,說不定哪天可能讓你得到一份不錯的工作,甚至一夕暴富。
編程教學的普及雖然剛剛開始,卻呈現出「前所未有之勢——教育領域從未有過如此迅速的行動」,密歇根大學(University of Michigan)教育和計算機科學教授埃利奧特·索洛韋(Elliot Soloway)說。他認為這是一個非常積極的現象,可能會激發學生們培養新的愛好,或許就像學習青蛙解剖可能會讓更多孩子立志成為外科醫生和生物學家那樣。
不過,一些人也對讓兒童過早接觸編程的做法發出警告。目前還不清楚,在小學講授計算機科學的基本知識是否會對未來的工作有幫助,也不清楚這能否培養學生總體上的創造力和邏輯思維。索洛韋說,尤其是對年幼的兒童來說,這種活動更像是視頻遊戲——比模擬槍戰高級一些,但不太可能學會真正的編程技能。
一些教育專家對這個行業的大舉投入表示擔憂:一些大型科技公司及其創始人,包括比爾·蓋茨(Bill Gates)和Facebook的馬克·扎克伯格(Mark Zuckberg),已經為Code.org投資了大約1000萬美元(約合6255萬人民幣)。Code.org提供資金培訓高中老師,讓他們能夠講授更高級的課程,此外,對於年齡更小的學生,該組織還開發了一套專門的編程課程,把基本的教學內容融入到了《憤怒的小鳥》和《植物大戰殭屍》等視頻遊戲中。
這些課程不講授傳統的計算機語言,而是使用簡單的文字指令——比如「前進」或「向右轉」——孩子們可以通過點擊和移動的操作,讓一隻小鳥抓住一隻豬。
這項活動並不缺少硅谷的那種「我們正在改變世界」的營銷狂熱。科技創業者約翰·皮爾斯(John Pearce)說,這對美國的經濟具有戰略意義。他和另外一名創業者傑夫·利恩(Jeff Leane)創辦了非盈利組織MV Gate,把Code.org開發的適用於小學生和家庭的編程課程帶給米爾谷。米爾谷是一個富裕的郊區,與舊金山之間隔着金門大橋。
皮爾斯說,家長們樂於看到孩子們在電腦上做他們認為有意義的事。「無數家長對我們說,『我不能讓我家孩子再玩電腦遊戲了』,」他說。但如果孩子們在研究編程,家長們告訴他,「『編一晚上我也沒意見。』」
這個想法吸引了二年級學生詹姆斯·米贊(James Meezan)。他和媽媽參加了12月份由MV Gate支持的「代碼時刻」(Hour of Code)活動。他的媽媽凱倫·米贊是當地家長教師聯誼會(PTA)主席、前科技行業高管,目前經營着一家房地產公司。她和幾名當地校長都非常支持編程課程。
她說,她的兒子在學校表現很好,但是沒有找到自己特別的興趣,也「不是操場上跑的最快的那個」。但他喜歡編程,每周至少花一小時參加MV Gate組織的課後項目CodeKids。該項目已經在米爾谷的五所小學開展。
八歲的詹姆斯解釋說,編程就是「讓計算機自己做事」。他說這很有趣,此外,如果他做的好,說不定能夠讓計算機突然死機的時候自動重啟。他的媽媽說,他發現了自己的興趣點;在編程上,「他是跑的最快的那一個」。
活動過程中,現場的孩子都全情投入,移動着基本的指令模塊,讓憤怒的小鳥抵達目標,然後使用稍微複雜一些的命令,比如「重複」,並學習「if-then」語句——一個基本的編程概念。
使用這些文字命令塊來簡化編程的邏輯,這很大程度上源於麻省理工學院媒體實驗室(Massachusetts Institute of Technology Media Lab)的研究成果。這個實驗室2007年引入了視覺編程語言Scratch。該機構聲稱,這種編程語言已經有數百萬用戶,但大多數都是學校以外的用戶。
後來,2013年出現了Code.org,它借鑒了Scratch的基本想法,旨在向學校和決策者傳播這個概念。Code.org創始人、前微軟高管哈迪·帕爾托維(Hadi Partovi)說,每個學校都應該教授編程。他說編程非常必要,就像「學習重力或分子,電學和光合作用」一樣。
Code.org稱,已有2萬名老師註冊該項目。曼哈頓華盛頓高地社區五年級的數學和自然科學老師阿蘭娜·亞倫(Alana Aaron)是其中之一。她去年在一個職業發展會議上聽說了這個項目,在獲得了校長同意之後,她放棄了原本打算教授的長達兩個月的關於陸地的地球科學課程,將其換成了Code.org的課程。
「計算機科學現在很重要——在美國和全世界都是如此,」她說。「如果我的學生們沒有接觸到這樣的東西,他們可能會錯過潛在的機遇和工作機會。」
-
*****
- 文/ | 2014-12-26發表
- 美國總統歐巴馬在2014年電腦科學教育周,親自下海寫程式,顯示程式教育在美國受重視的程度,已經達到高峰,但是反觀臺灣,卻是地方政府各自發展,以辦研習營和比賽等方式打游擊戰,臺灣程式教育整體缺乏大方向。長期推動臺北市程式教育的南港高中老師高慧君說:「學校電腦課教學生使用應用程式而不教程式設計的現象,就如同僅要學生閱讀文章,卻不教學生寫作文」。不只是美國,英國政府也同樣重視中小學的程式教育,還把2014年稱作程式碼年,是G20會員國當中,第一個實施全民程式教育的國家,英國教育部長Michael Gove認為,如果想讓英國出現像Google或是微軟等資訊企業,需要從小就重視程式教育,因此在英國學術單位以及Google和微軟等企業協助下,已在2014年9月正式要求從5歲到16歲的孩童都必須在學校學習程式設計。在臺灣,目前教育部尚未把程式設計納入中小學的課綱中,因此推行狀況需視地方政府重視的程度而定,腳步快慢不一,像是高雄、臺北、新北以及宜蘭等縣市,均會利用課堂或課後時間,推動自由軟體Scratch教育強化程式教育,今年也都有舉辦研習營或是相關比賽,鼓勵學生涉足程式設計領域。但也有進展比較慢城市,例如臺中市,其資訊教育僅止於遵照教育部課綱設計的電腦課,還未開始注重程式教育。學程式就要成為工程師?臺北市南港高中高慧君老師是臺北市推動程式教育的核心人物之一,她認為,中小學教程式設計的目的在於,教導學生以撰寫程式邏輯的方式解決問題(Computation No Thinking),而學會程式語言的能力只是附加價值,她表示,目前學校電腦課教導使用應用程式而不教導程式設計的現象,就如同僅要學生閱讀文章,卻不教學生寫作文。而她認為,程式教育在大學前面臨最大的問題是,學生及家長沒有足夠的動機支持學習程式設計,因為大學升學考試不會考,因此需要從更根本的面向改變,程式教育才有可能受到真正的重視。宜蘭縣玉田國小校長林光章長期致力於推動小學程式教育,他認為讓小學生學習程式能有助於發展系統性思考,並激發創造力,不過他並不贊成每個人都應該學習程式,林光章表示,每個人興趣不同,軟體工程師的職業也並非適合每個人,在小學階段接觸程式設計,意義是帶領學生認識一個有趣的領域,後續發展應由學生自己選擇。佛光大學資訊應用學系助理教授許惠美也長期推動中小學程式設計,不過是以自由軟體推廣者的角度出發,由於她參與自由軟體社群,有鑑於中小學生較難有機會接觸相關訊息,而她認為,開源的Scratch是一個很好的工具,不只能讓學生認識自由軟體的理念,也能同時提升學生能力,許惠美表示,每年基隆、宜蘭、花蓮和臺東會聯合舉辦瘋狂貓咪盃比賽,藉此推廣Scratch應用。Scratch是熱門的程式學習教材Scratch是麻省理工學院所開發出來的視覺化電腦程式開發平臺,專門為年齡較低的孩童所設計,只要用滑鼠拖拉,便能賦予元件動作以及判斷邏輯,可直覺地用來設計互動式故事、動畫、遊戲、音樂等藝術作品。高雄在程式教育行之有年且有未來規畫,在2015年將會建立線上自學程式教育雲,其功能就像是Hour of Code一樣,但介面語言會對學習者更友善,內容也會更加豐富,期望可以普及至全臺灣中小學。除了推行Scratch與Maker界正夯的單晶片微控制器Arduino應用外,也有約10所中小學有使用Scratch的進階版Blender進行3D列印的課程,有些學校一學期中有三分之一到一半的電腦課會用來教學生開發行動裝置App。Hour of Code由Hadi與Ali Partovi創辦的非營利組織Code.org所發起,用以消弭程式教育資源不均的障礙,讓孩童不需要老師教學,在家上網就能學程式設計,此理念受到歐巴馬以及不少企業的支援。臺北市很早就開始注重中小學程式教育,除了幫學生舉辦各項Scratch的研習營以及比賽外,為解決推行程式教育較缺乏的師資,也會向老師舉辦研討會以培育師資。而且顧及程式多元發展,也會舉辦Scratch結合機器人等多元的應用研習營,另外,Arduino或是英國肯特大學為教學目的,所開發的互動式Java開發平臺Greenfoot,也都囊括在臺北市的大學前程式教育計畫中。而宜蘭縣教育局也大力支援中小學的程式教育,在最欠缺的師資上,給予最大的幫助,只要學校提出申請,宜蘭縣教育局便會免費提供師資給學校,以利舉辦課程。而2015年也會有行動車,上面會裝備3D列印機等教學資源,並機動的開往各校,讓學生都有學習機會。微軟要讓臺灣百萬人學會程式!?日前臺灣微軟為響應美國電腦科學教育周的活動,與美國創新中心共同啟動百萬程式通的計畫,計劃提供免費軟體以及課程師資,協助發展程式教育,並宣稱將在短短1年之內,在臺灣教會超過1百萬人電腦程式寫作,新北市率先響應,發起1,440個班級34,200人在電腦科學教育周,至少花一小時的時間學習程式,而臺灣微軟公關經理莊捷雅表示,臺灣微軟對於教會百萬人學會程式,目前還無實際具體的計畫出爐。
- 台灣的RailsGirls分部,鼓勵女生學程式設計,英國學童開始學編碼: Learn-to-Code...
高雄程式教育雲2015年上線,中學老師批中央不力推:不教程式設計,就像只要學生閱讀而不教寫作文
高雄市明年將推出程式教育雲來推動學生自學程式開發,不過,臺灣程式教育仍只是游擊戰式的推廣而缺乏完整政策,多靠熱心老師或部分縣市在課餘時間力推,長期推動臺北市程式教育的南港高中老師高慧君批說:「電腦課只教學生使用軟體而不教程式設計,就如同僅要學生會閱讀文章,卻不教學生寫作文」
One of the roles our education system is supposed to play is to prepare kids to be responsible citizens, with the skills needed to be successful in adulthood. All of the various classes — starting in kindergarten, where they lay out the fundamentals of reading,writing, sharing and even early math — are designed to be a set of building blocks of knowledge. Each consecutive year introduces new blocks in kids’ education, designed to get them ready for life so that they’re capable of earning a living.
For some reason, all of the classes I took from about third grade forward are still burned into my mind. Even today, I can go back in time and remember how my fifth-grade teacher got me interested in math or how my seventh-grade teacher’s method of teaching Spanish crippled my ability to learn that language due to his “repetitive” teaching methods.
However, one class in seventh grade has become very important to me, as I use the skills I learned in that class every day of my life: That class was my typing class. I can still envision that class as if it were yesterday, with my seat in the middle of the first row, learning to touch-type on an IBM Selectric typewriter. I even remember the line I had to type over and over again as part of a test to determine how fast I typed: “Now is the time for all good men to come to the aid of their country.” I can still touch-type that sentence today in about five seconds. Back then, the goal was to touch type at about 90 words per minute.
While the typewriter is now a thing of the past, typing and keyboards remain highly relevant today. In most cases, they’re the main way most of us enter data into our computers. And understanding the QWERTY layout is important when using a touch keyboard or even when programming our set-top boxes or other devices that use a keyboard for input.
Now, one could argue that kids these days seem to intuitively know how to use technology. Even at an early age, they start touching screens and keyboards, quickly learning how to navigate around all types of digital devices. The need for kids to learn how to code isn’t important, right? While that’s true to some extent, fundamentally understanding how these technologies work and how they can ultimately be customized for even greater functionality would enhance kids’ experiences with digital devices and could become much more important to them later in life.
Anyone that has taken an introductory programming class will tell you that at the very least, it helped them understand basic programming logic, structure and design. Even those who did not go on to become software engineers say that the fundamentals of programming a computer at the coding level has helped them shape how they think logically, has sharpened their common sense and, in a lot of cases, has helped them apply what they have learned to getting more out of their smartphones, tablets, computers and other devices that now populate their lives.
We live in a digital age in which technology plays a role in much of what we do every day. We use technology at the office, at school and at home. Digital devices are all around us. However, in many cases, we barely scratch the surface of what technology can do for us. We pretty much accept the fundamental role technology plays in our lives and mostly use the basic functionality of each of our digital devices.
Yet, when hardware and software designers create devices, they usually add a great deal of features and functions that most people barely use. That’s O.K. in a broad sense, since we “hire” our devices to handle things like phone calls, messaging, music and entertainment. But as technology has evolved, especially mobile technology, we are now holding in our hands real personal computers that can do much more than these fundamental functions. Even our TVs and appliances are becoming multipurpose devices designed to be more than meets the eye.
While most people will never get under the hood to try and change the code of an appliance or device they use, by learning the fundamentals of creating the software code that runs our devices, a person will gain a greater understanding of how their devices work, and would be more inclined to go beyond their devices’ basic functionality.
A coding class would also help them gain a greater understanding of how technology is designed and how software serves as the medium for triggering all of a device’s capabilities. This type of knowledge could be important in a future working environment where they’re called upon to use technology as part of their overall job.
It goes without saying, but understanding how technology works makes it much easier for a person to get the most out of it.
In an important article on GreaterSchools.org, author Hank Pellissier includes a comment from a recognized authority on programming. Douglas Rushkoff, author of Program or Be Programmed and evangelist for Codeacademy, is one of the nation’s leading digital crusaders. He argues that our schools need to incorporate computer programming into the core curriculum or get left behind. “It’s time Americans begin treating computer code the way we do the alphabet or arithmetic,” he writes.
Mr. Rushkoff sees the need to teach coding in order to create more hardware and software engineers to meet the rising demands for skilled tech workers. I agree wholeheartedly with this, since the U.S. is far behind in having a robust technical workforce created within our own borders. We rely heavily on coders in China, India and other parts of the world to meet the high demand for programming skills. I also agree that coding is just as important as other basic learning skills, since technology is now an important part of all of our lives. Understanding coding would give our kids a foundation in understanding how technology works, serving them well even if they do not become professional programmers.
One of my passions has been to help bring technology into the education system: I have worked on the sidelines with the State of Hawaii to champion the role of personal computers in education for decades. It has been rewarding to see how computers have impacted the educational process throughout the U.S., with every school system in America now having some type of computer aided learning programs in use today.
But it’s time for schools to realize that technology is now a part of our lifestyle. Helping our kids understand how technology works at the ground level and how it can be used to its fullest potential needs to be a building block that’s added to the educational curriculum. At best, it could get kids interested in tech as a career. At the least, it could equip them to handle more and more technology-related devices that are now part of our lives.