一个学期下来,对于这门课教学还是感受挺多,多个教学平台辅助,确实和我前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

2017级C语言教学总结的更多相关文章

  1. http://i.youku.com/u/UMzQ3NjQ0MDAw C语言教学 觅风

    http://i.youku.com/u/UMzQ3NjQ0MDAw C语言教学 觅风

  2. C语言 教学实践建议

    这是2016年秋季学期和北京工业大学耿丹学院合作教学的计划. 2016级有四个班,每班大约 32 人,每班配有一个有一定实际工作经验的助教,配合老师把课教好. C语言是一门基础课, 是耿丹学院新生的第 ...

  3. 如何使用visual studio 2017创建C语言项目

    使用visual studio 2017创建一个C语言项目,步骤如下: (1)打开Visual Studio 2017环境后出现欢迎界面,如图1所示. 图1  Visual Studio 2017欢迎 ...

  4. linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS

    安装 安装很简单参照官方教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sq ...

  5. C语言序列点问题总结(大多数高等教育C语言教学课程的漏洞)

    C语言序列点总结 2013年11月21于浙大华家池 C 语言副作用: (side effect)是指对数据对象或者文件的修改. 例如,语句 v = 99;的副作用是把 v 的值修改成 99. C语言序 ...

  6. C语言教学杂记——字母排序

    一个人在被告诉一个问题应该怎么被解决后,而且亲身试验效果OK后,一旦遇到类似的问题,就会条件反射般直接拿这个方法来用了.很少会去想为什么要用这个方法,会不会有什么隐患,还有没有别的方法呢,等等这些问题 ...

  7. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  8. HLSL-高级着色语言简介【转】

    HLSL-High Level Shader Language 优点 用来书写Vertex Shader和Pixel Shader程序的代码,语法类似于C/C++,在DirectX 8.x的时代,Sh ...

  9. Visual Studio 2017再现C语言经典例题(一)

    1.编写一个程序,输入a.b.c这3个值,输出其中最大者. 2.将“China”译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母.例如,字母A后面第4个字母是E,用E代替A,因此,Chin ...

随机推荐

  1. 生物结构变异分析软件meerkat 0.189使用笔记(二)

    一. 运行meerkat 前面已经依序安装了meerkat 的环境和meerkat,运行了预处理一步,在相对应的bam文件目录下生成了大批文件,因此,当要用meerkat处理某个bam文件时,应先将该 ...

  2. 堡垒机-teleport的安装以及常见问题解决办法

    teleport是一款简单易用的堡垒机系统,运用在企业对windows.linux服务器的安全使用管理以及审计. 官网网址:http://teleport.eomsoft.net/ github地址: ...

  3. css 超出规定行数自动隐藏

     单行overflow: hidden;text-overflow: ellipsis;white-space: nowrap;  多行(兼容各个浏览器)//通过覆盖最后几个字的形式p{positio ...

  4. as版本切换导致项目损坏,无法启动。环境依赖混乱

    以下方法都不管用, 新建一个项目setting的 把main拷过去就行了!!!! Error:(5, 0) Gradle DSL method not found: 'google()'Possibl ...

  5. (luogu P1383)高级打字机

    高级打字机 题目链接 https://www.luogu.org/problemnew/show/P1383 背景 无聊中.. 随便在luogu上rand到了一道题 从此走上不归路 主席树是我暑假的时 ...

  6. 炫丽的倒计时效果Canvas绘图与动画基础

    前言 想要在自己做的网页中,加入canvas动画效果,但是发现模板各种调整不好,觉得还是要对canvas有所了解,才可以让自己的网页变得狂拽炫酷吊炸天! 一.绘制基础 1 <!DOCTYPE h ...

  7. 【Unity与23种设计模式】解释器模式(Interpreter)

    GoF中定义: "定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言." 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程 ...

  8. cookie 的增加,销毁,读取

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  9. Spring源码学习:第2步--使用SLF4j+Log4j日志框架替换掉其自身的commons-logging日志框架

    正如Spring官方文档所述,其底层的实现选择了commons-logging作为日志框架.这一"失足"性的选择,竟连Spring自身都抱怨.但是,谁叫Spring如此优秀呢,即使 ...

  10. MSIL实用指南-字段的加载和保存

    字段有静态字段和非静态字段之分,它们的加载保存指令也是不一样的,并且非静态字段要生成this. 静态字段的加载加载静态字段的指令是Ldsfld.ilGenerator.Emit(OpCodes.Lds ...