说起来,算法与数据结构的课程,是非常值得设计的。这段时间的教学经验让我再次意识到,绝大多数试图学习计算机或者数据分析的学生,都无法彻底绕过这门课程。因此,针对这门课程的教学设计就显得非常有必要了。
首先分析教学内容,这门课中几乎大部分人都绕不过去的内容基本如下:
- 算法基础
- 排序算法
- 数据结构
- 高级设计和分析技术
- 高级数据结构
- 图算法
在这些内容之外,更多的就是专有领域才需要用到的算法、数据结构了;而这些内容,则基本上在大多数领域中都有所需要。因此,只要把这些内容都学会、玩熟,也就有了面对任何具体领域的算法基础、数据结构基础、思路基础、实现能力基础。
确定了内容,其教学课程设计就呼之欲出了:
- 教授基本的算法思路,作为后面学习的基本思维工具
- 掌握一门合适的语言,会基本语法够用即可
- 依次学习每个部分,具体内容根据学生情况有所取舍,以达到合适的学习进度
- 学习过程中保持充分的练习,以及鼓励学生参与相关比赛练手,从而对学习情况有个客观评价
这样一来,以《算法导论》为教材,简单数数知识点,基本需要12次课及引导下的课后自学。按照教学经验平均来看,每节课2小时,每次课后自学3~6天,每天4~8小时。也就是说,对于时间充裕的学生来说,最多两个月就可以搞定。
但接触下来,许多学生在大学课程或者自学中,远远达不到这种学习速度。分析下来,基本有如下问题:
- 开始没有学会基本的学习思路、思维工具,从而在后续学习中无法做到透彻理解
- 陷入语言实现细节、数学证明细节、算法细枝末节,这些时间其实没什么意义
- 学习过程中取舍不当,从而浪费大量时间在一些不太有现实意义的偏门算法上
- 练习不充分、不会调试等,使得该有的直观理解没有,大致学不懂、写不对
值得一提的是,上述内容中并不都是不好的,比如对很多细节、偏门算法的深究,其实往往是走入算法研究领域的开始,对于有志于算法研究的学生,绝对是应该大大鼓励并提供相关深入探究资料的。但对于兴趣不在此的学生来说,往往是想要绕过却又不知道该绕过那些,这时候还是在指导下绕过无用的内容为好。
综上所述,便是算法与数据结构课程的设计大纲,下面讨论一下价格和适用学生情况。
我目前的教学基本有三个原则:
- 高强度的教学、咨询时间,统一定价为500¥/小时
- 在保证学生理解透彻的基础上尽可能加快教学进度
- 尽力培养学生自学能力,鼓励学生多预习、多自学
同时,前文所说的12节课的计划是边界情况,而如果学生时间充裕,多多看书和练习,教学进度是可以压缩至一节课一部分内容的,如此其实只上6节课也是可以学完的。 因此,这门课程如果是一对一,需要6000¥~12000¥的价格;而如果是三人小班,则是每人2000¥~4000¥的价格。
而接触下来,适用于这门课程的学生大致有以下几种:
- 临近找工作,时间不足,需要快速补足算法与数据结构的短板
- 转系或留学,由于基础不足或者语言障碍,需要帮助
- 已经毕业,转行中发现自己没有基础,需要补上这门课
- 读研期间,专业并非计算机类,但需要编程基础,因此需要补这门课
以上,完毕。