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 ...
随机推荐
- vuex状态管理,state,getters,mutations,actons的简单使用(一)
之前的文章中讲过,组件之间的通讯我们可以用$children.$parent.$refs.props.data... 但问题来了,假如项目特别大,组件之间的通讯可能会变得十分复杂... 这个时候了我们 ...
- Eclipse中tomcat配置
配置这两个东西 tomcat,在eclipse中启动 tomcat 才会可以访问 来自为知笔记(Wiz)
- 【head first python】2.共享你的代码 函数模块
#coding:utf-8 #注释代码! #添加两个注释,一个描述模块,一个描述函数 '''这是nester.py模块,提供了一个名为print_lol()的函数, 这个函数的作用是打印列表,其中可能 ...
- Java微信公众平台开发之扫码支付模式一
官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了大体过程:先扫码(还没有确定实际要支付的金额),这个码是商品的二维码,再生 ...
- shell 变量的使用
变量定义 name="xiaoming"; age=12: 变量名和等号之间不能有空格,否则会报错,同时变量名的命名和其他语言的命名规则基本一样 首个字符必须为字母(a-z,A-Z ...
- MySQL登录汇总
--MySQL登录汇总 --------------------2014/5/17 1. ERROR 1045错误ERROR 1045 (28000): Access denied for user ...
- 腾讯SNG电面
第一次电面. 前半段基本闲聊,问题也记得不太清楚了. 自我介绍. 为什么想去上海工作?除了职业方面有其他原因吗?我猜出来面试官想问私人问题了,你真的可以直接问的,拐弯抹角了好久...有什么爱好.特长. ...
- .Net Core下通过Proxy 模式 使用 WCF
.NET Core下的WCF客户端也是开源的,这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NET Core下如何通过Proxy 消费 ...
- 老司机和你深聊 Kubenertes 资源分配之 Request 和 Limit 解析
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 Kubernetes是一个容器集群管理平台,Kubernetes需要统计整体平台的资源使用情况,合理地将资源分配 ...
- Maven详解(二)------ Maven的安装配置
1.下载 Maven ①.官网下载地址:http://maven.apache.org/download.cgi ②.百度云盘:http://pan.baidu.com/s/1eS1NVYa 密码:9 ...