Pytanie:
Czy dwie linijki skopiowanego kodu stanowią plagiat?
TheSmartWon
2017-12-07 04:48:24 UTC
view on stackexchange narkive permalink

Skopiowałem (i nie udało mi się zacytować) dwóch wierszy kodu ze źródła OpenJDK dla licencjackiego projektu Struktury danych. Jednak porównanie kodów pokazuje alarmującą wielkość (40%) podobieństwa. Oto porównanie bezpośrednie z moim plikiem.

Na tej podstawie mój profesor chce dać mi -100% na zlecenie, co obniżyłoby ogólna ocena o 15%, prawdopodobnie powodując, że nie zdam egzaminu C-wall (w zależności od tego, jak dobrze sobie radzę na egzaminie końcowym). Z tego powodu (i mojej świadomości) zdecydowałem się odwołać.

Uważam jednak, że większość podobieństw w raporcie pochodzi z mojego skopiowania wierszy 142-152:

  static int hash (int h) {h ^ = (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4);}  

Nie cytowałem tych dwóch wierszy, ale zamierzałem je później usunąć.

W rzeczywistości cała ta funkcja może zostać usunięta bez wpływu w ogóle na program, co skutkuje tym porównaniem plików.

Wtedy tylko linie 114-126 stanowią problem:

  MyEntry<K, V> [] newArr = new MyEntry [newSize]; // Copyfor (int i = 0; i < data.length; i ++) {MyEntry<K, V> e = data [i]; if (e! = null) {dane [i] = null; do {MyEntry<K, V> next = e.next; int j = e.hash% newSize; e.next = newArr [j]; newArr [j] = e; e = następny; } while (e! = null);  

Jednak ten fragment jest mój własny. Napisałem te wiersze bez odwoływania się do HashMap.java i jest to powszechny algorytm tworzenia łańcuchów, który mogę dokładnie wyjaśnić i o którym wiem od lat.

Tak, wiem, że skopiowanie pozostałych dwóch linii zagraża mojej integralności i na początku zmieniłem z 20% na 40%, więc jak mogę to udowodnić?

Nie jestem pewien, jak obronić tę całą sprawę przed Radą ds. Postępowania Studentów, która niewiele wie o programowaniu. Za miesiąc mam przesłuchanie w Radzie. Czy te dwa fragmenty kodu stanowią plagiat całego mojego projektu? Czy -15% do mojej ogólnej oceny jest zadowalająca?

Dodatkowe uwagi:

  • Nasze projekty są dość obszerne, ponieważ nie możemy używać java.util. * (jak ponad 1k wierszy na każdy projekt w 8 dni) i nie skopiowałem żadnego innego kodu. Powiedziałbym, że faktyczna implementacja struktury danych ma zająć tylko około 1/5 czasu spędzonego na projekcie.
  • Ponad 30% uczniów zostało zgłoszonych z powodu naruszenia integralności akademickiej w projektach w ciągu semestru a świeżo upieczony profesor nie wydaje się uważać, że problem stanowi on sam lub jego zadania. Powinienem był złapać ostrzeżenie przed tym ostatnim projektem w tym semestrze ...
Komentarze nie służą do rozszerzonej dyskusji;ta rozmowa została [przeniesiona do czatu] (http://chat.stackexchange.com/rooms/69853/discussion-on-question-by-thesmartwon-does-two-lines-of-copied-code-constitute-p).
To jest ten rodzaj bałaganu, który zmusił mnie do opuszczenia akademii.
Chcę zaznaczyć, że ten element będący przedmiotem sporu jest dosłownie [tutaj] (https://stackoverflow.com/questions/19016928/can-anyone-explain-me-the-logic-behind-this-hash-function) i [tutaj] (https://stackoverflow.com/questions/9335169/understanding-strange-java-hash-function).
@Gryph Istnieje większy spór, patrz czat, o którym mowa powyżej.
Niektóre z nowszych komentarzy sugerują, że nie znasz norm kulturowych dotyczących plagiatu na Zachodzie.Więc nie wiem, czy to może być całkowicie poza bazą, ale jednym z powodów, dla których ktoś może nie znać tutaj norm, jest to, że pochodzą z Azji, np.student zagraniczny lub imigrant, który wrócił do szkoły jako dorosły.Ktoś, kto dorastał w Azji, mógł, co zrozumiałe, wychwycić niektóre z ich kulturowych norm dotyczących plagiatu podczas wczesnej edukacji, które bardzo różnią się od norm zachodnich.To nie pozwoliłoby Ci oderwać się od rzeczywistości, ale może być czynnikiem łagodzącym.
Dziesięć odpowiedzi:
Jack Aidley
2017-12-07 10:44:26 UTC
view on stackexchange narkive permalink

Wydaje się wysoce prawdopodobne, że dokonałeś plagiatu, a jeśli tak jest, lepiej byłoby kontynuować rozpoznanie swojego błędu niż kontynuowanie kłótni.

Patrząc na kod, jest świetny transakcja, która prawdopodobnie została pobrana z pliku HashMap.java. Podejrzewam, że zacząłeś od tego kodu, a następnie zmodyfikowałeś go, aby stworzyć swój kod, lub ściśle przestrzegałeś go jako szablonu podczas pisania własnego. Podświetlone sekcje kodu przejęły część tego, ale inne sekcje również bardzo przypominają inny plik, chociaż z nieco zmienionymi komentarzami i kolejnością.

Jeśli tak jest, to kod, który nam pokazałeś, to nie twoją oryginalną pracą, ale w rzeczywistości plagiatowaną wersją HashMap.java. W dwóch niepołączonych liniach pozostawia dymiący pistolet łącznika, który prawdopodobnie będzie rozstrzygający dla panelu. Twój punkt widzenia, że ​​są one niepotrzebne, w rzeczywistości będzie się liczył przeciwko tobie, ponieważ nie będziesz w stanie wyjaśnić, dlaczego w ogóle tam są. Niezależnie od tego, czy taki był Twój zamiar, czy nie, jest prawdopodobne, że panel (i Twój profesor) zobaczą Twoje zmienione komentarze i zamówienia jako próbę zatarcia śladów i ukrycia plagiatu przed zautomatyzowanymi narzędziami.

Panel jest bardziej skłonny do okazywania pobłażliwości uczniowi, który wydaje się przynajmniej skruszony i przyznaje, że popełnił błąd, niż studentowi, który zaprzecza złemu postępowaniu w obliczu pozornie bardzo mocnych dowodów.

Och, nie zaprzeczam używaniu go jako odniesienia, co jest dozwolone w sylabusie.Twierdzę, że zapomniałem cytować / nie widziałem potrzeby cytowania, ponieważ jestem nowy w środowisku akademickim, zadanie się do tego nadawało i jestem przyzwyczajony do traktowania takich zadań w odniesieniu do najbardziej hobbieckich projektów, które można pożyczyćwolne od kodu GPL, a nie środowisk akademickich, które zabraniają jego używania.Roszczenia, które mój profesor wytoczył przeciwko mnie, dotyczyły jednak tylko MOSS, a nie całości akt, dlatego pytam tylko o dwie linijki.
Właściwie mam dobry powód, żeby zacząć pisać te wersety.Musieliśmy haszować wiele dwóch ciągów znaków (tj. „AB”).Bez pomocniczej funkcji skrótu było dużo kolizji i obawiałem się, że mój kod przekroczy limit czasu w automatycznym ocenianiu, co opóźni rozwój LOT w zależności od tego, jak działa nasza automatyczna równiarka Jenkins.Dodałem to, ponieważ kiedy dowiedziałem się, jak to działa, pomyślałem, że jest fajne, a mój projekt może to wykorzystać.Tak, czuję się teraz skruszona, zdając sobie sprawę, że środowisko akademickie ma inne standardy, które tak naprawdę nie zostały mi wyjaśnione.
@TheSmartWon, Zalecałbym, aby w przyszłości, nawet w przypadku projektów hobbystycznych, w których nie zamierzasz rozpowszechniać kodu, nadal cytować kod, który pożyczyłeś z innego miejsca.Jeśli później zdecydujesz się opublikować lub sprzedać swój kod, bez tych cytatów, możesz zapomnieć, co i skąd pożyczyłeś (i narazić się na naruszenie licencji).
@TheSmartWon 1) MOSS zidentyfikował znacznie więcej niż tylko dwie linie.2) powinieneś wiedzieć, że kopiowanie kodu, który masz napisać samemu, jest oszustwem przy zadaniu, to po prostu zdrowy rozsądek, 3) nie napisałeś tych wierszy, i 4) nie sądzę, że tak naprawdę obawiałeś się przekroczenia limitu czasu.Dla mnie to stwierdzenie pachnie jak próba ukrycia się.
@immibis 1) Spójrz na drugi MOSS w PO.2) Napisałem to sam - korzystając ze źródła i dokonując kilku własnych modyfikacji.3) Zgoda.4) Nie mam powodu, żeby tu kłamać.Myślę jak inżynier (uważałem, że funkcja jest fajna i dobrze ją wykorzystałem!), Więc skorzystałem z niej, a nie student, który próbował oddać „swoją własną pracę”.
@TheSmartWon 1) Ten sam, który identyfikuje 3 dalsze sekcje?2) „używanie źródła i wprowadzanie pewnych modyfikacji” nie oznacza „samodzielnego pisania”.4) Powodem, dla którego kłamiesz, jest unikanie kary.to normalna reakcja, aby zrobić wszystko, co w Twojej mocy, aby wyglądało na to, że nie powinieneś być karany.Inżynier również nie użyłby funkcji tylko dlatego, że „pomyślał, że wygląda fajnie”.Wiesz już również, że zadania muszą być twoją własną pracą;jeśli nie pamiętasz, aby nie oddawać pracy innym ludziom, masz problem.
1) Tak.Porozmawiaj o nich, jeśli chcesz.2) Zgadzam się.Zachęcamy jednak do używania Java API jako szablonu.4) Gdybym próbował uniknąć kary, nie zrobiłbym tego postu.Chcę tego, co sprawiedliwe w oczach środowiska akademickiego.4.2) Nie rozpoznałeś mojej drugiej klauzuli „... a ja [zrozumiałem funkcję] i dobrze ją wykorzystałem”.Inżynierowie cały czas uwzględniają optymalizacje innych osób, szczególnie w OSS!
Oto, gdzie intencja jest tak trudną kwestią, z którą trzeba walczyć, jeśli chodzi o plagiat.Czy oskarżony miał zamiar popełnić plagiat?Wiedząc, że pomysł, cytat, kod należy do innego podmiotu i pomimo znajomości reguł nadal decydujemy się na jego wykorzystanie bez cytowania.Gdyby klasa nigdy nie kładła nacisku na cytowanie kodu (i na podstawie dotychczasowego pytania i komentarzy OP), mogłoby się wydawać, że takich konwencji nigdy nie nauczano, ale wciąż egzekwowano.Jeśli ustalisz regułę bez jej wyjaśniania, jak byłoby to sprawiedliwe, gdyby uczniowie jej nie rozumieli / nie przestrzegali?
@TheSmartWon Nie sądzę, aby poważni programiści OSS byli tak przypadkowi, jak ty, jeśli chodzi o własność intelektualną.Jestem zarówno członkiem Apache Software Foundation, jak i autorem kilku projektów ASF.Aby zostać twórcą, musiałem podpisać umowę prawną, która mówi między innymi: „Oświadczasz, że każdy Twój wkład jest Twoim oryginalnym dziełem” oraz „Oświadczasz, że przesłane przez Ciebie wkłady zawierają pełne szczegóły dowolnej licencji strony trzeciejinne ograniczenie ... o którym jesteś osobiście świadomy i które są powiązane z jakąkolwiek częścią Twojego wkładu. ”
@FrankFYC „wydawałoby się, że takich konwencji nigdy nie nauczano, ale nadal egzekwowano”. Koncepcja „nie oszukuj kopiując cudzą pracę” ** nie jest ** „konwencją” i nie trzeba jej uczyć.Jest to oczywiste (właściwie można je znaleźć w prawie każdym podręczniku akademickim / uniwersyteckim).
@AndreaLazzarotto Nie zgadzam się ze stwierdzeniem, że plagiat jest zły, nieetyczny i powinien zostać ukarany (w niektórych przypadkach surowo).Ale może moje słowa były bardziej zagmatwane niż pouczające.Jeśli roszczenie jest plagiatem z następującymi częściami: wiedza - czy pozwany wiedział, czym jest plagiat, zamiar - i nadal zdecydował się na plagiat, wówczas jury (samorząd studencki) może uznać OP winnego za winnego.Obrona, jaką może przedstawić OP, polega na tym, że obecna definicja plagiatu nie działa dobrze, jeśli chodzi o programowanie komputerowe, a także fakt, że (ciąg dalszy)
Profesor nie domagał się powszechnie stosowanego mechanizmu umożliwiającego studentom cytowanie ich źródeł (np. Bibliografii).Innym argumentem byłoby to, że profesor miał innego członka wydziału obecnego podczas przeglądu ocen, co może stanowić naruszenie FERPA.Innym argumentem jest dość duża liczba zarzutów dotyczących wykroczeń akademickich na zajęciach - co może oznaczać, że profesor nie dołożył starań, aby edukować swoją klasę na temat plagiatu, szczególnie w odniesieniu do cytowań programistycznych.
@FrankFYC Nie zgadzam się na obronę, jest to dość dyskusyjne.Sam studiowałem CS i nigdy nie otrzymaliśmy konkretnego kierunku, aby nie plagiatować.Wiedzieliśmy, że to źle i dobrze pasuje również do kodu.To prawda, jestem w innym kraju i tutaj plagiat jest przestępstwem, więc sytuacja może być nieco inna niż w USA.
@AndreaLazzarotto Dokładnie mój punkt widzenia.Plagiat to poważny zarzut.Ustalenie, czy dana osoba popełniła przestępstwo, nie jest łatwą sprawą.W tym przypadku profesor użył tylko jednego testu, aby określić, czy student dokonał plagiatu.Czy to byłoby sprawiedliwe?Ponadto profesor rzekomo złamał amerykańskie przepisy dotyczące prywatności, pozwalając innemu członkowi wydziału wglądu do oceny studenta.Profesor ma również absurdalnie wysoki odsetek przypadków uczciwości akademickiej na zajęciach.Czy nie zastanawiałbyś się, jak profesor prowadzi zajęcia (ciąg dalszy)
może wpływać na proces podejmowania decyzji przez ucznia?Jeśli wyznaczasz niemożliwe cele, bez względu na dobre intencje, bez środków do osiągnięcia tego w sposób etyczny, ilu z nich zdecydowałoby się na odstępstwo i „oszukiwanie”?Posiadanie tylko jednej osoby, która ma jednostronną władzę decydowania o tym, kto oszukał, jest potencjalnie pełne nadużyć.Na koniec, całkowicie się z tobą zgadzam, plagiat to poważny problem.Ale to nie znaczy, że ktoś ponosi automatycznie winę bez dowodów i dokładnego dochodzenia.Niewinny, dopóki nie udowodni się winy - taki jest amerykański wymiar sprawiedliwości (czasami niedoskonały, ale to wszystko, co mamy).
@PersonX Posiadanie tych cytowań jest również bardzo pomocne, jeśli patrzysz wstecz na swój kod za rok.Całkiem łatwo jest po prostu skopiować i wkleić link, którego szukasz, do komentarza.Daje to również dodatkową korzyść, jeśli chcesz, aby inni uczyli się z Twojego kodu, z którego mogli czytać.
@FrankFYC: w zależności od wielkości klasy, wskaźnik ten nie jest „absurdalnie wysoki”.Oceniam klasę liczącą zwykle kilkanaście osób, a przez większość lat miałem 3 przypadki oczywistego plagiatu (takie, w których uczniowie przepisywali swoje zdania i pomyłki w podstawowych działaniach arytmetycznych).Jeśli w przyszłym roku jeden dodatkowy uczeń zdecyduje się podzielić swoje wysiłki z kolegą z klasy, nagle będzie to niezwykłe wydarzenie?(Sadzimy tych uczniów, nie rzucamy im całej książki za pierwszym razem i niezmiennie ich usprawiedliwieniem jest to, że mają zbyt wiele zadań z innych zajęć, które nie pozostawiają wystarczająco dużo czasu).
Tom van der Zanden
2017-12-07 21:11:30 UTC
view on stackexchange narkive permalink

Moim zdaniem tytuł twojego pytania „czy dwie linijki skopiowanego kodu stanowią plagiat” nie jest do końca trafny.

Myślę, że bardzo trudno będzie ci argumentować, że to nie jest To / nie był plagiat. Podobieństwa między Twoim kodem a HashMap.java nie kończą się na dwóch liniach ani na jednym „wspólnym algorytmie”.

1) Wybrałeś dokładnie taką samą domyślną pojemność i współczynnik obciążenia:

  / ** Musi być potęgą 2 * / private static final int DEFAULT_CAPACITY = 16; / ** Współczynnik obciążenia * / private static final float DEFAULT_LOAD_FACTOR = 0.75f;  

versus

  // Domyślna pojemność początkowa - MUSI być potęgą z dwóch. statyczne końcowe int DEFAULT_INITIAL_CAPACITY = 16; // Współczynnik obciążenia używany, gdy nie został określony w konstruktorze. statyczne końcowe zmiennoprzecinkowe DEFAULT_LOAD_FACTOR = 0,75f;  

W rzeczywistości komentarz „Musi być potęgą 2” już oznacza, że ​​zostałeś złapany na gorącym uczynku, ponieważ w rzeczywistości nie ma powodu, aby wymagać, aby pojemność była potęgą dwóch w twoim kodzie. Fakt, że rozmiar jest potęgą dwójki, jest używany tylko do optymalizacji w wersji kodu HashMap.java, a ta optymalizacja nie jest używana w kodzie. Prawdopodobnie masz szczęście, że komisja prowadząca uczniów nie wie zbyt wiele o programowaniu.

2) Dwie metody get są bardzo podobne:

  public V get (klawisz K) {if (key == null) return null; int hash = key.hashCode ()% data.length; // System.out.printf ("Pobieranie% d% d% s \ n", key.hashCode (), hash, // key.toString ()); for (MyEntry<K, V> e = data [hash]; e! = null; e = e.next) {if (e.hash == hash && (e.getKey () == klucz || key.equals (e. getKey ()))) return e.getValue (); } return null;}  

versus

  public V get (Object key) {if (key == null) return getForNullKey (); int hash = hash (key.hashCode ());
for (Entry<K, V> e = table [indexFor (hash, table.length)]; e! = null; e = e.next) {Object k; if (e.hash == hash && ((k = e.key) == klucz || key.equals (k))) return e.value; } return null;}  

Wydaje się dziwne, że obaj wybraliście dokładnie ten sam, bardzo konkretny sposób porównania kluczy (najpierw porównując skróty, potem wskaźniki kluczy i na końcu using key.equals).

3) ... tak jak put-method:

  public MyEntry<K, V> put (klucz K , Wartość V) {int hash = key.hashCode (); // System.out.printf ("Dodawanie% d% d% s \ n", key.hashCode (), hash, key.toString ()); int i = hash% data.length; // Kolizje dla (MyEntry<K, V> e = data [i]; e! = Null; e = e.next) {if (e.hash == hash && (e.getKey () == klucz || key.equals (e.getKey ()))) {MyEntry<K, V> old = e; e.setValue (wartość); wrócić stary; }} addEntry (hash, key, value, i); return null;}  

versus

  public V put (klucz K, wartość V) {if (key == null) return putForNullKey (wartość); int hash = hash (key.hashCode ()); int i = indexFor (hash, table.length); for (Entry<K, V> e = table [i]; e! = null; e = e.next) {Object k; if (e.hash == hash && ((k = e.key) == klucz || key.equals (k))) {V oldValue = e.value; e.value = wartość; e.recordAccess (this); return oldValue; }} modCount ++; addEntry (hash, klucz, wartość, i); return null;}  

4) ... podobnie jak add i grow-methods:

  void addEntry (int hash, K key, V value, int bucketIndex) {MyEntry<K, V> e = data [bucketIndex];
data [bucketIndex] = new MyEntry<> (hash, key, value, e); keyList.add (klucz); if (size ++ > =reshold) grow ();} / ** * Powiększa tablicę 2x aktualny rozmiar * / private void grow () {int newSize = 2 * data.length; @SuppressWarnings ("unchecked") MyEntry<K, V> [] newArr = new MyEntry [newSize]; // Kopiuj dla (int i = 0; i < data.length; i ++) {MyEntry<K, V> e = data [i]; if (e! = null) {dane [i] = null; do {MyEntry<K, V> next = e.next; int j = e.hash% newSize; e.next = newArr [j]; newArr [j] = e; e = następny; } while (e! = null); }} data = newArr; próg = (int) (newSize * DEFAULT_LOAD_FACTOR);}  

versus

  void addEntry (int hash, K key, V value, int bucketIndex) { Entry<K, V> e = table [bucketIndex]; table [bucketIndex] = new Entry<> (hash, key, value, e); if (size ++ > = threshold) resize (2 * table.length);} void transfer (Entry [] newTable) {Entry [] src = table; int newCapacity = newTable.length; for (int j = 0; j < src.length; j ++) {Entry<K, V> e = src [j]; if (e! = null) {źródło [j] = null; do {Entry<K, V> next = e.next; int i = indexFor (e.hash, newCapacity); e.next = newTable [i]; nowaTabela [i] = e; e = następny; } while (e! = null); }}}  

Oczywiście HashTable jest dość powszechną strukturą danych i istnieje tylko kilka sposobów implementacji danego algorytmu. Jednak dwie skopiowane linie pokazują, że zdecydowanie użyłeś HashTable.java jako punktu wyjścia dla własnej implementacji, a dalsze podobieństwa w projekcie, nielogiczne komentarze i struktura kodu sprawiłyby, że można by sądzić, że wziąłeś coś więcej niż tylko mała „inspiracja” z HashTable.java.

Zauważ, że zarówno twoja, jak i metody put i get używają pętli for do iteracji po połączonej liście, podczas gdy metody grow / transfer używają pętli while do zrobić to samo. Wydaje się dziwne, że oba fragmenty kodu podjęłyby tę samą decyzję niezależnie.

Nasze projekty są dość obszerne, ponieważ nie możemy używać java.util. * (Np. 1k + linii dla każdego projektu za 8 dni) i nie skopiowałem żadnego innego kodu. Powiedziałbym, że faktyczna implementacja struktury danych ma zająć tylko około 1/5 czasu spędzonego na projekcie.

Wydaje się jasne, że nie wolno było używać HashMap.java, i że gdybyś chciał użyć tablicy mieszającej, musiałbyś zaimplementować własną. Kopiując duże części HashMap.java próbowałeś obejść to ograniczenie. „To tylko niewielka część projektu” nie usuwa faktu, że wziąłeś kod, który nie był twoją własną pracą i próbowałeś przedstawić go jako swoją własną (chociaż oczekiwano, że napiszesz to część zadania).

Gdyby zadania były naprawdę nierealistyczne, biorąc pod uwagę przydzielony zakres czasu, lepiej byłoby znaleźć wadliwe rozwiązanie. Gdyby wielu uczniów znalazło nieudane rozwiązanie, profesor mógłby rozważyć możliwość, że zadanie było zbyt trudne. Gdyby plagiat pozostał niezauważony, to profesor mógł (niepoprawnie) stwierdzić, że zadanie było odpowiednio trudne, karając uczniów, którzy (próbowali) wykonać zadanie sprawiedliwie i zgodnie z zasadami.

Kary za plagiat mogą się znacznie różnić w zależności od instytucji. -100% od twojego zlecenia może być ciężkie, ale w naszej uczelni kara mogła wynosić od 0% przy zadaniu, automatyczne niezaliczenie danego kursu do wydalenia ze studiów na 12 miesięcy. Plagiat w większości instytucji jest traktowany podobnie jak oszukiwanie na egzaminie i kary mogą być surowe. Gdyby jedyną karą było otrzymywanie 0% plagiatu przydziału, nie byłoby nic złego w „próbie” plagiatu, jeśli i tak nie powiedzie się zadania bez uciekania się do plagiatu.

Czuję się trochę nieswojo umieszczając w odpowiedzi duże ilości kodu źródłowego (nie wydaje się to być tematem dla środowiska akademickiego), ale wydaje mi się, że jest to jedyny sposób, aby wyjaśnić pytającemu, jak poważne jest kopiowanie (stwierdzenie o„tylko dwie linijki” zdaje się to bagatelizować).
Plus oczywiście niespójność wskazana przez innych, że PO twierdził, że skopiowana część nie została nawet wykorzystana.Częściowo wskazuje to na problem, ponieważ wtedy nie ma sensu, dlaczego jest on uwzględniony w pierwszej kolejności, a jak również wskazano, twierdzenie nie jest nawet prawdziwe, wskazując, że PO nie rozumie kodu.
Tak.Ten uczeń byłby toast, gdyby oddał ten kod na mojej klasie.
Mówiąc bardziej dosadnie, moim zdaniem te przykłady kodu wyglądają jak kopiuj i wklej z niewielkimi zmianami.Za każdym razem, gdy w HashTable jest używana prosta pętla for, kod uczniów również używa jej.Ilekroć używana jest pętla for w stylu iteratora, używa jej również kod uczniów.(pętle z e.next (), nigdy nie spotkałem się z tym stylem poza jdk we współczesnym kodzie).Nawet osobliwy styl pomijania nawiasów klamrowych po jednym wierszu, jeśli kopiowane są instrukcje i pętle.
OP musi mieć świadomość, że Komisja Postępowania Studentów, która nie ma zbytniej wiedzy programistycznej, może zaprosić doświadczonego programistę Java do przeglądu kodu.Gdybym był profesorem, a student utrzymywał, że kod nie pochodzi z HashMap, nalegałbym na ekspertyzę.
Nie zaprzeczam, że mój kod pochodzi z HashMap.java.Zaprzeczam, że „wydaje się jasne, że nie wolno ci było używać HashMap.java” i zdecydowanie twierdzę, że nie wiedziałem, ile z niego mogę wykorzystać, że konieczność cytowania nie została wyjaśniona(Jestem nowy w środowisku akademickim) i że nie próbowałem omijać uczenia się podczas tego zadania, ale zamiast tego postanowiłem nie wymyślać koła na nowo.Uważasz, że nie rozumiem kodu, ale rozumiem.
@TheSmartWon 1) Nieznajomość zasad dotyczących plagiatu prawdopodobnie nie będzie zbyt przekonującym argumentem dla komisji prowadzącej.2) Powiedziano Ci, że nie możesz używać niczego w java.util. *.Dla zewnętrznego obserwatora wygląda na to, że w zasadzie skopiowałeś odpowiednie części źródła java.util.HashMap i nieznacznie je zmodyfikowałeś, bez własnej pracy.Nawet * z * cytatem, który wpędzi cię w kłopoty.3) Czy mam rację, że bierzesz udział w kursie dotyczącym podstawowych struktur danych?W takim przypadku po prostu bierzesz „budowanie koła 101” i odkrywanie koła na nowo jest dokładnie tym, co zamierzasz zrobić.
@TomvanderZanden 1) Generalnie się zgadzam, ale w informatyce (gdzie inżynieria i most naukowy), powiedziałbym, że jest miejsce do dyskusji, zwłaszcza biorąc pod uwagę niejasny program.2) Brak odmowy tutaj.Jeśli jednak miałbym cytat, dlaczego miałoby to wpędzić mnie w kłopoty?Profesor powiedział, że na naszym spotkaniu cytat „mógłby wystarczyć”.3) Tak, biorę udział w kursie dotyczącym podstawowych struktur danych.Jednak odkrywanie na nowo koła NIE jest dokładnie tym, co powinniśmy zrobić, ale raczej musimy wymyślić na nowo koło i stworzyć w pełni funkcjonalny rower z bardzo dokładnym malowaniem i stylizacją.Na zajęciach rozmawiamy tylko o teorii
Oprócz punktów @TomvanderZanden's, jeśli uważasz, że wyprowadzenie kodu z java.util.HashMap bez atrybucji jest dozwolone, być może będziesz musiał wyjaśnić, dlaczego dokonałeś każdej ze zmian, które wprowadziłeś.Na przykład, dlaczego zmieniono komentarz dotyczący parametru „size ()” z dokładnego „Zwraca liczbę mapowań klucz-wartość w tej mapie”.na niejednoznaczne „Zwraca rozmiar tablicy”?
@TheSmartWon W edukacji zawsze można argumentować, że „ktoś już rozwiązał ten problem, po co mam go znowu rozwiązywać?”, Zaczynając od ćwiczeń matematycznych w szkole podstawowej.Nauczyciel też się na ciebie denerwuje, jeśli po prostu skopiujesz rozwiązanie lub użyjesz kalkulatora zamiast obliczać samodzielnie.
@Kapep Całkowicie się z tobą zgadzam, tylko jedna mała rzecz ... „Nawet osobliwy styl pomijania nawiasów klamrowych po jednej linii, jeśli kopiowane są instrukcje i pętle.”: Ten styl nie jest osobliwy, to całkiem normalne.
@AndreaLazzarotto Ok, może dziwne to nie jest właściwe słowo, ale ten styl kojarzy mi się ze starszym kodem, a może kodem Java napisanym przez programistów z tłem w konwencji kodu Java firmy C. Sun sprzed 20 lat mówi się, że należy unikać pomijania nawiasów klamrowych w przypadku instrukcji if, a ja nie.nie znam żadnych nowoczesnych wytycznych w stylu kodu Java, które do tego zachęcają.Myślę, że widziałem tylko podobny styl, w którym cała instrukcja musi znajdować się w jednym wierszu, gdy pominięto nawiasy klamrowe.
Ale jeśli pomyślę o tym jeszcze raz, wskazanie stylów kodowania może być niesprawiedliwe wobec ucznia.Programowanie jest już wystarczająco trudne dla wielu początkujących, a style kodu wymagają pewnego doświadczenia, zanim zrozumiesz zalety jednego stylu nad drugim.Nie można winić uczniów za trzymanie się (przestarzałych) konwencji kodowych bibliotek standardowych.
@Kapep tak, w końcu jedyną ważną rzeczą jest nauczenie uczniów umieszczania otwierającego nawiasu klamrowego w tej samej linii, co if / for / class / cokolwiek.Niektórzy ludzie nalegają na umieszczenie go na nowej linii.Za każdym razem, gdy to się dzieje, szczeniak umiera.:(
@TomvanderZanden Naprawdę, ** naprawdę ** podoba mi się zasady twojej instytucji dotyczące postępowania z plagiatem.Na moim uniwersytecie kara brzmiała jak „zły chłopiec! Nie rób tego!”, Więc zmęczyło mnie próbowanie robienia właściwych rzeczy, podczas gdy wszystkim zdradzało się na sucho, i całkowicie rzuciłem.
Dmitry Savostyanov
2017-12-07 05:58:06 UTC
view on stackexchange narkive permalink

Plagiat to traktowanie cudzej pracy jako własnej. Z tego, co widzę, uznasz czyjąś pracę za swoją. Na swoją obronę podajesz listę stwierdzeń:

  • splagiatowany fragment kodu jest mały
  • splagiatowany fragment kodu nie jest konieczny
  • zadania profesora są trudne
  • profesor jest świeżo upieczonym absolwentem
  • Rada ds. Postępowania Studentów niewiele wie o programowaniu

Nie rozumiem z nich ma znaczenie dla danego zagadnienia. Główne pytanie brzmi: czy wykorzystałeś we własnej pracy cudzą pracę bez odniesień. Jeśli tak, to plagiatowałeś i grozisz konsekwencjami. Naucz się lekcji i nie powtarzaj ponownie błędu.

Nie każdy plagiat jest równy i nie powinien być traktowany jednakowo.Jednolite kary dla wszystkich to zazwyczaj zły pomysł.
Nie wiemy, czy -100% to jedna kara dla wszystkich, ponieważ nie znamy szczegółów innych przypadków plagiatu w tej klasie.
W tym przypadku jest to kara uniwersalna.Zrobił to 3 innym osobom z klasy, które znam.Rozumiem, że dokonałem plagiatu, po prostu nie uważam tego za wielką sprawę i rodzą inne pytania.
@TheSmartWon Komentarz „Po prostu nie uważam tego za wielką sprawę” to bardzo mocny argument przemawiający za dostatecznie poważnymi konsekwencjami, które będą postrzegać jako wielką sprawę w przyszłości.
@PatriciaShanahan Cóż, powtórzę.Nie rozumiem, dlaczego miałoby to być coś wielkiego w prawdziwym świecie.W rzeczywistości nauczyłem się więcej, używając tych dwóch wierszy kodu (nauczyłem się, jak one działają!), Niż gdyby je pomijając.Myślę tylko, że chodzi o to, na co zasługuje mój (niezamierzony) plagiat?
@TheSmartWon W prawdziwym świecie zrozumienie i przestrzeganie zasad licencjonowania to naprawdę wielka sprawa.Włączenie kodu z niezgodnymi zasadami licencjonowania do produktu pracodawcy może prowadzić do poważnych problemów prawnych.
@PatriciaShanahan Zgadzam się, licencjonowanie jest ważne i istnieje kod źródłowy OSS, którego mogę i nie mogę używać podczas pracy dla określonej firmy nad określonym projektem.Chętnie szanuję i korzystam z licencji zarówno w pracy, jak i we własnej pracy.W tym przypadku skopiowałem [kod GPL2] (https://tldrlegal.com/license/gnu-general-public-license-v2), co byłoby całkowicie w porządku, o ile dołączę kopię licencji do mojego projektui udostępnił źródło.Tak się składa, że oba te stwierdzenia są prawdziwe w przypadku mojego projektu.Jednak uniwersytetu to nie obchodzi.
@TheSmartWon Świat akademicki opiera się na udzielaniu kredytów tam, gdzie są one należne._Nie_ nie czerpiesz uznania z prac innych.Dlatego uniwersytet uważa, że to wielka sprawa ...
@TheSmartWon Zawsze będą obowiązywały zasady używania kodu innych osób.Zasady zależą od tego, jak używasz kodu, a także od praw autorskich i licencji kodu.Podczas wykonywania ćwiczenia na studiach zasadą jest uznanie całego kodu, którego nie napisałeś.
W najściślejszym przypadku każdy kod zawierający wiersz z `i ++;` byłby plagiatem, z wyjątkiem pierwszego historycznego użycia tej linii.Mam nadzieję, że to oczywiste, jak absurdalne byłoby, gdyby zostało to potraktowane w ten sposób.Powinna być jasno określona granica, ale nie słyszałem o żadnym ...
Niezależne powielanie @vsz, nie jest plagiatem.Plagiat to celowe kopiowanie cudzej pracy bez odpowiedniej adnotacji.
@vsz Używanie i ++ nie jest plagiatem, chyba że ktoś faktycznie go plagiatuje.Zasadnicze pytanie brzmi: „czy uczeń sam napisał pracę, czy też przekazał pracę innej osoby jako własną”.Stanowisko „tak, skopiowałem dwie linijki, ale to nic wielkiego i jak zamierzasz to udowodnić?”jest niedojrzałe, imho.
Gdyby któryś z moich uczniów skopiował dwa wiersze kodu, które nie są tak naprawdę ważne dla jego pracy, po prostu bym go zignorował.W pełni rozumiem, dlaczego uczeń uważa to za „nic wielkiego”.Właściwie to staram się nauczyć moich uczniów cytowania _less_, np.nie pisać czegoś w rodzaju „Java to język programowania [13]”.Ważne jest, aby wszystkie główne pomysły (które nie są twoimi własnymi) zostały odpowiednio zacytowane i uznane, ale wszystkie te drobne rzeczy, które są powszechnie znane lub jasne, jeśli myślisz o tym przez pięć minut, nie potrzebują źródła.
@aeismail: Łagodna kara zastosowana w tym przypadku z pewnością nie jest zbyt surowa.Podobnie jak w większości przypadków, uniwersytety są zbyt hojne w traktowaniu studentów, którzy plagiatowali lub oszukiwali w inny sposób.Samo nałożenie kary opartej na bieżącym przydziale zamiast przyznania porażki dla całego modułu jest mniej więcej tak łagodne, jak kara za plagiat powinna kiedykolwiek mieć.
@TheSmartWon: ** GPL2 wymaga cytatu ** (to znaczy, gdy mówi się, że musisz wydać swoje dzieło pochodne na tej samej licencji, nie oznacza to „nowej kopii licencji GPL2 od FSF”, ale „licencję otrzymaną wraz zużyty kod, w tym jego identyfikacja autora ”). GPL ma kilka zasad dotyczących edytowania listy autorów podczas wydawania dzieła pochodnego - nie można tego zostawić w spokoju (co zrzuca winę za błędy na oryginalnych autorów), a tynie mogą usuwać z niej ludzi (co pozbawia autorów uznania za ich pracę).** Naprawdę powinieneś przeczytać licencję. **
Frank FYC
2017-12-07 05:44:41 UTC
view on stackexchange narkive permalink

Pytania, które musisz sobie zadać:

  • Czy zacytowałeś swoje źródła?

Chociaż temat plagiatu obejmuje różne dziedziny, nie wszystkie pola są to samo. Pisanie programu to nie to samo, co pisanie eseju. Chociaż oba mają podobne elementy myślenia, gramatyka = tabulatory / spacje, rzeczowniki = przedmioty, przyimki = wskaźniki itp. Funkcjonalnie są różne. Czy w ramach swojego zadania wspomniałeś, że masz sekcje kodu z biblioteki open source? Nawet jeśli nie był to formalny cytat, to może w komentarzach odsyłających do biblioteki?

  • Na ile sposobów osoba może realistycznie zrealizować dany cel?

Jeśli zadanie polegało na zsumowaniu listy liczb całkowitych. Czy byłby to plagiat, gdyby kod 10 programistów użył sumy (obiektu)?

wspólny algorytm tworzenia łańcuchów, który mogę dokładnie wyjaśnić

Tutaj trzeba argumentować, że jest taki moment, w którym dany fragment kodu stał się powszechną informacją, ale trzeba wykazać, że w rzeczywistości jest powszechny. Osoba niebędąca ekspertem nie miałaby podstawowej wiedzy, aby przypuszczać, że to, co mówisz, jest poprawne. Musisz podać przykłady. (Pomyśl o Hello World, kto naprawdę jest jego właścicielem?)

IANAL, ale to wydawałoby się, że samo prawo jest skomplikowane.

Ponad 30% klasy zostało zgłoszonych za naruszenia integralności akademickiej w projektach w ciągu semestru, a świeżo upieczony profesor wydaje się nie myśleć sam lub jego zadania są problemem.

Profesor informatyki nie jest prawnikiem, ale z pewnością potrafi zrozumieć pytania informatyczne i zadać sobie pytanie, czy nie w grę wchodzi złośliwy zamiar. Jeśli roszczenia dotyczące plagiatu można rozwiązać za pomocą prostego dokumentu, w którym cytujesz swoje źródła (biblioteki, projekty open source, repozytoria github), roszczenia powinny spaść.

Wiedza i nauka nie dzieją się w próżni.


Dzięki za to. Jak powiedziałem wcześniej, cytowanie kodu jest dla mnie obce (a programuję od 8 roku życia) i NIE cytowałem (ale POWINIENEM) tych wierszy. Zapomnienie o przytoczeniu dwóch wierszy i popełnienie plagiatu na całym projekcie to jednak dwie różne rzeczy, zwłaszcza w przypadku projektu tej wielkości. Jak byś się do tego odniósł?

Argumentujesz, że obecne testy określające plagiat (takie jak w języku angielskim) nie działają dobrze, jeśli chodzi o programowanie i pisanie skryptów, cytowanie i dokumentowanie źródła są funkcjonalnie różne. W eseju cytowanie ma pokazać, skąd wziął się pomysł. W programie ma to na celu udokumentowanie, w jaki sposób fragment kodu pomoże Ci osiągnąć Twoje cele. Cel zmienia się z „dawania zasługi tam, gdzie jest to spowodowane” na „jak to ma pomóc i co robi”.

Mając to na uwadze, spójrz na „witaj świecie”. Jest to powszechnie znane wprowadzenie do języków programowania. Ale żaden doświadczony programista nie musi tego „cytować”, aby to zrozumieć. Stało się „powszechne” we wszystkich językach. Jednak konkretny kompilator w C, który pozwoli mu sterować ramieniem robota, nie jest na tyle powszechny, aby doświadczony (niezależnie od języka) programista mógł go łatwo rozpoznać, stąd potrzeba dokumentacji. Jednak w świecie Javy do ciebie należałoby zademonstrowanie, że kod, który byłby na tyle „powszechny”, by nie wymagał cytowania.

Jeśli chodzi o samą sprawę, możesz argumentować, że twoje działania nie stanowią tradycyjnych definicji i sprawdzają pod kątem plagiatu. Ale nie oczekuj, że Twoi odbiorcy (koledzy) zrozumieją, biorąc pod uwagę powagę i referencje powoda (twojego profesora). Innym sposobem byłoby argumentowanie, w jaki sposób surowość kary -100% nie jest zgodna z zakresem rzekomego plagiatu. To jest rzekome, nie udowodnione. Dopóki nie zostanie wydana ostateczna ocena, jest otwarta do debaty.

Jeśli uczeń jednostronnie opierając się na plagiacie nie zda egzaminu, powinien zostać odwołany do „wyższego autorytetu” lub przynajmniej rozpatrzony przez panel złożony z osoby posiadające wiedzę (w porównaniu z osobami świeckimi). Stwierdziłeś, że ta klasa ma (moim zdaniem olbrzymi) odsetek roszczeń o plagiat. Chociaż nie mam statystyk potwierdzających moje oświadczenie, 30% jest absurdalnie wysokie. W mojej karierze akademickiej plagiat był rzadkim zjawiskiem. Więc inną kwestią, którą możesz poruszyć, jest to, czy profesor błędnie stosuje koncepcję tradycyjnego plagiatu w dziedzinie, w której jest ona zasadniczo inna.

Kolejnym argumentem, który możesz wysunąć, jest to, że cytowanie kodu nigdy nie było nauczane / podkreślane / oczekiwane przez profesora w klasie. Wcześniej uczono cię, czym jest plagiat, najprawdopodobniej przy pisaniu esejów, ale nigdy nie nauczyłeś, jak ma to zastosowanie do kodowania. Chociaż w tym argumencie może brakować jednej lub dwóch nóg (zwłaszcza w dziedzinie, którą powinieneś już wiedzieć), ale jak rozsądnie byłoby pociągać cię do odpowiedzialności za coś, na co nigdy nie nauczono cię uważać?


Dzięki, to dobra uwaga. Po prostu używa MOSS ze Stanford, tak jak ja podlinkowałem w OP. Nie znam jego odcięcia procentowego podobieństwa, zanim oskarży ludzi.

Taki wykrywacz plagiatu jest narzędziem do uwiarygodnienia, że ​​X został plagiatowany, narzędzie wśród wielu. W żadnym wypadku nie jest to ostateczny test dla określenia plagiatu.

Weź na przykład test za pomocą analizatora oddechu na obecność alkoholu pod wpływem alkoholu, czy jeśli zjadłem nasiona maku i uzyskam wynik pozytywny, czy będą jakieś czynniki łagodzące? Jeśli wszystko, czego używa twój profesor do ustalenia plagiatu, jest narzędziem, zapytaj, czy narzędzia mogą być wadliwe.

Chociaż jest to bardziej retoryka i logika niż programowanie, jestem pewien, że nikt nigdy nie może twierdzić, że program jest perfekcyjnie. (Z wyjątkiem języka COBOL, ponieważ jest w 100% doskonały) Więc jeśli jest to rzeczywiście jedyna miara, której używa twój profesor, jaka jest możliwość fałszywych trafień? Czy byłoby to po prostu niesprawiedliwe ukaranie uczniów, gdyby program ustalił, że oszukiwali?

Mając to na uwadze, przeczytaj podręcznik dla ucznia, jeśli możesz skorzystać z pomocy doradcy akademickiego w trakcie całego procesu. Skontaktuj się również z rzecznikiem praw obywatelskich, jeśli Twoja szkoła go posiada. Biuro to może rozstrzygać takie kwestie, jak ta, jeśli instytucja na to zezwala.

Moim zdaniem panel kolegów (bez wykształcenia prawniczego lub programistycznego) nie byłby najlepiej przygotowany do ustalenia, czy wystąpił plagiat w programowaniu.


Wyjaśnij, czy -100% faktycznie wynosi 0%? A może twój profesor nie tylko daje ci 0% za zadanie, ale także dodatkowo karze cię dodatkową kwotą? To znaczy. A + B + C = 100 (A = 20, B = 20, C = 60), 0% na A oznaczałoby łącznie 80%, a -100% na A oznaczałoby łącznie 40%. - Frank FYC

Następnie nakłada na mnie dodatkowe kary. Nie dostałbym zera za projekt (na który moja ocena mogłaby sobie pozwolić), ale w rzeczywistości moja ogólna ocena jest BARDZIEJ uszkodzona niż 7%, które projekt jest wart. –TheSmartWon

Podstępna sprawa ... (biorąc pod uwagę aktualizację), jeśli tablica uzna na twoją korzyść, nie oznacza to, że profesor będzie traktował cię tak, jak innych studentów, którzy się przeprowadzają Naprzód. Możesz znaleźć się pod jeszcze dokładniejszą obserwacją.


@ user2264247 Spojrzał dziś ze mną na MOSS przez około 5 minut (dokładnie ten, który zamieściłem w OP) i on koncentruje się tylko na tym haszyszu funkcjonować. Nie wiedział nawet, co robi ta funkcja, zanim rozmawialiśmy, więc nie sądzę, żeby wcześniej ją sprawdzał. On i jego koleżanka (nie wiem, dlaczego była w pokoju) stwierdzili, że skoro skopiowałem dwie linijki, mój cały program jest winny plagiatu i że mnie oskarżą. , prawdopodobnie ze względu na dużą liczbę spraw, przez które przechodzą. - TheSmartWon

@FrankFYC Ten kolega i on również publikują razem artykuły i prowadzą kursy towarzyszące. Są dobrymi przyjaciółmi. To tylko jego nazwisko, zarzucające mi „zgłoszenie naruszenia integralności”, ale na pewno podniosę ten punkt. Nie mam pojęcia, co robiła w pokoju, wszyscy shedid szybko odrzuciła wszystkie moje argumenty, których mój profesor inaczej mógłby wysłuchać . Sprawiało jej radość udowodnienie, że się mylę w każdym punkcie, który poruszyłem, było to trochę sadystyczne. Byłem jak kolejny owad uwięziony w ich sieci! - TheSmartWon

Gdyby to były Stany Zjednoczone. Przeczytaj o FERPA. Nie jestem ekspertem, ale przypuszczam, że gdyby pani profesor pozwoliła innemu członkowi wydziału zobaczyć twoje oceny, byłoby to naruszenie. To może być akt, który wybuchnie im w twarz. Jeśli jesteś w Stanach Zjednoczonych, upewnij się, że obaj profesorowie byli w tym samym pokoju, co Ty, kiedy omawiałeś raport.

Zobacz odpowiedź aeismail na pytanie.

Biorąc pod uwagę liczbę innych przypadków, czy mógłbyś przypuszczać, że inny profesor też był w tych przypadkach? Jak w przypadku, drugi profesor był wtajemniczony w ocenę innego ucznia?

Mogą temu zaprzeczyć, ale jeśli więcej niż jeden student twierdzi, że obaj profesorowie byli w pokoju, w efekcie sprawa pozwu zbiorowego (ha, przepraszam za kalambur).

Udokumentuj wszystko i umów się na spotkanie z koordynatorem FERPA na Twojej uczelni (jak wydział, który ma przyjmować Skargi FERPA).

Dzięki za to.Jak powiedziałem wcześniej, cytowanie kodu jest dla mnie obce (a programuję od 8 roku życia) i NIE cytowałem (ale POWINIENEM) tych wierszy.Zapomnienie o przytoczeniu dwóch wierszy i popełnienie plagiatu na całym projekcie to jednak dwie różne rzeczy, zwłaszcza w przypadku projektu tej wielkości.Jak byś się do tego odniósł?
Argumentujesz, że obecne testy mające na celu określenie plagiatu (takie jak w języku angielskim) nie działają dobrze, jeśli chodzi o programowanie i pisanie skryptów.Stopień dokumentacji jest funkcjonalnie różny.W eseju cytowanie ma pokazać, skąd wziął się pomysł.W programie ma to na celu udokumentowanie, w jaki sposób fragment kodu pomoże Ci osiągnąć Twoje cele.Cel zmienia się z „udzielania kredytu tam, gdzie jest to konieczne” na „jak to ma pomóc”.
Mając to na uwadze, spójrz na „witaj świecie”.Jest to powszechnie znane wprowadzenie do języków programowania.Ale żaden doświadczony programista nie musi tego „cytować”, aby to zrozumieć.Stało się „powszechne” we wszystkich językach.Jednak specyficzny kompilator w C, który pozwoli mu sterować ramieniem robota, ** nie ** jest na tyle powszechny, aby doświadczony (niezależnie od języka) programista mógł go łatwo rozpoznać, stąd potrzeba dokumentacji.
Jeśli chodzi o samą sprawę, możesz argumentować, że twoje działania nie stanowią tradycyjnych definicji i nie sprawdzają plagiatu.Ale nie oczekuj, że Twoi odbiorcy (koledzy) zrozumieją, biorąc pod uwagę powagę i referencje powoda (twojego profesora).Innym sposobem byłoby argumentowanie, w jaki sposób surowość kary -100% nie jest zgodna z zakresem rzekomego plagiatu.To jest rzekome, nie udowodnione.
Jeśli uczeń jednostronnie nie zaliczyłby plagiatu, powinien zostać odwołany do „wyższego autorytetu” lub przynajmniej zweryfikowany przez panel kompetentnych osób (w porównaniu z osobami świeckimi).Stwierdziłeś, że ta klasa ma (moim zdaniem olbrzymi) odsetek roszczeń o plagiat.Chociaż nie mam statystyk potwierdzających moje oświadczenie, 30% jest absurdalnie wysokie.W mojej karierze akademickiej plagiat był rzadkim zjawiskiem.Więc inną kwestią, którą możesz poruszyć, jest to, czy profesor błędnie stosuje koncepcję tradycyjnego plagiatu w dziedzinie, w której jest ona zasadniczo inna.
Dzięki, to dobra uwaga.Po prostu używa [MOSS] (http://theory.stanford.edu/~aiken/moss/) ze Stanford, tak jak ja podlinkowałem w OP.Nie znam jego odcięcia procentowego podobieństwa, zanim oskarży ludzi.
Czy twój profesor podał bardziej szczegółowe powody, dla których zostałeś oskarżony o plagiat?Z podanego linku: „W szczególności nadużyciem Mossa jest poleganie wyłącznie na wynikach podobieństwa. […] Ale wyniki z pewnością nie są dowodem plagiatu. Ktoś musi nadal patrzeć na kod”.
Skopiowana funkcja skrótu wydaje mi się jedyną potępiającą rzeczą, ale to dosłownie 2 wiersze rzeczywistego kodu wykonujące czysto matematyczną funkcję.Jeśli porównasz swój plagiat do eseju, to tak jakbyś zapomniał zacytować pojedynczy cytat w całym eseju. W swojej rzeczywistej obronie możesz polegać na niewinnych, dopóki nie udowodnisz im winy, i nie cytować tych kontrapunktów, chyba że faktycznie wskaże je jako powody twojej winy.(tj. haszysz może być niezauważony, więc nie ma powodu, aby dolać paliwa do ognia). Może również wyglądać źle, jeśli przypadkowo przyzna, że uważa MOSS za dowód.
@user2264247 Spojrzał dziś ze mną na MOSS przez około 5 minut (dokładnie ten, który zamieściłem w OP) i skupił się tylko na tej funkcji skrótu.Nie wiedział nawet, co robi ta funkcja, zanim rozmawialiśmy, więc nie sądzę, żeby wcześniej ją sprawdzał.On i jego koleżanka (nie wiem dlaczego była w pokoju) stwierdzili, że skoro przepisałem dwie linijki, cały mój program jest winny plagiatu i że mnie oskarżą.Naprawdę wydawało się, że nie zastanawiali się dwa razy ani nie przejmowali się tym, prawdopodobnie z powodu dużej liczby przypadków, przez które przechodzą.
Tak, bibunal (trybunał dwuosobowy) niekoniecznie musi być bezstronnym sędzią.Zdecydowanie coś, na co warto zwrócić uwagę.
@FrankFYC Ten kolega i on również wspólnie publikują artykuły i prowadzą kursy dla osób towarzyszących.Są dobrymi przyjaciółmi.To tylko jego nazwisko, które oskarża mnie o „zgłoszenie naruszenia uczciwości”, ale na pewno poruszę tę kwestię.Nie mam pojęcia, co robiła w pokoju, wszystko, co robiła, to szybko odrzucała wszystkie moje argumenty, których mój profesor w przeciwnym razie mógłby wysłuchać.Dało jej radość udowodnić, że się mylę w każdej kwestii, którą poruszyłem, było to trochę sadystyczne.Byłem jak kolejny owad uwięziony w ich sieci!
@FrankFYC, aby odpowiedzieć na twoją ostatnią edycję, zarząd decyduje o mojej karze.Mogą ukarać mnie aż do niezaliczenia kursu lub całkowicie zrzec się roszczeń.
Czy profesor ma odwołanie od decyzji komisji?
Jaki jest Twój kraj?
@FrankFYC Dobroć, dzięki za wszelką pomoc.Jestem w USA i nie jestem pewien, jaka jest rola profesora.Przeglądam to teraz.Wiem tylko, że musi przedstawić dowody (pierwszy MOSS, z którym się połączyłem) w biurze prowadzenia studentów i że za dwa dni wyślą mi e-mail ze szczegółami dotyczącymi procesu.
@FrankFYC Właśnie przeczytałem przegląd procesu, przez który przeszedł.Co ciekawe, na etapie spotkania jest napisane: „Nie jest konieczne, aby był z tobą inny wykładowca lub członek personelu jako świadek”.Wydaje się, że jego część raportu kończy się po przesłaniu dokumentów do biura, a biuro załatwia to stamtąd, jak zakładam.
Nie jest konieczne = / = jesteś ** niedozwolony **.Możesz i bardzo go polecam.Znajdź zaufanego członka wydziału, który byłby skłonny ręczyć za Ciebie.Jeśli chodzi o to, że jesteś w USA, to gratuluję, masz teraz możliwość naruszenia FERPA przez danego profesora.
Pozwól nam [kontynuować tę dyskusję na czacie] (http://chat.stackexchange.com/rooms/69821/discussion-between-thesmartwon-and-frank-fyc).
Pozwól nam [kontynuować tę dyskusję na czacie] (http://chat.stackexchange.com/rooms/69825/discussion-between-frank-fyc-and-thesmartwon).
Nat
2017-12-07 21:26:19 UTC
view on stackexchange narkive permalink

Możesz wycofać swoje odwołanie (jeśli to możliwe)

Na pierwszy rzut oka Twój argument wygląda całkiem rozsądnie. Oznacza to, że jeśli skopiowałeś dwa wiersze kodu (zakładając, że taki był dozwolony), ale po prostu nie umieściłeś cytatu lub zapomniałeś go usunąć (jak twierdziłeś), to można to w zasadzie przypisać do uczciwego błędu, na -par z literówką. Taki błąd byłby niefortunny, ale prawie nie zasługiwałby na większą karę.

Jednak, jak zauważyli inni, bliższe przyjrzenie się kodowi sprawia, że ​​wygląda na to, że całkowicie skopiowałeś oryginalny kod, a następnie zszedłeś z drogi próbować zaciemnić ten fakt. To powoduje, że wszelkie współczucie wychodzi przez okno; jeśli już, możesz wypadać zbyt lekko.

Ale jest też twój urok. Sam apel wydaje się być oparty na nieuczciwych przesłankach, podobnie jak to pytanie. Wygląda na to, że okłamujesz radę honorową!

Takie kłamstwo wydaje się być podstawą do dalszych kara. Chodzi o to, że najpierw było oszustwo - na powagę, na którą zwróciłeś uwagę - a następnie także pozornie oszukańcza obrona.

Nie wiem, co mam robić powiem ci. Z jednej strony jest to dość obrzydliwe i mogłoby być lepiej, gdybyś nauczył się teraz swojej lekcji. Ale odpowiadając na to pytanie, zakładając, że starasz się zminimalizować karę, może się wydawać, że możesz chcieć wyjść z apelacji i zostawić rzeczy w spokoju, zamiast ryzykować pogorszenie sytuacji.

Odniesienie : Odnośnie do prawa do nieobciążania samego siebie

W amerykańskim systemie prawnym czasami uważa się, że oskarżeni mogą żądać niewinności bez dalszej kary, jeśli później okaże się, że to roszczenie jest fałszywe. Wynika to z piątej poprawki do Konstytucji Stanów Zjednoczonych, która zapewnia ochronę przed samooskarżeniem.

Zabawne w tym jest to, że jeśli oglądasz wiele programów typu Law-&-Order (jak to robi wielu Amerykanów), możesz być wykorzystany na ideę, że oskarżeni mogą kłamać, że nie są winni bez kary, co można by zastosować w innych sytuacjach przypominających sąd, np. przegląd rady honorowej.

Rzecz w tym, że rady honorowe nie są sądami; prawo do nieobciążania siebie nie ma zastosowania. Więc jeśli kłamiesz w obronie rady honorowej, nadal kłamiesz przed osobami, które będą cię osądzać za to dokładne przewinienie.

Edycja: Poszedłem do fakt -Sprawdzę się w tym punkcie i wydaje się, że Sąd Najwyższy orzekł, że kłamstwo we własnej obronie może zwiększyć wyroki:

Sąd Najwyższy orzekł dziś jednogłośnie, że oskarżeni zajmujący stanowisko fałszywie we własnej obronie mogą zgodnie z konstytucją zostać skazani na dodatkową karę pozbawienia wolności za utrudnianie wymiaru sprawiedliwości.

Decyzja uchyliła orzeczenie federalnego sądu apelacyjnego w Richmond, który orzekł w 1991 r., że Konstytucja zabrania sędziom wyrok wydany zgodnie z federalnymi wytycznymi jako kara za „niedowierzające zaprzeczenie winy pod przysięgą”.

- „Sąd mówi fałszywe zeznanie może przynieść dłuższy wyrok”, NYTimes (1993).

Pozornie oskarżeni mogą więc zostać ukarani za kłamstwo we własnej obronie, nawet w sądach amerykańskich.

Dmitry Grigoryev
2017-12-07 14:56:53 UTC
view on stackexchange narkive permalink

Może nie być wiele rozsądnych algorytmów, które implementują łączenie łańcuchowe, ale istnieją dosłownie miliardy możliwych 32-bitowych algorytmów mieszania. Nie ma sensu twierdzić, że jeden z nich w szczególności jest „powszechnie znany”, że został wydany na licencji GPL lub że miałeś zamiar go usunąć. Gdybyś go usunął , Twoja sprawa wyglądałaby zupełnie inaczej i uważam, że powinieneś domagać się niezależnego powielenia. Na twoim obecnym stanowisku nie sądzę, byś mógł nikogo przekonać, że wybrałeś ten sam algorytm haszujący niezależnie od OpenJDK.

Więc uważam, że najlepszą opcją jest rozpoznanie wykroczenia, a następnie stwierdzenie, że ilość w rzeczywistości plagiatowany kod jest stosunkowo mały, a kara, którą chce nałożyć twój profesor, jest nieproporcjonalna.

einpoklum
2017-12-07 17:02:34 UTC
view on stackexchange narkive permalink

Inne odpowiedzi dotyczyły pytań filozoficznych / moralnych, takich jak „Czy to plagiat?” "Czy to źle?" itp. Ale - uważam, że powinieneś skupić się na praktycznym problemie, którym jest:

Nie jestem pewien, jak się tego bronić całą sprawę przed Radą Postępowania Uczniów.

Więc masz sprawę do sporu ...


Najpierw przeczytaj prawnicze -istotne dokumenty:

  • Przepisy dyscyplinarne uczniów
  • Procedury samorządu uczniowskiego
  • Listy praw zewnętrznych, które oficjalnie obowiązują
  • Dokładne stwierdzenie zarzutów stawianych tobie
  • Precedent - wcześniejsze decyzje rady uczniów w takich sprawach.
  • Protokoły sesji z poprzednich sesji rady uczniów (jeśli są dostępne, mogą nie być case).

Następnie określ, czy możesz być reprezentowany przez kogoś i czy jest to dobry pomysł: Laywer; student prawa; członek wydziału; członka samorządu studenckiego itp. Jeśli masz taką możliwość, powinieneś przynajmniej skonsultować się z jednym z nich (nawet jeśli nie będziesz ich przynosić) - z pewnością mają większe doświadczenie niż ty.

Teraz ustal jeśli naprawdę chcesz się kłócić, „ta część tego, co skopiowałem, nie stanowi plagiatu”. Może mógłbyś przedstawić ten argument, nie wiem. Nawet laikom - jeśli masz wystarczająco dużo czasu (którego możesz nie mieć), możesz być w stanie wyjaśnić, w jaki sposób programy są kompilowane z kodu źródłowego i jak część kodu nie jest tak naprawdę używana. Możesz przedstawić przykłady tego, co wydaje się plagiatem, ale w rzeczywistości jest prawie identycznym kodem napisanym niezależnie przez różne osoby.

Szczerze mówiąc, wątpię, żebyś był daleko do przodu, biorąc pod uwagę okoliczności. Nawet jeśli teoretycznie masz rację (pytanie, którego nie komentuję) i nawet gdybyś mógł to wyjaśnić zarządowi - może nie chcieć słuchać takiej argumentacji.

Z drugiej strony sądzę (bezpodstawnie!), że bardziej przekonującym argumentem może być coś takiego (krótkie podsumowanie):

Bardzo mi przykro z powodu tego, co zrobiłem i nie zaprzeczaj, że było to niedozwolone, niewłaściwe i niemoralne.
Kusiło mnie, aby plagiatować z powodu ABC, które nie usprawiedliwiając mojego zachowania, doprowadziło również 30% klasy do pokusy plagiatu, co sugeruje obiektywny problem oprócz mojej osobistej porażki.
Poprawiłem w sposób XYZ.
W przypadkach C1 i C2, które moim zdaniem są porównywalne, kara była znacznie niższa.
Na koniec chciałbym, aby tablica wziąć pod uwagę moje osobiste okoliczności DEF podczas rozważania tego przypadku.
Podejmę się każdej decyzji podjętej przez zarząd.

i tak to zostawię.

Pytanie brzmi: „czy to plagiat?”a nie „jak bronić swojej sprawy?”Problem, imho, polega na tym, że student nie akceptuje faktu, że był to plagiat i ma tendencję do odrzucania tego jako „nic wielkiego”.Tego stanowiska, imho, nie warto bronić.
@DmitrySavostyanov: OP zadał kilka pytań, a to w tytule nie jest jedyne.Zgadzam się, wydaje się, że próbuje odrzucić to, co zrobił, jako „nic wielkiego”, ale ma dużo czasu, by uporać się z dylematem moralnym i tylko miesiąc na przygotowanie się do przesłuchania.Twierdzę, że na tym powinno się skupić.Mam nadzieję, że pomoże mu to również przestać tańczyć wokół tego, co zrobił.
user83564
2017-12-07 23:20:03 UTC
view on stackexchange narkive permalink

Mam doświadczenie zarówno w nauczaniu (i radzeniu sobie z plagiatem), jak i w patentowaniu oprogramowania / sporze sądowym.

Oceniłem grupy prac domowych, które wskazywały ten sam błąd lub tę samą niedoskonałość. Widziałem uczniów, którzy nie byli w stanie rozpocząć swojego IDE, wymyślając zwięzłe i profesjonalne rozwiązania zadań domowych, w których wszystkie zmienne miały nazwy takie jak „licznik”, „zmiennaA” i „ja”, ale poza tym ich autor wyglądał, jakby już miał 10 lat doświadczenia w tej dziedzinie i oczywiście nie wymaga posiadania tytułu licencjata.

Przypadek patentu na oprogramowanie można sprowadzić do udowodnienia, że ​​pojedyncza linia, taka jak „x = 0”, została splamiona. Obejmuje to motywację do udowodnienia, ludzi (fakt, że firma A przyciągnęła ludzi z firmy B) i stan wiedzy w momencie domniemanego plagiatu (a nie teraz, kiedy proponowane podejście jest dla wszystkich oczywiste). Próby patentowe na oprogramowanie nie są jałowymi dyskusjami na temat tego, jak algorytm Smitha-Watermana działał na kodzie powoda i pozwanego.

W twoim przypadku wygląda na to, że przynajmniej "spojrzałeś" na kod OpenJDK przed uruchomieniem swojego. Niezaprzeczalnym dowodem jest funkcja skrótu: według pana Data i C-3PO prawdopodobieństwo powtórzenia tego przez przypadek wynosi jedno na 67 bilionów miliardów. Jest ponadto jasne, że nie szukałeś funkcji skrótu, ale implementację mapy skrótów. Wyszukiwanie „funkcji skrótu dla ciągów znaków” lub „funkcji skrótu dla ciągów znaków java” nie daje wyniku z OpenJDK.

Gdy zobaczyłeś implementację hashMap w OpenJDK, problem był prosty. Ze wszystkich możliwych sposobów podejścia do hashMap, świadomie lub nie, wybrałeś ten z OpenJDK, ponieważ byłeś strasznie stronniczy.

Twoje komentarze do kodu są bezużyteczne. Komentowanie „długości” jako „długości” dowodzi, że nie zrozumiałeś problemu, a komentowanie miało w tym miejscu jedynie spełnić wymóg oceny. Marnujesz czas równiarki. Prawidłowe byłoby: "hash = hash elementu do przeszukania", "Length: rozmiar tablicy hash" "zwraca pozycję w tablicy hash o określonej długości dla elementu hash h. Nigdy nie przekracza długości minus jeden". Ponadto powiesz „get zwraca wartość w indeksie”, co jest rażąco błędne w przypadku mapy skrótów. Get zwróci wartość z klucza. Mieszanie klucza i indeksu jest „przestępstwem kapitałowym”, jeśli robisz struktury danych.

Mój osąd byłby tutaj „winny”. Nie zastanawiałeś się nad rozwiązaniem, ale wziąłeś już istniejące rozwiązanie i prawdopodobnie wdrożyłeś je niezależnie. Zniweczyło to cel pracy domowej, która miała skłonić cię do myślenia o strukturach danych. Przywołanie źródła OpenJDK tylko uczyniłoby twoją winę bardziej oczywistą (klasyczny przypadek samooskarżenia podczas obrony). To tak, jakby ktoś otrzymał zadanie matematyczne i w końcu cytuje książkę i stronę pokazującą rozwiązanie problemu. Wykonałeś dobrą robotę związaną z wyszukiwaniem, ale celem problemu było sprawienie, byś go rozwiązał.

To świetna odpowiedź.
aeismail
2017-12-07 05:58:53 UTC
view on stackexchange narkive permalink

Zdecydowanie należy sprzeciwić się proponowanej karze, ponieważ wiele instytucji nie dopuszcza takiej kary, jaką chce wymierzyć twój profesor. (Innymi słowy, twój instruktor nie może wystawić ci oceny -100% ani żadnej niższej niż zero za daną część twojej oceny.)

W kwestii kopiowania kodu jako plagiatu, to znacznie bardziej drażliwe twierdzenie. Używanie cudzego kodu jest problemem, ale jeśli tak naprawdę nie ma innego sposobu na zrobienie czegoś, to w jaki sposób możesz zgłosić plagiat? Plagiat nie obejmuje „oczywistych” stwierdzeń. Na przykład nie jest plagiatem, jeśli dwa podręczniki do rachunku różniczkowego rozwiązują całkę za pomocą serii równań w ten sam sposób, ponieważ w zasadzie jest to jedyny sposób, w jaki możesz to zrobić. Z drugiej strony, jeśli napiszesz wokół niego kilka tekstów, to będzie to samo, wtedy popełniłeś plagiat.

Nie sądzę, że „[w większości instytucji] twój instruktor nie może dać ci oceny -100% lub jakiejkolwiek oceny niższej od zera za daną część twojej oceny” jest naprawdę prawdą.Nie sądzę, by było czymś niezwykłym, że kara za plagiat przekracza wartość zadania.
Przepisy „większości instytucji” nie mają znaczenia.W tym przypadku liczą się tylko regulaminy tej instytucji.Członkowie personelu są zwykle świadomi zasad, ale jeśli ta konkretna kara wykracza poza to, co jest dozwolone, można się od niej odwołać (ale nie sam przypadek plagiatu).
Zmieniłem „większość” na „wiele” - ale na pewno warto to sprawdzić.Wiem, że zaproponowałem znaczne zmniejszenie kar i nie mogłem nawet przyznać „0” na egzaminie z powodu oszustwa.
@DmitrySavostyanov: Zdaję sobie sprawę, że polityka innych instytucji jest nieistotna, ale podaję OP powód, dla którego należy rozważyć odwołanie, nawet jeśli przyznał się do plagiatu.(I może argumentować, że plagiat z pewnością nie jest tak poważny, jak przypuszczano, co może mieć znaczenie).
@aeismail: Wydaje mi się, że Twój ostatni komentarz powyżej stanowiłby lepszą odpowiedź niż Twoja.* Jeżeli * kara wyznaczona przez instruktora przekracza to, na co zezwala polityka instytucji, wówczas PO z pewnością powinien się temu sprzeciwić.Jeśli nie (i zdecydowanie powinni się dowiedzieć wcześniej), jedyne, co mogą argumentować, to to, że nie jest to proporcjonalne do powagi wykroczenia, które w każdym przypadku będzie w końcu subiektywnym wezwaniem.
TwoThe
2017-12-07 20:18:47 UTC
view on stackexchange narkive permalink

Plagiat to trudny temat w informatyce, ponieważ istnieje tylko ograniczona liczba fragmentów kodu prowadzących do tego samego wyniku, a tylko jeden z nich można uznać za optymalne rozwiązanie.

faktycznie skopiował kod z bibliotek Java, sugeruje to zarówno sam kod, jak i nazewnictwo zmiennych. Dlatego twoim obowiązkiem byłoby zacytowanie tego we właściwy sposób. Z tego surowego punktu widzenia twój profesor ma rację i prawdopodobnie ma rację także w innych przypadkach, o których wspomniałeś. Jeśli wiele osób popełnia błędy, nadal jest to problem jednej osoby, która popełnia błąd, a nie ta, która go poprawia.

Jeśli jest to etyczne, to jednak zupełnie inny temat.

Podczas programowania złożonych funkcji dobrą praktyką jest nie odkrywanie na nowo koła, a zamiast tego używanie istniejącego, dobrze przetestowanego kodu innych osób. Jednak - jak w artykule, do którego prowadzi łącze - „wymyślenie na nowo koła jest często konieczne w celu obejścia niezgodności licencjonowania oprogramowania”

Jeśli otrzymałeś polecenie, aby nie kopiować istniejącego kodu i nie wykonałeś tego polecenia, problem jest po twojej stronie. Opatentowanie oprogramowania jest poważnym problemem w Stanach Zjednoczonych, kilka mniejszych firm zbankrutowało z tego powodu, większe firmy posiadają pewne patenty tylko po to, aby wykorzystać je do wniesienia pozwu w przypadku pozwu (zobacz Apple kontra Samsung). Zasadniczo patenty na oprogramowanie przekształciły się w rodzaj broni, której można użyć do wyeliminowania niepożądanej konkurencji z rynku. Dlatego ważne jest, aby każdy programista (w Twoim kraju) był w stanie wykryć i obejść takie problemy licencyjne.

Nie znam intencji twojego profesora, ale może być, że on dodał tę klauzulę, ponieważ zdaje sobie sprawę z konsekwencji „kradzieży kodu”, a jego ostra reakcja jest sposobem na nauczenie cię unikania tych problemów w sytuacjach, w których naprawdę by to zaszkodziło.

W innych, nie tak ograniczonych obszarach świata, patenty na oprogramowanie lub „plagiat”, jak w twoim przypadku, stanowią znacznie mniejszy problem. Oznacza to, że w innych krajach Twoja praca mogłaby zostać potraktowana inaczej, niektórzy mogli nawet zmniejszyć Twoje punkty za niepoprawne kopiowanie istniejącego kodu (niepotrzebne odkrywanie koła na nowo). Ale nie mieszkasz w „innych krajach”, więc również z etycznego punktu widzenia twój profesor może być surowy, ale nadal ma rację.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...