2017级数据结构总结

一直都想把总结写下,结果各种原因拖沓下来。可能多少也有点逃避,写与不写多少纠结。看到福大张栋老师的课程总结,深有同感,想想还是记录下来吧,文字东西更适合表达一个学期教学体会,以便日后改进。

1.关于课程教学

本学期一直也在犹豫是否用翻转课堂,如何用翻转课堂。把课堂还给学生模式究竟如何开展,是否适用。犹犹豫豫中,还是传统课堂教学。课堂教学模式基本和C语言教学模式一样。每次课前发布课堂预习作业,课堂讲解理论知识同时讲解预习习题,课后通过PTA上机编程巩固课堂内容。这样教学模式原本觉得挺好,课前+课中+课后都考虑到了,但是发现还是有一半学生数构基础并没有打好。主要原因有:

1.1 课前预习不认真

大部分同学认真完成,但是有1/3同学应付甚至抄袭。不认真学习态度导致不好学习效果。但是学生为什么不认真或者没兴趣,也不能把责任全部怪学生。写这份总结时候我也思考,总结原因有:

  • 有些同学不认真学觉得预习题目太难放弃。考虑到部分题目确实偏难,后面章节开始改进,预习作业题目尽量选择较简单选择题,让学生对课程内容有一定印象即可。
  • 布置的预习题目比较枯燥,可以设计一些比较吸引人题目,不能太难,让学生更主动去研究所学内容。比如多一些主观题目会不会更好些,这样课堂可以共同交流,活跃课堂气氛。(不过设计题目真心是挺辛苦,也极大考验教师能力)。

1.2 课后编程练习,依靠PTA平台布置的数构题目完成效果不好

这个在2016-1017的数构总结已经提到。相比16级同学,17级同学PTA做的认真很多,但是还是没达到教师想要的效果。主要存在问题有:

  • 在16级教学总结中提到PTA题目存在偏难问题,本学期特定改进一些题目,如每章设计2--3题简单数据结构操作题,如队列进出操作、树的遍历方法等。这些题完成效果不错。相对16级,教学效果是明显好。但是难度大些题目,一半左右学生编程积极性比较弱,很多需要借鉴同学代码完成。其实借鉴也可以,但是不少同学是完全放弃。编程是比较花时间精力,不少同学对于程序中bug,找不到原因,就不愿意继续去研究解决。这样现象比较多,目前主要还是鼓励学生多问,多交流。在C的学习中,同学还是比较积极群上交流询问。但是数构后,发现大家越来越不爱问。
  • 编程缺少交流。这个现象是目前我也比较困扰。从刚开始的澎湃激情到后面懈怠。尤其在树和图结构后,题目难度变大,递归方法不好掌握、期末其他课程考试也接踵而至。都在影响学生学习积极性。这2个章节编程作业在18级教学中需要再改进,题目难度可以再降低。可以引导学生多看树、图结构应用的代码。多读读一些优秀代码也助于学生思维的扩展。这个可以在C教学中开始改进。教师找优秀代码来读。依靠学生自己去找,目前来看效果还是不好。

1.3 课程教学改进

  • 改进预习作业,提高预习质量,这样才能保证教学效果。适当布置主观题,适用课堂讨论。课堂教学中可以预留10--20分钟和同学互动讨论。
  • 小组讨论,可以在每章知识点结束后,都做一个专题讨论。目前困难在于怎么让全部学生参与。经常是同学上面讲,其他同学就时不关我的事,兴趣索然状态。可以多实践几次,慢慢改进讨论模式,改进讨论题目。

2.关于实验教学

目前主要实验模式:

  • 依托PTA平台在线编程做题。
  • 博客作业作为实验报告总结PTA题目中碰到问题及解决方法。

2.1pta刷题模式

每章大概 布置10题编程题,学生线上做题,可以在线查看完成情况及排名。这种模式在C教学效果还是可以,但是在数构学习中,效果减弱不少,主要原因及解决办法:

  • PTA题目可以网上搜到答案,所以有很多同学虽然做的分值不错,但是不能代表实际水平。
  • 发现随着题目难度增加,尤其非线性结构学习,学生编程积极性减弱不少。
  • PTA题目一般代码量比较少,很多同学做题只为过测试点,根本就不会去思考代码质量及扩展性问题。部分同学代码的变量名、函数设计非常混乱。学了一年编程,变量名竟然是怎么方便怎么命名,一会儿拼音一会儿英文。这样代码过了PTA测试点,依然达不到教学目的。是无法去胜任后续软件开发。
  • PTA代码量少,很多变量名一般都同教材,函数也少。不需要去设计函数去实现某个功能,很多题目一个main函数就搞定。这样在最后一周做课设要做代码量大的作业,发现同学的设计函数都是诸如:void fun(),函数都是无返回值,没带参数。这样设计函数纯粹只是去凑一段功能。不靠参数传递,结果不少需要共享的函数变量就都设计成全局变量,一堆全局数组!!!看到学生在课设设计出这样的函数,真是觉得很郁闷。不是课任教师没提,而是平时编程作业都是做pta题,每题功能有限,很多pta题不需要函数。函数设计这块学生能力自然就弱,最后课设代码质量自然不行。这是目前PTA做题一个比较大问题。
  • 感觉有一半学生没兴趣刷题。这个是我个人感觉,没有真正统计,但是确实到数构还继续这种刷题模式,能感觉到学生疲惫和应付。

2.2 实验作业改大作业模式

大作业好处

布置项目级作业,类似课设题目。比如链表这章,布置一个购物系统等类似作业。好处:

  • 代码量大,功能多,函数设计更多,有助学生思考代码架构是否合理,操作设计是否合理,这些好的编程习惯从平时作业开始养起。
  • 可以引入目前比较流行人工智能算法、数据挖掘算法等让有兴趣学生扩展学习。
  • 课设题目提前让学生去做,这样课设时间也不会太紧张。完成后同学可以在课设多做测试,完善功能。
  • 小组合作模式可以在大作业加入,感受团队编程。
  • 和生活比较接近题目,学生兴趣会更大。
  • 大作业可以供课堂大家互相讨论。比如链表这章完全可以布置3-4题不同类型作业,实验课让不同同学展示代码设计及功能,更助于交流。

大作业存在问题

大作业能否达到理想教学效果,还需一届学生去实践.存在问题:

  • 不能像PTA在线自动检测。一个个检查学生作业质量,工作量大。
  • 项目级作业作业题目较少,存在抄袭问题。需要一章多设计题目解决。
  • 项目级作业比较花时间,一份作业一般都要500行左右代码,部分同学无法在规定时间完成。这个可以考虑迭代式推进作业,比如一份作业可以在下一章继续完善。当然这个需要设计题目,如何去贯穿多章知识点。
  • 如何检查每个学生作业质量。助教通过博客查看,还是不能完整看出编程质量。这次期末课设检查,感觉可以考虑助教和学生面对面检查交流,效果可以更好,也更直观。
  • 部分知识点,大作业不一定会涉及到。比如树这章,大作业可能会出一个树的应用题目,但是类似哈夫曼树、并查集这样知识点就涉及不到。
  • 大作业没有测试数据。以往作业中检查,发现学生总是拿10条左右数据测试,这样没法测试系统的稳定。这个应该学习PTA平台,设计大数据给学生做测试。

2.3 实验作业改进:PTA+大作业结合

虽然PTA存在上面说问题,但是在线自动评测程序这个平台还是有很多优点,大作业中存在问题,可以用PTA平台去补,后续编程作业可以考虑这样布置:

  • 每章内容,依托PTA平台上布置5题操作题。操作题必须简单,比如队列出入操作、建树、遍历树等操作,能达到90%学生独立完成作业。
  • 每章布置一份大作业。比如线性结构中,布置一个类似学生成绩系统、购物系统大作业。题目需求比较简单,80%学生有设计思路。但对题目的数据结构要求限制,比如用链表实现。这种作业不仅要求线性结构完成,后续学完排序、查找内容后,要求学生能继续完善学生成绩系统,实现排序、平衡树查找等。让作业可以贯穿多章知识点。
  • 对于学的好或有兴趣研究其他方向学生,可以加大题目难度,如在PTA布置竞赛级题目或引入算法。
  • 阅读优秀代码,提高编程水平,尤其代码架构及设计,可以多学学优秀代码的设计方式。

总结

终于结束了17级课程教学,还是有点舍不得。看着你们从初入大学的编程小白,到慢慢体会编程苦乐,最后能和我讨论所设计代码时间复杂度、问题所在。内心还是很欣慰,虽然并没有让每个同学都喜欢编程,但还是看到自己想要教内容已被大部分同学接受。在此,还是要感谢你们:

  • 平时课堂中,我经常有批评你们做不好地方,但是我还是坚信:其实你们这一年表现挺好。大部分同学编程水平、计算机理论水平、课设的完成质量都远远超过我们当年大一水平。
  • 平时作业布置比较多,有时候作业设计也有不合理地方,但是你们很少怨言,坚持完成作业。有问题及时和我交流。
  • 课设题目难度比较大。部分同学被我调整到我认为适合他的题目。这些同学都自觉去完成并实现。能看出大家做课设时候的辛苦和煎熬,无论怎样,一份用心去做的作业,都还是受益的。

希望你们在未来学习能依然你们保留初入大学的认真。回头看看自己在大学的第一篇博客作业,想想现在的你们和当时的你们变化多少,进步了还是退步了。马上进入大二的你们,能更好去规划你越来越少的大学生活。青春是最美好年龄,也是最好的学习年龄,是我这个年龄人只能羡慕却不能回头的时光,愿你们能好好珍惜这份时光。让自己的青春是美好的、充实的、积极的。

posted @ 2018-08-24 16:16  林老师dsc  阅读(628)  评论(3编辑  收藏  举报