我先描述一下此次事件的具体经过。昨天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的更多相关文章

  1. EECS 649 Introduction to Artificial Intelligence

    EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...

  2. ICT638 Mobile and App Development

    Assessment Cover SheetStudent ID CohortStudent NameProgrammeEnrolledDiploma in Information Technolog ...

  3. BZOJ2348: [Baltic 2011]Plagiarism

    2348: [Baltic 2011]Plagiarism Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 304  Solved: 141[Submit ...

  4. 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue

    Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...

  5. Cheating sheet for vim

  6. BZOJ2368 : Modern Art Plagiarism 树同构

    枚举$T_1$的树根,然后DP,设$f[i][j]$表示$T_1$的子树$i$是否存在包括i的连通子树与$T_2$的子树$j$同构. 若$j$是叶子,那么显然可以. 若$deg_i<deg_j$ ...

  7. Luogu P4670 [BalticOI 2011 Day2]Plagiarism 题解

    我最近是不是数据结构学傻了啊... 这道题看是1e5,所以复杂度为\(O(nlogn)\)的是完全可以跑过去的,然后看题,要求的对于每个数满足要求的区间的长度之和,我们自然而然的就可以想到用FHQ-T ...

  8. codeforces796E Exam Cheating

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. 【二分法】【尺取法】bzoj2348 [Baltic 2011]Plagiarism

    一开始以为死于精度……调了半天发现死于long long…… 一.二分法: #include<cstdio> #include<cstring> #include<alg ...

随机推荐

  1. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据

    前言 最近事情很多,各种你想不到的事情--such as singing and dancing--再加上最近又研究docker上瘾,所以geotrellis看上去似乎没有关注,其实我一直在脑中思考着 ...

  2. WCF项目的架构设计

    本文将介绍以WCF开发项目为主的架构设计,主要从类库的分类和代码的结构. 下面将以一个WCF实例做具体的介绍.此项目底层是一个Windows Service,WCF服务Hosted在此Windows ...

  3. SpringMVC+Mybatis实现的Mysql分页数据查询

    周末这天手痒,正好没事干,想着写一个分页的例子出来给大家分享一下. 这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调函数和事件代理,有兴趣的朋友可以研究一下.后台的实现技术是 ...

  4. HTML中表格

    HTML表格 [表格table] 表格用table表示,表格中的每一行tr表示,一行中的每一列用td表示 th表示的是:表头.表头中的文字,默认为加粗居中.th要放在tr中,用于替换掉td. [tab ...

  5. Eclipse创建Maven项目报错的解决

    报错1:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart 起因:删除一个用quick ...

  6. Selenium对于对话框alert,confirm,prompt的处理

    html 源码: <html>                  <head>                      <title>Alert</titl ...

  7. Appium总结

    运行case前,最好在case前加入等待,以免activity还未关闭,就开始定位或其他操作(如果case总报错,则考虑此问题): swipe效果: Thread.sleep(2000);       ...

  8. 【NO.8】jmeter-场景-上传文件-send-a-file

    简要说就3点: POST请求 Request的参数都写在路径内,不写在表单里 上传的文件写在表单里 只要记住以上3点,也就避免了在设计脚本的时候走弯路.下面具体图文并茂地介绍如何使用Jmeter实现上 ...

  9. vue.js之组件(上篇)

    本文的Demo和源代码已放到GitHub,如果您觉得本篇内容不错,请点个赞,或在GitHub上加个星星! https://github.com/zwl-jasmine95/Vue_test 以下所有知 ...

  10. go环境的安装~

    Golang环境搭建 Golang github地址:https://github.com/golang/go Golang的环境下载:https://golang.org/dl/ 安装过程就是nex ...