摘 要 全國青少年信息學奧林匹克競賽是我國中小學計算機方面最具代表性的活動,旨在廣大青少年中普及計算機教育,推廣計算機應用。本文論述了信息學奧林匹克競賽課程如何在中學有效地開展。
關鍵詞 中學 信息學奧林匹克競賽 課程建設
中圖分類號:G633.96文獻標識碼:A
1 信息學奧林匹克競賽的意義
雖然近幾年教育部對信息學奧賽高考加分政策做了調整,但仍有許多青少年懷著濃厚的興趣參與這項賽事,可見它的意義遠不止“應試”而已。從本質上看,計算機學科是思維學科,正確的思維訓練可以播種持續創新的優良種子。青少年時期正處于思維活躍、充滿各種幻想的黃金年代,長期的實踐經驗告訴我們,青少年信息學奧林匹克競賽可以讓廣大的青少年淋漓盡致地展現其思維的火花,享受創新帶來的美感。①
2 中學信息學奧林匹克競賽課程的開展條件和生源選拔
2.1 開展條件
信息學奧林匹克競賽課程是一門難度較大的校本課程,其開展有賴于學校、教師和學生三方面的支持。②課程的開展不僅需要校方給予硬件設施上的支持,更需要的是深刻理解信息學競賽對于中學生的意義,在思想上的給予高度重視,支持有能力的教師開展教學活動,鼓勵符合條件的學生積極參與到其中。
除了嚴謹的治學態度,系統完整的專業知識結構,寬廣的知識面意外,本課程的任課教師必須具備純熟的教學技能,能夠運用便于學生理解的適當方法解釋重、難點內容。
想參加本門課程學習的學生必須對程序設計有濃厚的興趣,并具備一定的信息技術知識、扎實的數學功底、有勤懇的學習態度、較強的自學能力、高效的學習效率、敏捷的思維和邏輯判斷能力、權衡文化課和競賽的能力和積極自覺的交流意識。
2.2 生源選拔
為選拔合適生源、最大限度地利用教學資源,筆者將生源選拔分為:(1)初試的篩選:通過筆試確定學生的基礎水平,淘汰能力不足的學生。(2)中期的遴選:在教師進行了一段時間的教學活動對學生有了解之后,根據雙向選擇原則,對于學生進一步篩選。(3)后期的重點培養:對于一些前期教學內容掌握效果好、要參賽的同學進行重點的培養。
3 中學信息學奧林匹克競賽課程的實施
3.1 課程內容
本課程內容共分為六大模塊,各模塊相互銜接,行程有機統一的整體。第一大模塊:競賽的知識。講述競賽形式和成績評定辦法,試題形式和試題的知識范圍。第二大模塊:信息技術基礎知識。包含計算機的發展、計算機的組成、操作系統、計算機內的數據表示、文字的錄入與排版、網絡技術與應用以及信息技術道德規范等內容。第三大模塊:程序設計語言。Pascal語言作為過程模型程序設計的代表,有其獨特的魅力,作為程序設計的起點,其強調的結構化設計方法和思想蘊涵著豐富的哲理,是培養程序設計思維的良好入門。本模塊講解PASCAL編程語言的編程環境、語法基礎、程序設計語言結構、自定義數據類型、數組、過程與函數、文件和指針等內容。 第四大模塊:數據結構。講解包含線性表、隊列、棧、樹和圖等在內的常用數據類型,并舉例講解數據結構在程序設計中的應用。第五大模塊:算法設計與分析。包含窮舉法、遞歸算法、貪心算法、回溯算法、分治算法、動態規劃等經典的算法,另外還包括排序和查找算法的實現和選擇,以及算法的時間和空間復雜度分析。第六大模塊:競賽模擬。遴選近幾年的試題,從競賽實戰需求出發對每一道題進行了詳細解析。
3.2 教學方法
信息學奧賽課程注重基礎和應用,因此教師應根據教學內容的不同特點以及學生的認知特征靈活使用教學方法和手段,思考如何幫助學生全面、深入、熟練的掌握所學內容,真正領悟重難點,建立二者之間的聯系,提高分析問題和動手解決問題的實踐能力。
(1)信息技術基礎知識部分。這部分內容的特點是知識點比較基礎,且紛繁復雜、瑣碎細致。由于時間的限制,講解不可能面面俱到,只能挑選進制、計算機系統等重點內容使用講授法進行講解,并對歷屆考題進行分類講解,其他的知識則穿插在后續課程中,作為每節課的小知識點貫穿整個課程。在課程實施過程中配合練習法對先前講解的內容進行定期回顧和復習,循序漸進地提高學生的信息素養。
(2)程序設計語言基礎部分。程序語言的講解比較基礎,特點是理論性和實踐性較強。語言基礎理論主要選用講授法進行細致講解,為后續學習奠定扎實的基礎。結合小組討論法和練習法進行,引導學生閱讀程序、分析程序、練習編寫程序,幫學生形成程序設計的思路,并養成良好的變成習慣。并使用實驗法,給學生布置實驗設計的題目,根據題目難度,確定小組合作或是單獨完成設計。另外還要選擇經典常用的小程序段,作為小錦囊,讓學生反復使用練習,熟練掌握,做到能夠靈活應用。
電子教案和課件在程序設計教學中的優勢不言而喻,充分利用現代教學手段,把抽象的思維過程和概念形象化為動畫進行仿真演示,生動而直觀地表現教學內容,將抽象概念具體化、看不見的可視化、思維過程形象化、思路清晰明了化,這種教學手段符合學生的認知規律,可以大大地減輕教學難度,有效提高教學效率和質量。
(3)算法設計與分析部分。算法是本課程的重難點,教學實施過程中應引入有趣且合適教學的算法實例,使用任務來驅動課堂,教師逐步拋出問題,啟發學生去分析問題,經歷人腦解決、計算機代替人腦解決、將算法轉化為程序、調試程序等環節,培養在算法支持下使用程序設計語言編寫程序解決實際問題的能力,最后隨著算法思維的積累,學會優化程序,尋求時間和時間復雜度都最小的最優算法,體會算法的精妙之處。
另外,在日常教學過程中,教師不但要幫助學生掌握好信息學知識,更應該關注學生優秀心理素質的培養和教育,應該讓學生認識到:競賽特別是高層次的奧賽具有強烈的刺激性、競爭性,參賽并非追求名利,而是一種信心和能力的體現,是一次智力與技能的檢驗,是一次擴充知識和再學習的極好機會,參與,才是奧林匹克精神的所在。
3.3 教學實驗設計
本課程精心設計程序設計基礎實驗和程序設計應用實驗兩個模塊,以加深學生對理論知識的理解,培養學生應用知識和解決問題的能力。
程序設計基礎實驗模塊設計目的是為了強化學生對程序設計語言的使用能力,其中包含的內容有順序、選擇、循環三種程序設計結構,數組、枚舉、集合、記錄等自定義數據類型,過程與函數,指針、文件等重點知識,實驗內容包含計算閏年、Fibonnaqi數列、求階乘、最大公約數和最小公倍數、求素數、求水仙花數、打印制定圖案、打印九九乘法表、數組的輸入和輸出、子過程的嵌套與多重循環、鏈表的基本操作和指針的使用等等。
程序設計應用實驗模塊設計的目的是為了強化學生對算法的理解,包括窮舉法解決排列組合的問題,遞歸解決階乘問題和漢諾塔問題,回溯、貪心算法解決超市找零錢的問題,快速、冒泡、選擇的排序方法,深度搜索和廣度優先搜索,動態規劃等等。
具體實施時根據實驗實施的難易程度考慮是否建立實驗小組,實驗前教師應布置充實、明確的任務要求,實驗中給予學生適當的輔導,學生完成實驗并詳細記錄思路和實驗過程,最終師生共同進行過程性和總結性的評價。
3.4 考核
本課程考核采取模擬競賽方式,考試流程嚴格按照全國青少年信息學聯賽和NOI競賽的規則進行。作此安排除了為檢驗教學效果、讓學生對自己的學習程度和現有水平有客觀的了解之外,還為了讓學生對競賽流程和題目難度有一定的準備,幫助學生明確并及時補充和夯實知識結構的薄弱環節。
注釋
① 史習藝.信息學競賽是培養高質量學生人才的重要途徑[J].教育信息化,2004(5):10-11.
② 劉黎莉,羅成石.在信息學競賽中培養創造性思維[J].中小學電教,2005(1):36-37.