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。

共勉


最后,塞翁失馬焉知非福。起碼說明我的代碼和博客寫的還是很好的,能夠讓大家看得懂。還有就是,很感謝幾位支持我的朋友。

推薦幾個鏈接給大家:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM