一个学期下来,对于这门课教学还是感受挺多,多个教学平台辅助,确实和我前10年的教学方式区别很多,也辛苦很多。
一、课堂教学方面
1.课堂派预习作业
主要借助课堂派平台,每次课前发布预习作业。而预习作业答题情况可以作为课堂互动的教学数据。解答学生预习中的疑问。预习作业好处:
- 教师掌握学生预习情况
- 提高课堂效率,不用学生课堂做题,互动时间可以根据预习作业情况结题,提高课堂效率。
- 预习作业讲解作为课堂互动缓和学生听课过程中注意力不集中、课堂沉闷情况。
通过上述平台非常方便了解学生预习情况,统计习题答题情况,便于课堂讲解。
2.课堂派复习作业
从学生期中考考试成绩看,学生成绩很不理想。我也开始反思,虽然有实验作业训练学生编程,但是实验作业题目有限,而且不好接触优秀代码,学生阅读代码能力还是很薄弱,会编程(或则说会解决PTA某个题),但是语法基础薄弱,如果PTA没涉及知识点,就不会做或不会用了。所以后面找一些题放在课堂派,主要让学生阅读代码、填空、读程序功能、改错等,训练学生阅读代码能力,也接触一些优秀代码写法。
3.课堂派测试作业数量
统计下从C最简单数据处理到最后C的文件读写共布置了23次测试作业,期末统计学生成绩时候才发觉有这么多作业,确实挺多。90%作业填空、简单、改错都是人工批改,想想工作量挺大的。
4.感受
- 本学期引入预习作业,确实老师工作量增加一些,不过对课堂教学效率还是提高不少。预习作业评分也是一种监督方式,让学生更认真预习。
- 看到部分学生期末总结写到“觉得学习是被老师牵着走”,还有不少对博客作业抱怨。内心也是挺感慨。博客作业和预习作业确实增加不少学生和教师的工作量。有时候想想为啥要布置呢,其实到后面几章内心也是很想放弃的,布置下PTA,看看他们排名,代码就可以了,这样大家都轻松。
- 但最后还是坚持布置下去。不能说少布置方式就不好。只能说是自己一个坚持,如同电视剧《风筝》中的信仰,当然我还没到信仰的地步。只是觉得曾经教学就是作业布置不多,下课走人状态,也很认真教学,但和学生很陌生,你也不懂他们是否真正掌握,或者你明白他们没掌握,你也不知道怎么办状态。去年开始看博客园中班级博客作业,博客可以看到学生做作业一个个过程,了解他们做做作业想法。开始反思:我们曾经作业只有老师一个人可以看到,这样好么?大家作业应该是要共享出来,互相分享,才能最大程度受益。
- 成绩不应该只是期末考试一次成绩决定,平时成绩也是不能忽视,代表学生一个学习过程。而平时成绩最好评分方式就是通过作业。
- 一份份作业代表学生学习过程,教师通过作业确实看到学生遇到问题、体会、学习程度。课堂是传授内容,作业才是真正监督及反馈。
二、实践教学方面
PTA平台布置编程题,博客作业总结PTA实验内容。PTA实验共有12次作业,博客共有13次作业。
1.PTA实验
PTA实验围绕教材每章内容设计。目前存在问题:
- 学生反应难度偏大。后续教学中需要改进,尽量5题容易题目,5题难度加大题。还有一些题目可以让学生选做,让编程能力好的同学挑战更高难度题目。编程能力比较薄弱同学通过容易题目训练,提高编程积极性。
部分编程能力薄弱同学调试程序、查错能力较差。这部分学生比较少把错误代码贴出请教老师或群里问,所以虽然明白他们编程能力比较弱,却不好去改进。这方面需要想办法营造q群气氛,让大家尽量把不懂内容多拿出来问,只有找到问题才能解决问题。
PTA只能训练单文件编程,对于偏向应用的项目作业是无法训练。这块可以在后续教学中适当引入大作业。多写代码量大的项目作业,才能检测学生系统编程能力。尤其是专业学生,训练语法是不够的。多做点项目级作业,更有助于所有知识点衔接。事实上,编程兴趣也会更高。
2.博客作业
博客作业其实就是传统的实验报告,把PTA实验中碰到问题、编程体会内容用博客方式总结,并可以通过WEB分享。从学生期末总结看。对博客作业意见比较多,主要是:
- 博客比较花时间,对编程能力提高没有用。确实和学院其他班级学生比,多了博客作业,部分学生心理是比较抵触。觉得这些总结没意义,又中觉得自己文笔不行,写不好。事实上博客看的不是你文笔,而是你实验过程体会并记录。(如果你能把自己代码思路优势描述出来,我们一般都会高分)但是大部分学生整个学习时代并没有这种习惯,中学的学习主要强化练习高考内容,而自己去总结去反思很少。所以大学初就要求大家开始写总结,写体会。很多学生觉得没必要。能理解部分学生的抵触心态。
- 还是觉得大家首先接受博客,老实说博客园也是一群年轻人自费在做的平台,很难得免费开放给各个高校老师。通过博客分享,我们有幸看到福大、北航等高校学生或老师布置作业,这种分享真心对我们学校师生来讲是很受益的。我们经常百度搜索一些C的资料,里面很多来源就是博客园的技术分享,那我们自己为什么不把自己学的内容也分享出来,而作业正好是一种很好分享。
- 在博客中,我们看到班上优秀同学博客作业,了解他们编程思路、学习过程、总结、想法,这些都有助于我们去提高编程思路。
- 博客作业内容我也是第一次设计,确实有一些不足,我也很认真听同学们意见,改掉之前要调试截图、过多总结。多了代码互评、阅读代码。目的都是为了大家多去看看优秀代码,扩大编程思维。很多事情不可能一开始就完美,只能边实践边完善,也希望一些抵触博客同学能慢慢去接受这样一种作业方式。
- 博客目的是总结,学习方法中一个非常重要内容就是会总结。把一周学的内容用一个下午时间慢慢回顾,用文字方式总结,描述出来。确实能让你对所学知识清晰很多。
三、课程设计
本次课设共布置六道题目:
- 图书管理系统
- 购物系统
- 电影票预定系统
- 医生预约系统
- 猜单词游戏
- 博客作业统计系统
所有系统数据重新设计,数据来源真实数据,更能检测学生系统的健壮性。同时改变数据结构以防学生网上找代码。这6个系统学生比较熟悉系统,很多功能平时也在用,相对来讲设计思路比较明确。学生主要把所学的知识点衔接起来,用工程、多文件思路去实现系统。
1.课设中发现亮点
- 5天课程设计,没有其他课程干扰,只专心编程。发现这5天有认真去编程同学,编程能力提高不少。代码量有500--1000行左右。
- 课设内容比较接近实际应用,学生编程兴趣提高不少。
- 有些小组会互相讨论,交流比较多,明显同组同学课设效果好很多。
2.课设存在问题
- 函数设计不合理,不部分同学设计函数都是类似
void fun()
,这样函数没返回值,没参数。只是封装功能。但是函数间没任何联系。导致问题是:文件中的数据很多同学在每个函数要用的时候都要去打开。文件频繁打开很耗内存,效率极低。 - 本次课设系统中都要打开文件的数据,其实在用户登录成功后打开一次文件,把文件中内容写入结构体或链表中后,把链表地址通过函数传递其他文件或函数就可以。所以函数的应用还不熟练。
- 用链表结构实现学生不多。链表效率比较高,尤其设计到删除、添加,链表操作更简单。后续课设还是要多引导学生链表去做。毕竟直接在内存地址操作数据,这是c一个优势,效率比较高。
- 工程中文件建太多。有同学一个系统有10多个文件,每个文件才一个函数,很没必要。其实一直强调一个模块一个文件。如增删除完全封装一个文件中就可以。但是很多同学设计完还是没听。
- 还是有同学编程存在问题不爱问人,导致问题是课设答辩那天运行还有问题。结果我看下,竟是很简单问题。编程能力比较薄弱同学还是建议要多交流多问,否则很难进步。
四、总结
本学期C的教学情况,整体比较满意。预习作业+PTA+复习作业模式,虽然刚开始比较辛苦,但是通过这样训练,学生编程基础还是得到一定程度训练。后续要改进和尝试的教学方式有:
- 翻转课堂设计。本学期有同学提出“课堂多做习题,然后互动”。看出部分同学还是很喜欢课堂派互动方式,觉得课堂更有气氛及兴趣。在日后课堂可以考虑部分内容翻转学习,学生讲,教师听并点评模式。当然考虑到学生人数比较多,翻转中会有部分同学应付情况,教师难以兼顾情况,需要好好做翻转模式的设计,多向其他高校老师学习。
- 邹欣老师的“做中学”模式,我非常喜欢。他也一直建议我们要做代码量大作业,所以后续教学考虑大作业,迭代式大作业,可以在每次作业改进功能,互评找bug模式,让学生感受系统编程,这个方向是C教学改进重点。作业设计确实是很耗教师精力,需要多查阅资料,学习改进。尤其要做偏向设计能用系统,用C这样工具实现,要好好设计功能。
五、建议
通过一个学期的学习,我对班上63位同学算有一定了解,至少名字都知道了,呵呵。这个学期有同学说我们是“相爱相杀”,感觉也挺贴切,无论师生是哪种关系,我都希望你们再下学期学习中:
- 编程能力薄弱同学,请不要对编程产生抵触。其实你们很多同学有一定语法基础,但是经常不懂问题不愿意或不好意思去问老师同学,导致问题越积越多,最后对编程只会越来越抵触。希望下学期数据结构学习中,请把不懂内容无论多简单都贴图在群上,我们都会回答你。只有说出问题,我们才能帮你解决。否则会一直落后。编程就是一个多实践过程,实践中会迷茫很正常,需要人帮忙引导,否则会迷失。
- 编程能力中等同学,不要只局限我把基础题做出来就OK的自我满足。多阅读优秀代码,多学习优秀博客。不一定每个人都是最好,但我们应该不满足,一直在追求最好路上。
- 编程能力比较好同学,不要局限在班级前几名感觉不错。毕竟在计算机学院或者其他高校,我们能力还是有一定差距,多去参加编程比赛,有精力话也可以去学学计算机其他语言。学院一些专业社团如机器人、网络安全协会、硬件协会等踊跃参加,优秀一定要让人看见。
- 计算机内容非常多,大家日后研究方向也会不一样。寒暑假有时间的话建议你学学计算机其他一些编程语言,尤其是可视化语言,把自己想做东西、有兴趣东西如游戏、APP、WEB等可以着手去学去做。有些同学也许C\数据结构学的一般,但是寒暑假花时间去学学Python、C#等其他计算机工具,很快他的计算机能力大幅提高,可以去做一些项目,辅助学院教师科研,专业能力大大提高。
寒暑假建议学习内容有:
- 对算法编程有兴趣的,可以先学习《数据结构》,网易慕课观看浙大陈越老师的《数据结构》视频。尤其想参加天梯赛同学,数据结构要先学。
- 人工智能、数据分析、网络运维、数据结构有兴趣,先学Python
Python PTA题集的验证码是:747593
- UI有兴趣,如网页、app界面,可以学学 html+css+js,H5
- 对游戏有兴趣,游戏前端先学C#,Unity3D.游戏后端先学C++.
- 对app有兴趣,可以先学学Java