跳转至

程序设计与算法基础

课程学习内容

  这门课是仅面向图灵班的编程基础课,相当于非图灵班同学的 C 程序设计基础+程序设计专题。虽然涵盖了两门课程的内容,但是去掉了两门课程的不合理的地方。上课内容是一般的 C 语言基础+排序+链表,难度相对于普通教学班会有所提高。这门课平时分 70 分,只要作业认真做,并且没有被查重是很容易拿到满分的,考试 30 分全看自己的水准,总之 2020 级总评(平时+期末)平均分 93 分

任课教师

翁恺(FatMouse)

  只有他,别想了。翁恺是著名的 C 语言基础课教师,他的 MOOC 播放量相当高,并且之前拿过永平教学奖(奖金 100 万)。这两年翁恺老师水平有下滑的趋势,但整体还是相当不错的。按老师自己所说,他的教学模式是 Nice to have 而不是像高中那样 Need to have,即他不会讲解所有内容,而是只讲他认为很重要或是他不讲我们可能无法正确理解的内容,剩下的需要我们自己在课前课后学习。同时他也提出我们核心课程所花课内课外时间应该达到 1 比 3。个人认为作为大家计算机的引路人,翁恺老师的建议具有相当的参考意义

课程教材

C 程序设计语言 (K&R)

  按翁恺的话讲,这本书是最著名和经典的 C 语言教材,但现在已经过时了。建议把它作为英文阅读材料而不是编程教材书。因此笔者建议不订这本教材(雾)

课程学习建议与相关推荐书目

避坑提示

不要靠近大部分中国人写的教材。不要使用任何 谭浩强的 C 语言教材,严重地误人子弟

第 0 级【编程零基础小白】

  编程小白强烈建议课前把中国大学 MOOC 翁恺老师的 “程序设计入门——C 语言” 和 “C 程序设计进阶” 看一下,这两门课的视频也是老师课前预习给的资料。课后的作业自己独立完成,代码会查重,抄袭记零分,千万不要从 CSDN 这种网站直接复制粘贴代码,建议看懂他人代码后一定要自己理解重新敲,否则毁人一生。总之就是上课一定要理解(翁恺会讲一些小白可能完全无法理解的东西,但是你可以记住课后自己多了解),代码一定要多打

  同时似乎从 21 级开始取消了 bonus(可以用来补平时分),因此平时作业和实验需要小心,课上也会有突击小测。但整体内容不难,如果有好好预习的话问题不大。期中考试和期末考试有相当一部分是作业和实验的原题,难度不算大,但基本上是英文题面,平时要注意专业名词的积累,不然考试的时候就两眼一抹黑了

资料推荐

  • 推荐学习网站:菜鸟教程(百度搜索即可)
  • 推荐教材:C Primer Plus, Stephen Prata. 这本书比较厚,有精力的同学可以通读,读不完也可以作为参考书,补充上课所学

第 1 级【前信息竞赛选手】

  信息竞赛生,省一等奖选手可以免听本门课程,非省一选手可以在课上摸鱼(其实非省一选手发邮件给老师也是可以被接受的),当然翁恺还是会讲一些有意思的东西值得一听。课程的后期涉及到指针,并行计算,多文件编程等知识,信息竞赛用的比较少,听一听还是受益匪浅的。而且翁恺老师会潜移默化地给大家灌输优化程序的思维和工程的思维,对“深受竞赛毒害”的同学来说还是很有帮助的

  以及信息竞赛目前使用的都是 C++ 语言,但本课程是 C,习惯了 C++ 的 OIer 一定要分清其二者的区别

书籍推荐

  • The C Programming Language Ritchie & Kernighan(也就是教材,经典原著)
  • C 和指针(Pointers on C, Kenneth A. Reek)
  • C 陷阱与缺陷(C Traps and Pitfalls, Andrew Koenig)
  • C 专家编程(Expert C Programming, Peter van der Linden)

  这四本书讲的内容相对古老,是 ANSI C 标准规范的内容。K&R 是 C 语言之父,他们的书较好地体现了 C 语言的设计哲学;后面三本是当年的经典教材,除去例程以外,很多内容对现代的 C 也有帮助。关于 C 标准文档,基本上到处都能找到。比较推荐的是 C99 规范,兼容性较好;最新的是 C11,也可供参考

第 2 级【超前学习建议(仅适用于学的不错的竞赛生)】

  各位对自己实力有信息的竞赛生可以选择提前修读数据结构基础(培养方案中是应于大二秋冬修读),其中内容大概包括时空复杂性、堆栈、队列、树、图、链表、排序。当然如果对自己实力不够自信也可以按照最正常的方案大二再学,超前学习只是可以方便各位大二空出时间选择其他有意思的课程。如果学到一半想放弃也可以期中弃修课程

课外拓展

  身为图灵班的学生,如果你仔细研究了培养方案你会发现在整个大一几乎没有多少要与计算机打交道的课程(仅有程算、汇编语言、计算机系统,后两门仅为信安必修)而且据笔者了解,许多同学到大二大三对计算机的了解仍然仅限于课上所学,受制于各种原因,无论是理论知识还是实践能力远没有达到计算机学生应有的水平。笔者建议有空仔细阅读我们学长组所写的 如何让自己看上去、闻上去都像一个 CS 人 以及参考 CS 自学指南 尽早地走上正途

回到页面顶部