About Cheating and Plagiarism
我先描述一下此次事件的具体经过。昨天3月15号的晚上十点,是第四次作业的deadline。在15号之前,只有五位同学提交了作业,而在临近deadline的这几个小时内密密麻麻地提交了二十多份作业。和第三次作业一样,我会去github上把各位的代码clone下来看看(就像各位会看看我的一样),这是栋哥搞博客教学的目的,能让我们之间有交流的机会,甚至能够领略其他学长、甚至是业界大牛的风采。同学们的作业当中,有bug的我还给他们提出了意见(例如郁杨的博客下面就有我提的意见)。
当时我看同学们的代码,有让我比较震惊的事情发生,有的同学的一些代码与我的几乎一模一样。
例如,接下来两张图是我写的。
这下面是一些同学的代码。
我发下面这张打过马赛克的图片,主要的目的是想告诉你们,我心里有谱。
在看到第一份“雷同”的时候,我倒是觉得我能帮助到他人,自我感觉还不错。但是接连几组的雷同代码出现在我的面前,我坐不住了。我看了这几组“借鉴”了我的代码的同学们的博客,只有恺翔同学在博客中明确的标注了有参考我的代码,其他的人并没有提到,甚至还说这是自己想出来的思路。
所以,我在班群里说了这么一句话。
很让我难过的是,到目前为止,大部分“借鉴”了我的代码却没有标注的人还没有来找我说明。反倒是让一些只是单纯地看了我博客的人觉得不好意思来向我道歉。
我真的觉得,有点悲哀的。
我也是从新手走过来的,在之前,我遇到一些问题的时候,我也很希望有人能来帮助我。如果真的有人能帮到我了,我会很感激他们。这次能有缘分和大家做同学,我想,既然有这个机会帮助到大家,我就会尽最大的努力提供我能提供的帮助。
我确实有点生气,也把这件事情跟几个朋友倾诉了。有的人跟我说干脆以后你把作业写好等到deadline之前再发。说实话这不是我的风格,我并不想把什么事都堆到deadline之前一点点时间再做,那样或许会为了及时完成而应付导致作业质量下降。相反,我每次整理一篇博客大概都会花一两个小时甚至更久的时间。发完之后,我还会从头到尾看几遍,字斟句酌,生怕我哪里写的不通顺,可能让人看不懂;生怕哪里的语义表达不清,或许会产生误导……我对自己整理博客和写的代码有一个要求,那就是能让看我博客的各位看得懂!可是很讽刺的是,我费尽心思写出的博客,费尽心思写出可读性高的代码,确实可读性高了,所以你们也就很轻松地看懂,很轻松地拿去用了(我的方法并不是最好,我觉得王源、郁杨做的都比我好,但有可能,我的代码是最好借鉴的)。
还有一位朋友建议我只发博文不传代码,或者博客上锁,deadline之前再解锁。这有违我的内心:我不想提防我的同学们,相反,我很想帮助得到你们。知识需要学习并且分享,那才是大家写博客的意义,才对得起栋哥的苦心。而且我一直觉得,主动学习比被动学习更有效果,所以我经常乐于为他人讲解困惑,在主动为他人解惑时,也能让自己的水平提高。我向来不是藏着掖着的人,很久之前做过的各种笔记有人来找我要我也就给他们了。但我觉得,免费的才是最贵的。那些笔记,是我自己整理的,我自己的东西。直接向我要笔记的,往往是为了应付考试临时抱佛脚,我也不觉得他们能从中学到什么东西,或者整理出自己的东西。相比之下,我更喜欢的是能够来和我一起探讨问题的同学,那样才是我欣赏的态度。
或许有的人觉得,我很小气,我太神经质,我是傻逼之类的,我不会去妨碍你们这样想。我并不想表面上装作“和和气气”,那不是我赵畅的为人,我只是想做我自己内心认为对的事情。我帮助别人也不是为了让别人对我感恩戴德,而是你们这样子做(“借鉴”)并不是代表我的博客帮助了你们,相反,我会觉得是我害了你们!今天由于临近deadline,所以觉得在网上抄一份代码也无所谓,那么考试的时候也能作弊,写论文、做实验的时候也可以造假了?!不要觉得我是在危言耸听,信誉是一个人最重要的东西,是需要用一辈子去积累的。如临深渊,如履薄冰!(看看国家的征信制度吧,只要你失去了自己的信用,那么以后买房买车,贷款什么的就别想了,够你吃一壶。)
我很感谢思泳同学能够直面这次的问题,知错能改善莫大焉。我很乐意为你解答你的疑惑。你提到了:
而对于不关键代码,……复制粘贴也算是抄袭的话,那就是不可理喻的了。
例如百度一下冒泡算法,就会发现很多种方法,如果说我们学会了其中一种方法,而在之后要用到这种方法发微博就要说明出处的话,那是不可能的。……作为一名程序员或学生,应该要全理解这段代码然后能在脱离网络的情况下写出来,复制粘贴是可以的,只是一种学习过程,当然,你不这么做现在也没有任何惩罚,只是这样自欺欺人是一定要在以后付出代价的
就算你认为这段代码不关键,但那是他人的工作成果。如果你自认为引用一下无所谓,那么请标明你的引用来源,更何况你“引用”过来是为了完成作业,作业的目的是为了让你学习,而不是什么压榨你的时间的存在,所以请认真对待作业。如果看了别人的思路有启发,那很不错,但最好还是写自己的东西。
你举的冒泡排序的算法作为例子,我倒是觉得没有什么问题,我对于加粗的部分尤其赞同。然而这两件事情是不可以相提并论的,它们的属性不同。你可以通过百度冒泡算法来学习算法怎么写,但你不可以堂而皇之地借鉴别的同学的代码,这是有关于学术诚信的事情。
如果这种观点不对的话,并且你的观点是所有程序员公认而非某个人的个人观点话,请告诉我,我一定会改正。
最近我在学习CSAPP,我会去CMU的课程网站上使用他们的学习资料。在看他们的的ppt时,有一些东西让我非常的震惊。没错,就是震惊,只有这个词能形容我看到以下这个页面时候的感受。
Academic Integrity,学术诚信。在这门课还没有正式开讲之前,CMU使用了长达十页的ppt篇幅介绍关于学术诚信的重要性。先学做人,再学其他知识。其中包括的内容有
- 哪些获取、使用信息的行为是不符合学术诚信的要求的?
- 到底哪些行为属于作弊、抄袭的范围?
- 哪些行为不属于抄袭和作弊?哪些行为是受到鼓励的?
- 如果你违反了学术诚信的规定,有什么后果?
- 场景分析,举了很多生动翔实的例子来说明。
我觉得我们中国的大学有一点理念确实落后于国外的大学,就是关于学术诚信。诸位应该很少有在大学时上过的课,老师有专门为大家科普学术诚信的内容把?到了期末考,作弊什么的现象屡见不鲜,甚至很多毕业论文的内容也被称为“学术垃圾”。下面我对上面几个内容翻译一些CMU课程条例中的规定,希望大家能够有所思考
以下都来源于CMU ICS 2017春季课程的PPT和课程条例,我是渣翻译,还请大家上网站看原文
Firstly,Ignorance is not an excuse!
不被允许的使用他人信息(use)的行为:
1.剽窃代码,包括复制、上网搜索、重新输入(注:看着别人的代码重打一遍)、窥视他人文档和代码。
2.重用原先的课程或者网络上的代码或解决方案。
不被允许的使用自己信息(supply)的行为:
1.分享代码(注:我不反对我们的课程形式,只是希望大家自觉)
2.口头为他人描述代码(注:这里指的是描述具体的代码段)
3.为他人提供非常细节的指导(注:providing detailed directions,自己意会为什么这个是作弊吧)
哪些行为不是作弊,甚至受到鼓励?
1.帮助他人在如何使用各种工具方面,包括但不限于系统、网络、编译器、调试器。
2.帮助他人关于高层次的设计问题(注:Helping others with high-level design issues only,比方说,探讨整个问题的框架,是允许的。如果需要讨论的问题要用代码来描述,那就不是高层次的设计问题)
3.帮助他人关于高层次的debug(Helping others with high-level (not code-based) debugging. 例如:你有一个流程图,但思路受阻,可以请教他人,他人指出你流程图中有一个流程不对)
4.向老师和助教请求帮助。使用老师或助教或课程提供的代码和页面。
特别地,在PPT中,还特别提到This is OK,Googling a man page for fputs。如果你某个函数不会用,是可以去查找它的用法的。
违规的后果
(注:截取几条)
AIV:Academic Integrity Violation,每个在CMU的大学生如果因为作弊或者诚信问题受到处分会记上一个AIV。
共勉
最后,塞翁失马焉知非福。起码说明我的代码和博客写的还是很好的,能够让大家看得懂。还有就是,很感谢几位支持我的朋友。
推荐几个链接给大家:
About Cheating and Plagiarism的更多相关文章
- EECS 649 Introduction to Artificial Intelligence
EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...
- ICT638 Mobile and App Development
Assessment Cover SheetStudent ID CohortStudent NameProgrammeEnrolledDiploma in Information Technolog ...
- BZOJ2348: [Baltic 2011]Plagiarism
2348: [Baltic 2011]Plagiarism Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 304 Solved: 141[Submit ...
- 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue
Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...
- Cheating sheet for vim
- BZOJ2368 : Modern Art Plagiarism 树同构
枚举$T_1$的树根,然后DP,设$f[i][j]$表示$T_1$的子树$i$是否存在包括i的连通子树与$T_2$的子树$j$同构. 若$j$是叶子,那么显然可以. 若$deg_i<deg_j$ ...
- Luogu P4670 [BalticOI 2011 Day2]Plagiarism 题解
我最近是不是数据结构学傻了啊... 这道题看是1e5,所以复杂度为\(O(nlogn)\)的是完全可以跑过去的,然后看题,要求的对于每个数满足要求的区间的长度之和,我们自然而然的就可以想到用FHQ-T ...
- codeforces796E Exam Cheating
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 【二分法】【尺取法】bzoj2348 [Baltic 2011]Plagiarism
一开始以为死于精度……调了半天发现死于long long…… 一.二分法: #include<cstdio> #include<cstring> #include<alg ...
随机推荐
- 七月SSL行业新闻回顾
大事件一:被泄露的私钥和基于假私钥进行的撤回 上个月,我们报告说Spotify和Cisco在应用程序中捆绑了有效证书的私钥.这些证书将根据基准要求被撤销,但应用程序不是泄露私钥的唯一来源.Koen R ...
- HPU--1280 Divisible
题目描述 给定一个很大的整数,我想知道它能否被9整除. 输入 有t组测试数据,每组数据给定一个整数N不存在前导0.(1 <= t <= 20,1 <= N <= 10^200) ...
- [BZOJ3038]上帝造题的七分钟2 树状数组+并查集
考试的时候用了两个树状数组去优化,暴力修改,树状数组维护修改后区间差值还有最终求和,最后骗了40分.. 这道题有好多种做法,求和好说,最主要的是开方.这道题过的关键就是掌握一点:在数据范围内,最多开方 ...
- JS正则密码复杂度校验之:JS正则匹配半角英文符号
概述 在JS密码校验中常常会遇到密码强度的校验需求,借用一位朋友提问的图,他在工作中遇到的一个比较经典的密码强度校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验 ...
- 关于JS脚本语言的基础语法
JS脚本语言的基础语法:输出语法 alert("警告!"); confirm("确定吗?"); prompt("请输入密码");为弱 ...
- SpringMVC详解(二)------详细架构
通过上篇博客,我们能编写一个 SpringMVC 的入门实例,但是为什么要这样写?这样写有啥好处?通过这篇博客我们会有详细的了解. 本篇博客源码下载链接:http://pan.baidu.com/s/ ...
- centos 7.2 配置Nginx
1.添加资源 添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令(没有换行): rpm -Uvh http://nginx.org/packages/centos/7/noarch ...
- GC选择之CMS 并发标记清除
CMS收集器 Concurrent Markup Sweep 并发标记清除 使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量 算法作用在老年代以及永久区(新生代使用ParNew) -XX: ...
- The C++ Programming Language 学习笔记 第7章 函数
1.关于内联函数(inline) 借用一下书中的例子. inline int fac(int n) { ) ? :n*fac(n-); } inline描述符给编译器一个提示,要求 ...
- webSocket浏览器握手不成功(解决)
websocket与服务端握手会报握手不成功的错误解决方法: 首先是服务端首次收到请求要回报给客户端的报文要做处理多的不说,方法敬上: /// <summary> /// 打包请求连接数据 ...