从苏宁电器到卡巴斯基--我当高校教师的这几年

引言

本文转载了学校的网络安全老师撰写的亲身经历,讲述了他从一个营业员转变成一个病毒分析师的故事。本章节讲述的是老师在学校的见闻。

物联网应用

我在X高校接手的第一门课是《物联网应用》,这是一门纯理论的课程,面向的对象是15级电子系的同学,侧重于物联网原理及其应用等诸方面的介绍,在学院的培养计划里面并没有用于实验的课时安排。这就要求我必须多多了解相关的知识,这样才有利于本门课程的开展。

这门课从第1周开始,一直到第17周结束。每周二的5、6节授课,而单周的周四上午1、2节也会有课,这样一学期就是52个课时。X高校每门课的教学起止周基本上每学期都是这样的安排,只有某些学段课才会在期中就结束。然后第18、19周则是考试周。在X高校的三年时间里面,我也仅仅经历过一次学段课的班级,其余都是1-17周授课的。而我也一般是1-16周进行理论与实训的课程内容,第17周则是给大家自由提问的复习周。这样的安排倒也简单,使得我每学期可以采用同样的模式。

有件比较巧合的事情是,这个班的一位同学,在正式开学的前几天,看到了课程表,发现是我来讲授这门课的,于是找到了我的QQ和微信,把我加为了好友,一聊天才知道,他竟然知道我写的第一部小说,也看过,觉得我挺厉害的,让我突然有了一种被认可的感觉。而更加巧合的是,三年以后,我来到了一所新的高校,在我工作的第二个学期伊始,我们学院引进了一批博士老师,这位同学竟然也以博士的身份顺利加入了我们这个大家庭,成为了我的同事。不过由于他还没有毕业,只是刚刚上博一,因此还不是正式编制的教师,但我觉得这也仅仅是时间问题而已。他也确实非常地厉害,主攻人工智能的图像处理领域,未来有时间的话,真该多多交流一下。而我也渐渐有了读博的打算,想提升一下自己的学历,然后真实地做一些前沿技术的研究。

来学校的第一天

再把时间拨回到三年前,尽管我是周二才开始上课,但是新学期是从周一就开始了。开学前,学院负责我们人事工作的老师让我周一早上就来校报道,找我新部门的一位负责老师。根据本系列故事的字母表排序,我这里称其为Y老师吧,由于以后Y老师就是我的直属上司,因此Y老师会在本系列的故事中多次出现。

周一的早上我按时到校,但是我并不知道自己应该去哪里,于是就在教学楼一楼的中心露天广场找了个长凳坐下,打开教务管理系统,查了一下Y老师的上课地点,然后趁第一节课的下课时间,赶紧到教室去找Y老师。说明了来意,Y老师就把我带到了同一个教学楼的办公室里面,这间办公室离门口最近的一个工位没有人,于是就让我坐在了这里。倒也没特别吩咐我做些什么,于是Y老师就匆匆忙忙地赶回去上课了。

这间办公室还是挺大的,很有特点。因为整间办公室右手边靠墙的区域大概有五个工位,是我们这间办公室老师的位置,而余下的大概四分之三的空间,则是一张张的大桌子,大约有五、六张的样子,然后学生们带着自己的笔记本电脑,或者是用学校的电脑,围着桌子坐一圈进行开发。也就是说,我们这间办公室是学生和老师混合式的办公室,这样的设置也是便于老师和学生的交流,非常有利于项目的开发。

我当时带着自己的笔记本,坐在了自己的位置上,主要是准备一下第一周的7节课。我觉得第一周的课程还好一些,主要是做一些本学期的课程介绍,但是越到后面,课程任务肯定就是越繁重的,因为涉及到新知识的讲解以及作业批改等,因此我需要提前做好筹划,免得到时候措手不及。

前端开发

X高校的每次课都是两节连上的,由于Y老师这学期需要教软件专业的1班和2班,而受限于硬件设施,因此这两个班的同一门课程是分开上的。1、2节课,是1班先上,3、4节课,则是2班上,相同的内容Y老师需要讲两遍。上午的课程结束之后,Y老师回来,给了我一些资料,说是以后让我学习研究一下Web前端方面的知识,我以后在授课之余,也需要进行前端开发。

说实话,当时我完全不知道什么是前端,感觉无比的陌生。如果说是让我做C或者Python开发倒也还好,因为以前的学习和工作中多多少少还是使用过一些的,因此上手还是蛮快的,但是前端则完全触碰到了我的知识盲区,我也对自己是否真的能够学好这一崭新的技术有所怀疑。毕竟现在网上都流传说35岁就是程序员的一道坎了,这个年龄如果不能晋升为管理层,那么确实就需要考虑一下自己的未来了。毕竟作为一家软件企业,每年都会补充新鲜血液,新人的薪水肯定是比老员工低的,而且同样的工作,新人肯定也是能完成的,于是就会使得大龄程序员的地位岌岌可危了。从另一个方面来讲,35岁肯定已经过了一个人的黄金学习期,专注力以及记忆力肯定不如20出头的人的。刚加入X高校时,我已经32岁了,尽管距离那道坎还有3年,但心理和身体状态也都和35岁差不多了,也确实是会怀疑自己是否能够把新知识学明白,一开始就埋下了不自信的种子。

Y老师给了我一些学习资料,说是每一批学生开发团队的成员都是通过学这些上手的,只要完成其中的四个任务,那么就可以上手开发了。既来之,则安之吧,于是我当时还专门买了两本前端开发的书籍,打算好好研究一下了。但是至于自己什么时候可以真的上手,我的内心还是充满着未知的。

而我后来也算是比较争气,不敢说自己的水平有多高吧,至少后来还是承担了一定量的开发任务的,但这些也都是后话了,我在未来的故事中会给大家分享。我也总会把这段经历分享给我的学生们,希望大家能从我身上看到程序员的精神,活到老学到老,不断地对技术抱有好奇心,不断地督促自己去学习,毕竟我们这一行就是这样的。以前端为例,我一开始除了要掌握基础的Html5+CSS的知识以外,还自学了JavaScript。后来我们项目中的很多代码又使用了JQuery进行重写,我又学了点JQuery的知识。再后来,Vue.js横空出世,我们的项目又需要用Vue改写。尽管到了Vue的时候,我更多地是指导学生进行开发,自己基本已经退居开发的二线了,但这也说明我们如果想保持住自身的竞争力,那么就需要不断地吸收学习最新的知识,因为我们的项目是需要这些的,需要新的技术新的方法来进行完善。我也觉得我的学生们,确实会对我的这段经历有所感悟。

着手备第一节课

当初刚刚签约的时候,负责人事的老师就专门提醒我,一定要在第一节课和学生把本学期的要求等内容说明白,特别是考核方式,这个是学生特别在意的。而我这学期的两门课,我也想有所突破和创新,为此我专门做了PPT,预计分别要花一节课的时间来为大家进行全学期的课程说明。

话说我当时做的课程简介PPT,没想到也是延续使用了8个学期,因为直到今天,我这学期的课程依旧在使用这份PPT进行介绍。

这份PPT一开始的环节是自我介绍部分,我从本科时代开始讲起,说自己毕业于长春理工大学的市场营销专业,后来在苏宁卖手机,相信讲到这里就会让大家顿时对我很感兴趣,想知道我这样的一个出身,后来是怎样走上计算机的道路的,特别是如何走进大学的课堂的。我和大家说,在苏宁卖手机的一年时间里面,我发现自己还是对计算机比较感兴趣,因为我发现苹果商城丰富的应用,绝对是未来的发展趋势,于是我就毅然决然地辞职考研,到了北工大,再后来又是机缘巧合接触到了计算机安全,加入了卡巴斯基实验室,最后回到珠海,来到了X高校。从实际的效果来看,我至今已经教了7届的学生(15级-21级),大家都很喜欢听,所以我的自我介绍部分就是我每门新课雷打不动的内容了。

接下来我还会举个例子,也就是我和《恶意代码分析实战》这本书的故事。我说当我研一结束后的那个暑假,我回到了珠海,但是那个时候的我也是非常的迷茫,尽管已经掌握了一些逆向的知识,但并不知道具体哪个职位适合我。于是就在某一天,一个阴雨绵绵的下午,闲暇无事,去了拱北地下的文华书城,并来到了规模日渐缩减的计算机图书专区。在寻觅有哪些有意思的书的时候,突然眼角的余光发现书柜的右下角有一本红色的非常扎眼的书,好奇心驱使我蹲下来,把那本书拿了出来。看到封面是一个待解剖的小外星人,我的兴趣就更浓了。接下来我随手翻了翻,而也正是我的这随手一翻,就彻底改变了我未来的人生走向。因为我发现这本书的内容真的是非常地充实,写得非常详细,而且配有丰富的实验例子,我一看就爱不释手,我还从来没有过对一本书产生如此浓厚兴趣的情况。但看了看价格,一百多对于当时还没有收入的我来说,确实还是有点困难的,特别是当时的书店基本是不打折的,顶多在活动期间会打个九折,毕竟书店的运营成本也是很高,大家看纸质书的热情也是在逐年减退,因此现在能够依旧支撑下来的书店真的是非常难得的了。时至今日,我时不时依旧会去逛逛书店,就是为了那一份情怀,也会在书店买几本感兴趣的纸质书,为实体书店贡献自己微薄的力量。而·几年以后,由于拱北整体改造,位于地下的文化书城也就搬走了,本来我的新房子附近也就一家文化书城,但由于合约没有谈妥,也搬走了,这就突然让我感受到了空虚,但更多的是一种无奈。毕竟书店和书籍,对于我的人生,确实是有着非常重要的地位的。

回到在文华书城的那天,尽管这本书是我看过的最贵的计算机图书了,但我实在是喜欢,于是我还是咬咬牙,把它给买下来了。回到家之后,我认认真真地把书上的习题做了一遍,这也是我唯一的一本,学得如此认真的计算机图书,至此,我在病毒分析领域才算是真正走上了正轨。后来当我上班以后,手头宽裕了一些,专门通过海外淘的形式,花了五、六百块钱,买了一本英文原版,作为永久珍藏。至今,这两本书依旧在我的书架上,因为它俩见证了我的成长,见证了我的岁月。而回头想想,假如我当时没有去书店,没有看到这本书,也就没有买它的话,那么我之后的人生轨迹确实是不可知的了,也许,此刻站在讲台上的就不是我,而是另外一位老师了。

我对每一届的学生都会讲这个故事,因为我觉得大家未来的人生中,也许正是某一本书,某一节课或者某一个人,使得人生出现了重大的转机,于是我也就希望大家,做生活中的有心人,每一件小事都可以成为蝴蝶效应的开端,从而改变你自己乃至更多人的人生。

接下来我就会开始讲讲本学期的考核方式了,这里就不再赘述。每年我都会把我的这第一节课进行改良,使其越来越完善,但上述我所说的这两件事,则是永恒不变的,我也会对我未来的学生继续讲述。

平时作业X大作业X期末考试

正如我之前所提到过的负责人事的老师要求我在第一节课就需要把课程的考核方式告诉大家让同学们心中有数免得期末出现争议的情况。一开始就约法三章也算是让大家对这门课、对这学期也能有个规划。那么说到成绩的考核我在X高校的三年时间里面对于必修课我都是采取“平时成绩大作业期末考试”这样的形式来进行分数的评定的三项分别占总成绩的30%、10%和60%。而如果是选修课则会降低一些要求把“大作业”取消变成“平时成绩期末考试”这样的形式占比分别为40%和60%。

平时成绩主要由我给大家布置的作业构成需要大家提交实验报告或者小论文然后由我来进行打分。以《计算机网络安全》这门课为例由于实践性比较强因此我基本上每周都会布置作业的给同学们一周的时间完成并提交报告而《物联网应用》这门课并没有安排实践的内容因此我在全学期的不同时段给大家布置了三个题目同学们根据题目完成三篇小论文就好。

大作业占据10%的成绩那么也就说明是否提交大作业也就决定了这个同学期末成绩是否在90以上。因此可以认为大作业就是一道关卡因为按照要求90分以上的同学数量只能占全班同学的15%根据实际的实践效果来看大作业确实是区分90分以上和以下同学的一个很好的手段。我在第一个学期对《计算机网络安全》这门课大作业的要求是同学们可以自行组队从安全领域的前沿选题中任选题目然后上台为大家做个汇报。我会根据汇报的内容、技术难度等方面进行打分也会针对于汇报内容进行提问有点类似于毕业汇报的形式。而那学期《物联网应用》的大作业也是这样安排的。

这两门课的期末考试也都是采取了笔试的形式。其实我也知道大家的情况我在期末考试内容的设置以及难度等方面也不会难为同学们。基本上我也都会为大家划定范围其实这些考试内容都是平时讲过也是重点强调过的。这一原则也是一直延续了下去但每次的效果却都会有所差别。比如《物联网应用》的期末考试我提前给了大家题库其中包含有两三百道题。结果那届同学的背题热情空前高涨绝大部分同学不到半小时就交卷了这其实也是不允许的因为这就说明题目的难度或者数量是不恰当的。但也就是这一届同学是这样的情况后来我又讲授了《计算机网络》这门课也是有题库但结果几个班的同学就不太复习直接导致我后来教的所有网络课的班级平均分基本都是六十几分差点就不及格了。过低的平均分也是不行的。因此这几年我思考着如何平衡这些问题也是很头疼的一件事。

难以杜绝的抄作业现象

我对于同学们提交的报告或者论文的要求还是挺严格的最重要的一点就是必须原创不可以抄袭如果让我发现雷同那么抄袭和被抄袭全都是零分。对于这一点我发现在我三年的本科执教里面每一届每一个班都会有抄作业的情况。大家可能会觉得我每周要看那么多的作业真的可以很轻易地找到谁抄了谁的吗?其实这个并不难我一般会从一些蛛丝马迹的线索中进行定位。当然在我看来抄作业的技术也是分为三六九等的下面我会从初、中、高三个等级进行划分。

初级

由于我们现在的作业已经不需要手写了因此作为初级的抄作业可以认为就是直接把别人的word文档交上来。由于这样的抄袭方式在排版、格式、截图方面是完全一致的而我基本上改完一个班的作业也就在一两个小时内所以我肯定会对之前看过的作业有印象的。最离谱的一次某个同学直接把别人的word文档连学号和名字都不改直接原封不动地交给我于是我就直接判了零分。第二次作业他似乎发现了第一次的问题依旧是把别人的作业拿过来这次这个同学修改了学号和名字但由于内容和另一个同学完全一致所以又被我发现又被判了零分。但这次我有点忍不了了直接在第三次课堂上说了这件事当然我并没有透露名字我说在我们班抄作业现象还是存在的有的同学连名字都不改直接把别人的作业交上来了我打了零分第二次改了名字但又被我发现了我又打了零分。其实我说这些的本意是想让大家引以为戒不要抄作业要独立完成结果我这么说了之后反而启发了一些同学第三次作业史无前例地出现了好几例抄袭的情况当然这些抄袭也都是改了名字的。这就让我特别无奈我也都打了零分。

为了让大家心服口服我在打零分的时候会在打分系统中备注上你和哪个同学的作业出现了雷同的情况所以我要打零分如果对这个结果有异议可以当面和我说。当然了尽管我说抄袭被抄袭都是零分但是我一般并不会给被抄袭的同学打零分因为我知道很多时候他们也有难处比如有的同学就是不想做也不会做开口向自己的好哥们要作业你说难道还能不给吗?也就只能千叮咛万嘱咐一定不要全抄万一被我发现就不好了。可现实情况就是全抄很容易就被我发现了。特别是有一次被抄袭的同学也不知道自己为什么会被抄和我反映了这件事后来觉得应该是自己提交作业的平台的账号密码被那个抄作业的同学知道了于是每次提交的作业就直接被那个同学下载下来抄了。没办法我就只能让那个同学修改密码了。

中级

来到了中级就说明抄作业的同学会进行有选择性地抄袭了与初级相比就不会那么容易地被我发现。这些同学一般只会抄其中的一部分但由于抄袭部分的整体排版格式依旧很相似因此还是会被我轻易发现。这里也会遇到不服从判决的同学说仅仅是把别人的作业拿过来看一下怕自己的分析内容有所遗漏因此才参考的并没有抄袭。总之还会有五花八门的理由但抄了就是抄了就是零分。

其实我之所以这么看重抄作业的问题还是想在诚信方面对大家有所考核。全学期坚持独立完成的同学理应得到高分全学期多次抄袭的同学就应该零分。也就是说在我的课堂我既要考察计算机知识更要看大家的品德因为这是大家以后走上社会安身立命的根本。我也不知道经过我这样的严抓是否真的会改变他们但我如果不抓我肯定是会内疚的。

还有一种情况我觉得也属于中级就是那种程序语言类的课程平时作业我只要求大家提交代码也就是把书上的例题代码敲一遍交给我就可以了。每周大家会有专门的上机时间来做这件事因此对每个同学来说并不存在没有时间敲代码的情况每周在课堂上肯定是能够完成的。但即便如此依旧有直接把别的同学的代码复制过来交给我的情况。其实找哪几个同学的代码雷同是一件比较困难的事情但我这里依旧把它归类到中级是因为这里面还是会有一些判断技巧的。

比如代码中某个同学打错了一个单词而另一个同学也打错了这个单词那么八九不离十肯定就是抄袭的了。或者有的同学喜欢拼音不喜欢英语因此在函数和变量的命名方面就全都用拼音而另一个同学在相同的函数和变量命名方面也用了这个拼音那自然也是抄的了。还有就是我发现一个班级里面会有好几种代码的缩进风格有的完全不缩进有的只缩进一格有的缩进很多那么这也是我判定的依据。总之通过这些细节我在编程语言类的课程里面抓了很多人毕竟这是最容易抄袭的一门课了。可惜的是尽管我这么抓但全学期依旧有很多同学从头抄到尾属实让我也不由得佩服这样的同学了。

高级

在积累了整整四个学期的抓抄作业的经验之后我本以为自己的技术已经炉火纯青已经练就火眼金睛而且我心里面也会有预感第五个学习的教学肯定也会出现抄作业的情况。但当时间真的来到了第五个学期我却惊讶地发现有一个班还真的就没有抄作业的现象。其实我觉得这是好事因为我的本意也并不是为难大家可是我依旧没有放松每次作业依旧采用“零信任”的心态去批改对待。直到这个班的第四次作业才让我发现一丝端倪我感到自己遇到了高手所以我将其归类到高级这部分。

在批改第四次作业的时候我发现有个同学自己上网找了一些背景知识写在了实验报告里面。其实能够自己去找一些资料写在报告里这件事我是非常赞同的说明这个同学非常勤奋好学一般这种情况我都会给高分。但奇怪的是这个同学找的这些资料和我们这次的实验任务是没有任何关联的期初我也没有多想就是觉得也许这个同学理解不到位也许有必要在课堂上再和大家强调一下这些基础知识。然后我就继续改下一位同学的报告了。但是改着改着我发现还有一个同学在报告里面写了同样的知识这就不由得激起了我的怀疑。也许在座的各位看官会觉得我想多了同学们写报告想到一块儿去了选用了同样的案例、背景知识似乎是一件正常的事情。但是根据我这么多年抓抄作业的经验不同的同学就算仅仅是记录下楼去食堂吃饭这样的一件日常小事一百个同学肯定也会有一百种写法出现雷同情况的概率肯定是微乎其微的(除非交的是白卷),更何况错都错一样呢?

基于这点我把刚才看到的另一位同学的作业找了出来认真对比了一下这两份的内容我惊讶地发现这两份作业的内容可以说是完全一样的。而我之所以没能及早发觉是因为这两份作业的排版有着极大的不同。比如一份用的是五号字体一份是小四号字体;一份全文黑体一份全文宋体;一份1.5倍行间距一份1倍行间距;一份每一章节的标题就是普通字体一份采用了黑体加粗还用黄底来突出显示;一份对于重点内容的表述会加下划线但另一份则是采用不同颜色进行重点标记……甚至有些章节的编排顺序和一些语序都有所修改但从内容上来看两份作业就是完全一样的。也就是说抄作业的同学为了不让我看出来还是花了一些心思的这样一来两份作业如果仅仅是从第一眼看上去外在的表现形式是完全不一样的。发现了这一点真的让我大为震撼如果不是由于一个内容上的错误我完全不可能发现这件事。

既然发现了抄袭的情况那么既然是要判零分的。但是第六感告诉我这两个同学应该并不是只有这次才是这样的很可能前几次也是这样。于是我就把这两个同学前几次的作业也都找出来了一对比情况果然和第四次是完全一样的难怪我最初没有发现竟然采用了这么隐蔽的手段。证据确凿我把抄作业的那个同学这几次的作业全都判了零分。也就是从这次开始我除了会更加仔细地比对大家的作业以外我还会重新审查这些同学之前的作业完成情况如果也是抄袭那么同样直接判定为零分了。

因此我觉得每次批改作业真的是斗智斗勇的过程。

伯乐与千里马

作为唐代知名的文学家、哲学家、思想家韩愈所创作的《马说》有这样一段话让我感触很深——

世有伯乐然后有千里马。千里马常有而伯乐不常有。故虽有名马祗辱于奴隶人之手骈死于槽枥之间不以千里称也。

我自认为也是经历了不少的挫折与坎坷这点大家从我的故事中也可以看出。回首过往自己每迈过一道坎既有自己坚忍不拔的努力因素在里面也有机缘巧合之下的贵人相助。我不敢说自己就是一匹千里马但在我成长的路径中确实每当遇到极大的困惑或险阻似乎总会有伯乐及时出现挽狂澜于既倒扶大厦之将倾。

比如就在我刚上初一的时候班主任在第一节课就宣布了正班长的人选但还留下了副班长的空缺。于是我就鼓起了勇气课下和班主任说我想当副班长。要知道这可是我鼓起了极大的勇气才这么说的因为在读小学的六年时光里面我从来没有主动举手发过言都是被动地被老师叫起来才回答的问题。而且每次站起来也都是很不好意思很不情愿。因此我其实也是为了想改变这样的一种内向的性格才下定决心要当班长的。没想到班主任竟然很爽快地答应了。也正是班主任的认可尽管初中三年我这个班长当得并不完美但于我个人来讲我确实是得到了极大的锻炼机会。正是凭借着一次一次地主持班会联欢会上表演相声每周的升旗仪式当护旗手……让我的自信心不断地建立并夯实直接为我日后的大学乃至今天的性格奠定了重要的基础。回想起来假如当时我自己没有鼓起勇气毛遂自荐假如我的初中班主任没有答应我的请求那么今天的一切一切尚未可知很可能我根本就没有勇气站上讲台为同学们传道受业解惑。

随着时间的推移又来到了我研究生即将毕业的时候。当时尽管也在四处投递简历、面试但无奈求职依旧屡屡受挫。好在 Rocky 在机缘巧合之下于看雪发现了我的简历联系到了我一开始就对我无比的信任相信我肯定能够胜任这份工作让我建立了自信之后便一直兢兢业业发光发热也可以说是在报答Rocky对我的赏识。而能够入职这样优秀的企业也是极大地拓宽了我的眼界并且对我之后的一系列工作产生了连锁反应因为正是这样的企业经历才让我丰富了自己的课程内容同时还受到了之后工作单位的青睐。否则如果仅仅是个硕士学历而没有业界经验相信我之后的求职之路还会再多几分坎坷的。

回到了珠海又来到了艰辛的求职状态出现了半年的职场空窗期。幸好X高校正在招聘老师于是我便投递了简历。事实上在整个面试的环节老师们是并不看好我的就是因为我本科学的是市场营销并不是计算机出身更不是理工出身这一点就打了很大的折扣。加上我的学历还是硕士在当今高校学历至上的年代硕士基本没可能去本科任教的现在都是博士起步了(高职也有这一趋势),当然也可以“曲线救国”从实验员开始一点一点提高学历与职称成为正式的老师。好在院长当时力排众议坚信我可以在学院发挥自己的能力于是就将我录取。可以说我在X高校的三年也是一直兢兢业业就是想报答院长的知遇之恩。毕竟当时能够入职X高校对我之后的一系列发展确实是起到了至关重要的作用三年本科院校的积累可以让我更好更快地融入现在新的工作单位也是我非常宝贵的财富。

半路接手 C++

在X高校任教的第一个月一切可以说是非常地平稳每周的《物联网应用》和《计算机网络安全》这两门课也在我的能力范围之内并没有出现不胜任的情况因此每周的授课我也都是自信满满工作相对来说并不繁复。

就在我执教第一个月的月底主管教学的副院长找到我说之前讲授 C++ 的老师由于个人原因离职了问我是否可以马上接班。我听了之后有些诧异怎么才一个月就不教了呢了解到之前这位老师其实也是从兄弟院校找来的兼课教师也许兄弟院校突然工作繁忙使得这位老师分身乏术不得不放弃这里的教学工作吧。正值学院用人之际我觉得自己不应推脱而且我也有 C++ 的基础毕竟之前写程序用的基本上也都是 C++,于是就毫不犹豫地答应下来了。但是也是由于时间过于紧迫没几天就要上课了我就赶紧买来了教材和习题册找到了配套 PPT,开启了备课工作。

这门课的授课对象是软件专业大三第二学期的同学我感觉这个时候才学 C++ 确实是有些晚了因为按道理这个阶段的同学应当只学习专业课的类似于C++这么基础的课程是应当放到大一学习的。软件专业当时一共有两个班分别是94和77人我觉得人数还真是蛮多的。上课时由于没办法安排这么大的教室因此两个班是分开上的。每个班每周是2节理论2节实验2个班的理论课时间是连起来的也就是1班在5、6节上然后紧接着就是2班在7、8节上对于我来说也就相当于是连上4节课。这对我的体力绝对是很大的考验。因为理论课不同于实验课就是要讲授的。我记得很清楚有一次是在第7节课上我讲着讲着突然感觉体力透支有点失去意识身体已经往前倾了幸好反应够快马上用手支撑了一下讲台定了定神又继续讲课了。事后想想都有些后怕但那也应该是我从教几年以来唯一的一次“危险”情况了。

理论课部分只能依据之前那位老师的思路讲解没有离开指定教材这就几乎没有给我自主发挥的空间了。而实验课部分也是受限于机房大小两个班分成了三批同学在机房实验因此实验课的时候对我自己来说是从第1节课到第6节课都需要坚守在机房。而同学们无非是把书上的例题习题敲一遍就行也是延续着之前那位老师的方法。毕竟是半路接手我已经没办法贯彻自己的教育方法了。不过也是为了丰富课程内容我也是找了一些算法题放在每周的实验作业里面。除此之外我还改革了期末考核内容特意拿出总评 10% 的分数当做大作业要求大家用C++写一个程序让用户来决定 Windows 任务管理器的 CPU 占用率。比如可以让 CPU 的占用率稳定在 50%呈一条直线的情况或者占用率状态是一条正弦曲线等。其实这道大作业题目的来源是《编程之美——微软技术面试心得》中的第一个案例我在布置这个大作业的时候也说了来源意思是大家可以找这本书或者上网找一些参考否则如果是纯粹自己去想的话确实是有些复杂。我说大作业并不是需要每个同学都去完成只是为了区分大家的程度不能人人都 90 分以上。提交时需要把分析报告、源代码以及录屏演示提交给我。

其实我要求提交这三样东西也是受了研究生时期一门课作业的启发那门课也是让我们提交这几样内容我觉得是一个好的方法可以较全面地考察学生的综合能力。而从最后的结果上来看一共有 29 位同学提交了大作业占全班总人数的 17%那么其余同学的期末总评也就是 90 分以下了也是比较符合学院对于分数把控的要求。尽管交大作业的同学不少但是我真正满意的只有一位同学这个同学自己研究了一下界面设计为这款工具制作了一个不错的界面出来可由用户自定义波形的显示效果:

这个作品在 29 个同学中脱颖而出给我眼前一亮的感觉于是我就毫不犹豫地妥妥地给了这位同学满分。而这位同学后来也是继续读研深造研究生毕业后拿到了心仪的 offer,也看出在计算机领域确实是一分耕耘一分收获。

除了大作业平时成绩我基本都是依据同学们每周的实验情况打分。由于之前那位老师每周只要求大家提交实验源代码于是我也就延续了这一要求。但也正如我之前所讲的那样不少同学会直接复制别人的代码即便如此也都被我发现了。我对于抄袭的同学会直接判零分其中不少同学会给我发信息道歉说以后不会这样了保证独立完成也是体现了良好的态度。另外学院每年会举办IT节其中会有 ACM 比赛而这项比赛的成绩也会纳入到同学们的期中成绩里面。其实这项比赛对于大家编程思想编程能力的提高还是非常有帮助的因此我觉得我们学院在一些活动的编排上确确实实是依据行业所需为了让大家有更多的锻炼机会而设置的非常科学。

C++这门课的期末考试采用的是纯笔试的形式题目都来自书本和习题册。有同学就复习得很好卷面书写非常美观我找不出一点问题。卷面90分以上的同学还是非常多的但也有基本交白卷的这样总评就肯定不及格了。我记得很清楚其中一个不及格的在第二学期刚开学的时候这个同学的妈妈还来找我了知道快要补考了就来和我聊聊说她自己是80年代学计算机的大学生她那个年代觉得学计算机还是挺简单的但不知道怎么了到了孩子这一代学计算机就这么吃力她孩子说期末考试的题目从来没见过所以就没及格。我心想如果这个同学是没看过书而且平时实验也不做的话那确实是没见过这些考试题目的我当时为了降低要求书上的题目是直接拿过来考的没有改动一个文字。可即便如此现在似乎又要把锅推到我身上了。我也没有多说什么后来这个同学也确实是进行了不错的复习补考顺利通过了不像期末考时候直接交的白卷相信这个同学的家长也能松一口气了。

其实讲授 C++ 这门课除了锻炼了我的体力同时也让我自己复习了一遍 C++ 以外还使我的收入获得了不小的增长。我曾经介绍过我在卡巴的待遇税前 15K,税后每月实际到手 11K 多一些后来涨了工资也就勉强 12K。可是自从我接了 C++这门课每周多了 10 个课时我的到手工资就直接飙升到了14K,直接高于卡巴的待遇了。