基本介紹
- 中文名:C語言程式設計精髓
- 提供院校:哈爾濱工業大學
- 類別:慕課、國家精品線上開放課程
- 授課老師:蘇小紅、趙玲玲、葉麟、張彥航、袁永峰、王甜甜、張羽、黃劍華、索瑩、陳建文、孫大烈等
- 開課時間:2014年11月3日(首次)
- 授課平台:中國大學MOOC
課程性質,課程背景,課程定位,適應對象,開課信息,課程簡介,課程大綱,課前預備,所獲榮譽,教師簡介,
課程性質
課程背景
在20世紀80年代至21世紀初期的30年裡,90%的府鍵欠時間裡,C語言在計算機高級語言中占據較大地位,僅偶爾被Java超越。C語言作為一種計算機高級語言,其實並不高級,但正是這種“低級”現象給人們留下更多思考的機會。C語言程式設計精髓的開設讓學習者體驗“低級”和“高級”之間的關係。
課程定位
C語言程式設計是一門計算機語言入門的基礎核心課程。通過C語言程式設計精髓的學習,可以掌握一種語言的語法的同時,還能理解隱含在語法背後的思想,並初步具備靈活使用這些思想進行編寫程式解決實際問題的能力,為以後學習其他計算機高級語言奠定基礎。
適應對象
C語言程式設計精髓既面向零基礎的學生,也面向有一定編程基礎或學過程式設計基礎的學生。
開課信息
開課次數 | 開課時間 | 授課教師 | 學時安排 | 參與人數 |
---|---|---|---|---|
第1次開課 | 2014年11月03日~2015年02月28日 | 蘇小紅、趙玲玲、葉麟、張彥航 | 1小時每才放艱周 | 20185 |
第2次開課 | 2015年03月01日~2015年07月18日 | 蘇小紅、趙玲玲、葉麟、張彥航、張春英、張有華、王甜甜、張羽、孫承傑、丹麗莉、鄭貴濱、侯俊英、李希然、劉秉權、張曉昆、姚立新、康鴻、郭萍、陳惠鵬、劉強、溫東新、傅忠傳 | 1.5小時每周 | 25335 |
第3次開課 | 2015年09月01日~2016年01月18日 | 蘇小紅、趙玲玲、葉麟、張彥航、張羽、郭萍 | 1~2小時每周 | 30203 |
第4次開課 | 2016年02月22日~2016年07月04日 | 蘇小紅、趙玲玲、葉麟、張彥航、王甜甜、張羽、孫大烈、郭萍、侯俊英、李希然、丹麗莉、劉秉權、傅忠傳、陳朽譽建文、黃劍華 | 25544 | |
第5次開課 | 2016年08月29日~2017年01月14日 | 蘇小紅、趙酷屑組台玲玲、葉麟、張彥航 | 3小時每周 | 36998 |
第6次開課 | 2017年02月13日~2017年07月09日 | 2小時每周 | 33294 | |
第7次開課 | 2017年08月28日~2018年01月03日 | 蘇小紅、趙玲玲、葉麟、張彥航、張學輝 | 28114 | |
第8次開課 | 2018年02月05日~2018年06月30日 | 蘇小紅、趙玲玲、葉麟、張彥航 | 3小時每周 | 51279 |
第9次開課 | 2018年08月20日~2019年01月19日 | 58790 | ||
第10次開課 | 2019年02月11日~2019年06月30日 | 蘇小紅、趙玲玲、葉麟、張彥航、呂浩音、廖雪花 | 40042 | |
第11次開課 | 2019年08月19日~2020年01月12日 | 蘇小紅、趙玲玲、葉麟、張彥航、楊梅、緱西梅、陳丹、任長虹、孟芸、楊全月 | 62923 | |
第12次開課 | 2020年02月05日~2020年08月02日 | 蘇小紅、趙玲玲、葉麟、張彥航、袁永峰、張羽、朱聰慧、江俊君、丹麗莉、張朝霞、何鈺娟、何秀玲、陳麗芳、楊穎、傅忠傳、高文、南淑萍、孫玉星、鐘琦、王亞傑、呂悼重淋腿浩音 | 123090 | |
第13次開課 | 2020年08月10日~2020年12月28日 | 蘇小紅、趙玲玲、葉麟、張彥航、袁永峰、王甜甜、張羽、黃劍華、索瑩、陳建文、孫大烈 | 2小時每周 | 待定 |
表格內容參考資料 |
課程簡介
C語言程式設計精髓共15個教學單元。其中,第1單元介紹C語言的概念知識和變數和常量的基本內容;第2單元介紹數字(字元)間的計算和運算方式;第3至第8單元介紹鍵盤中的輸入和輸出、語句語法內容、選擇循環等邏輯進階、常見函式知識、遞歸和數組的內容;第9至第12單元介紹指針、字元串、指針的運算、結構體等內容;第13至第15單元介紹動態數組、數據存儲、檔案存取等內容。
課程大綱
第1周——初識C語言從認識變數和常量開始 | 練兵區——編程題——不計入總分 | 第10周編程題線上測試 |
1.1為什麼要學C語言辨舉芝(10分鐘) | 第6周——函式:分工與合作的藝術 | 練兵區——編程題——不計入總分 |
1.2C語言集成開發環境簡介(16分鐘) | 6.1函式定義、調用、參數傳遞和函式原型(35分半) | 第11周——指針的孿生兄弟 |
1.3如何定義一蜜霉台個變數(10分鐘) | 6.2函式封裝與程式的健壯性(23分鐘) | 本周內容導讀 |
1.4變數的表數範圍和存儲形式(29分鐘) | 6.3進階:斷言與防禦式編程(14分鐘) | 11.1指針的運算(8分) |
1.5宏常量與const常量(13分鐘) | 6.4進階:代碼風格(22分鐘) | 11.2指針和一維數組間的關係(14分) |
本周課件、知識點小結和常見錯誤小結 | 本周課件、知識點小結和常見錯誤小結 | 11.3指針和二維數組間的關係(18分) |
先修知識(有基礎者越過)——二進制和記憶體(11分半) | 選學——結構化與模組化程式設計方法(41分) | 11.4進階:指針數組及其套用(22分) |
第1周測驗 | 第6周測驗 | 本周課件、知識點小結和常見錯誤小結 |
練兵區——單選題——不計入總分 | 練兵區——單選題——不計入總分 | 第11周測驗 |
練兵區——編程題——不計入總分 | 第6周編程題線上測試 | 練兵區——單選題——不計入總分 |
第2周——數字間的那些事兒,做點計算哈 | 練兵區——編程題——不計入總分 | 第11周編程題線上測試 |
2.1算術運算(20分鐘) | 第7周——《盜夢空間》的邏輯:探尋遞歸的奧秘 | 練兵區——編程題——不計入總分 |
2.2賦值運算(15分鐘) | 7.1從嵌套調用到遞歸調用(20分鐘) | 第12周——海陸空齊上陣:又來了一堆數據 |
2.3增1和減1運算(17分鐘) | 7.2遞歸是如何執行的(16分鐘) | 本周內容導讀 |
2.4自動類型轉換(5分鐘) | 7.3進階:尾遞歸是什麼鬼?(14分半) | 12.1結構體類型(13分) |
2.5強制類型轉換(7分半) | 7.4變數的作用域(22分半) | 12.2結構體與數組的嵌套(7分) |
本周課件、知識點小結和常見錯誤小結 | 7.5進階:變數的生存期(33分半) | 12.3結構體的相關計算和操作(19分) |
第2周測驗 | 本周課件、知識點小結和常見錯誤小結 | 12.4向函式傳遞一堆不同類型的數據(28分半) |
練兵區——單選題——不計入總分 | 選學——分治和疊代(33分半) | 12.5枚舉類型和共用體類型有什麼用(25分) |
練兵區——編程題——不計入總分 | 7.6進階:多檔案結構(7分半) | 12.6進階:典型套用實例——洗髮牌模擬(20分) |
第3周——從鍵盤中來,到鍵盤中去,開始輸入和輸出啦 | 第7周測驗 | 本周課件、知識點小結和常見錯誤小結 |
3.1數據的格式化螢幕輸出(15分鐘) | 練兵區——單選題——不計入總分 | 第12周測驗 |
3.2數據的格式化鍵盤輸入(18分鐘) | 第7周編程題線上測試 | 練兵區——單選題——不計入總分 |
3.3單個字元的輸入輸出(15分半) | 練兵區——編程題——不計入總分 | 第12周編程題線上測試 |
3.4進階:用getchar()輸入數據存在的問題(含錯誤案例分析)(10分) | 第8周——一堆數據來了,你準備好了嗎 | 練兵區——編程題——不計入總分 |
3.5進階:用%c輸入數據存在的問題(含錯誤案例分析)(10分) | 本周內容導讀 | 第13周——原來記憶體也可以這么玩,我是指針我怕誰 |
本周課件、知識點小結和常見錯誤小結 | 8.1數組的定義和初始化(43分) | 本周內容導讀 |
第3周測驗 | 8.2向函式傳遞一堆相同類型的數據(15分半) | 13.1何為動態記憶體分配(26分) |
練兵區——單選題——不計入總分 | 8.3查找算法——眾里尋他千百度(37分半) | 13.2動態數組 |
第3周編程題線上測試 | 8.4排序算法——讓世界變得更有序(17分半) | 13.3進階:常見的記憶體錯誤及其解決對策(52分半) |
練兵區——編程題——不計入總分 | 本周課件、知識點小結和常見錯誤小結 | 本周課件、知識點小結和常見錯誤小結 |
第4周——無處不在的抉擇 | 第8周測驗 | 第13周測驗 |
4.1關係運算符和邏輯運算符(23分鐘) | 練兵區——單選題——不計入總分 | 練兵區——單選題——不計入總分 |
4.2條件語句(14分鐘) | 第8周編程題線上測試 | 練兵區——編程題——不計入總分 |
4.3開關語句——條條道路通羅馬(28分鐘) | 練兵區——編程題——不計入總分 | 第14周——結構設計的藝術 |
4.4進階:數值溢出和精度損失問題(34分半) | 第9周——指針:C語言世界中所向披靡的“金箍棒” | 本周內容導讀 |
4.5進階:軟體測試與錯誤實例分析(20分半) | 本周內容導讀 | 14.1數據的鏈式存儲——單向鍊表 |
本周課件、知識點小結和常見錯誤小結 | 9.1指針變數的定義、初始化及其解引用(19分) | 14.2進階內容:其他數據結構簡介(21分) |
選學——用raptor繪製選擇結構的流程圖(27分鐘) | 9.2指針變數作函式參數(36分半) | 本周課件 |
第4周測驗 | 9.3進階:函式指針及其套用(27分) | 學習體會 |
練兵區——單選題——不計入總分 | 9.4進階:數組的趣味套用(50分) | 第14周測驗 |
第4周編程題線上測試 | 本周課件、知識點小結和常見錯誤小結 | 練兵區——單選題——不計入總分 |
練兵區——編程題——不計入總分 | 第9周測驗 | 練兵區——編程題——不計入總分 |
第5周——周而復始的循環之道 | 練兵區——單選題——不計入總分 | 第15周——學會保存你的數據 |
5.1計數控制的循環(31分鐘) | 第9周編程題線上測試 | 本周內容導讀 |
5.2遞推(33分鐘) | 練兵區——編程題——不計入總分 | 15.1二進制檔案與文本檔案(14分) |
5.3條件控制的循環(32分鐘) | 第10周——字元串:C語言世界中的大力水手 | 15.2檔案的打開和關閉(8分) |
5.4嵌套循環(17分鐘) | 本周內容導讀 | 15.3格式化數據的檔案讀寫(5分) |
5.5窮舉(39分鐘) | 10.1字元串的存儲與表示(28分) | 15.4字元和字元串的檔案讀寫(39分) |
5.6進階:軟體調試與錯誤實例分析(27分鐘) | 10.2字元串處理操作(15分) | 15.5記憶體數據塊的檔案讀寫(7分) |
本周課件、知識點小結和常見錯誤小結 | 10.3向函式傳遞和從函式返回字元串(26分) | 15.6隨機讀寫與檔案緩衝(6分半) |
選學——用raptor繪製循環結構的流程圖(25分鐘) | 10.4進階:緩衝區溢出與緩衝區溢出攻擊(39分半) | 本周課件、知識點小結和常見錯誤小結 |
第5周測驗 | 本周課件、知識點小結和常見錯誤小結 | 第15周測驗 |
練兵區——單選題——不計入總分 | 第10周測驗 | 練兵區——單選題——不計入總分 |
第5周編程題線上測試 | 練兵區——單選題——不計入總分 | 練兵區——編程題——不計入總分 |
(註:課程大綱排版從左到右列) |
課前預備
- 學習資料
書名 | 作者 | ISBN | 出版時間 | 出版社 |
---|---|---|---|---|
《C語言程式設計(第4版)》 | 蘇小紅等 | 978-7-04-051998-3 | 2019年8月 | |
《C語言程式設計學習指導(第4版)》 | 蘇小紅等 | 978-7-04-052489-5 | 2019年10月 | |
《C語言大學實用教程(第4版)》 | 蘇小紅等 | 978-7-121-30005-9 | 2017年1月 | |
《C語言大學實用教程學習指導(第4版)》 | 蘇小紅等 | 978-7-121-30923-6 | 2017年3月 | |
表格內容參考資料 |
所獲榮譽
2018年,該課程被中華人民共和國教育部認定為“國家精品線上開放課程”。
2019年,該課程被推薦至“學習強國”平台(該平台由中國共產黨中央委員會宣傳部主管)。
教師簡介
C語言程式設計精髓的授課教師團隊均來自哈爾濱工業大學。其中,教學職稱為教授的有蘇小紅、黃劍華;教學職稱為副教授的有張彥航、袁永峰、王甜甜、索瑩、孫大烈;教學職稱為講師的有趙玲玲、葉麟、張羽、陳建文。
課前預備
- 學習資料
書名 | 作者 | ISBN | 出版時間 | 出版社 |
---|---|---|---|---|
《C語言程式設計(第4版)》 | 蘇小紅等 | 978-7-04-051998-3 | 2019年8月 | |
《C語言程式設計學習指導(第4版)》 | 蘇小紅等 | 978-7-04-052489-5 | 2019年10月 | |
《C語言大學實用教程(第4版)》 | 蘇小紅等 | 978-7-121-30005-9 | 2017年1月 | |
《C語言大學實用教程學習指導(第4版)》 | 蘇小紅等 | 978-7-121-30923-6 | 2017年3月 | |
表格內容參考資料 |
所獲榮譽
2018年,該課程被中華人民共和國教育部認定為“國家精品線上開放課程”。
2019年,該課程被推薦至“學習強國”平台(該平台由中國共產黨中央委員會宣傳部主管)。
教師簡介
C語言程式設計精髓的授課教師團隊均來自哈爾濱工業大學。其中,教學職稱為教授的有蘇小紅、黃劍華;教學職稱為副教授的有張彥航、袁永峰、王甜甜、索瑩、孫大烈;教學職稱為講師的有趙玲玲、葉麟、張羽、陳建文。