Domanda:
Due righe di codice copiato costituiscono un plagio?
TheSmartWon
2017-12-07 04:48:24 UTC
view on stackexchange narkive permalink

Ho copiato (e non ho citato) due righe di codice dalla sorgente OpenJDK per un progetto di strutture dati universitarie. Tuttavia, il confronto del codice mostra una quantità allarmante (40%) di somiglianza. Ecco il confronto fianco a fianco con il mio file.

Sulla base di questi motivi, il mio professore vuole assegnarmi un -100% sull'incarico, che porterebbe il mio voto complessivo del 15% totale, probabilmente inducendomi a non fare il C-wall (a seconda di come riesco nell'esame finale). Per questo motivo (e di mia coscienza), ho deciso di fare appello.

Tuttavia, credo che la maggior parte delle somiglianze nel rapporto derivi dalla mia copia delle righe 142-152:

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

Non ho citato queste due righe, ma avevo intenzione di cancellarle in seguito.

In effetti, l'intera funzione può essere rimossa senza influire affatto sul programma, il che si traduce in questo confronto di file.

Quindi, solo le righe 114-126 sono un problema:

  MyEntry<K, V> [] newArr = new MyEntry [newSize]; // Copyfor (int i = 0; i < data.length; i ++) {MyEntry<K, V> e = data [i]; se (e! = null) {data [i] = null; fai {MyEntry<K, V> next = e.next; int j = e.hash% newSize; e.next = newArr [j]; newArr [j] = e; e = successivo; } while (e! = null);  

Tuttavia, questo frammento è mio. Ho scritto queste righe senza fare riferimento a HashMap.java, e questo è un algoritmo comune per il concatenamento che posso spiegare a fondo e che conosco da anni.

Sì, so che il fatto di aver copiato le altre due righe compromette la mia integrità e ho trasformato il 20% in 40% per cominciare, quindi come posso dimostrarlo?

Non sono sicuro di come difendere l'intero caso davanti a un comitato per la condotta degli studenti che sa molto poco di programmazione. La mia udienza nel consiglio è tra un mese. Questi due frammenti di codice costituiscono un plagio dell'intero progetto? È -15% al ​​mio voto complessivo equo?

Note a margine:

  • I nostri progetti sono piuttosto vasti dato che non ci è permesso usare java.util. * (come 1k + righe per ogni progetto in 8 giorni) e non ho copiato nessun altro codice. Direi che l'effettiva implementazione della struttura dei dati dovrebbe richiedere solo circa 1/5 del nostro tempo speso per progetto.
  • Oltre il 30% della classe è stato segnalato per violazioni dell'integrità accademica sui progetti nel semestre, e il professore neolaureato non sembra pensare che il problema siano lui o i suoi compiti. Avrei dovuto cogliere l'avvertimento prima di questo ultimo progetto del semestre ...
I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (http://chat.stackexchange.com/rooms/69853/discussion-on-question-by-thesmartwon-does-two-lines-of-copied-code-constitute-p).
Questo è il tipo di pasticcio che mi ha fatto lasciare il mondo accademico.
Voglio sottolineare che questo pezzo controverso è letteralmente [qui] (https://stackoverflow.com/questions/19016928/can-anyone-explain-me-the-logic-behind-this-hash-function) e [qui] (https://stackoverflow.com/questions/9335169/understanding-strange-java-hash-function).
@Gryph C'è una disputa più grande, vedere la chat a cui si fa riferimento sopra.
Alcuni dei commenti più recenti suggeriscono che non hai raccolto le norme culturali sul plagio in Occidente.Quindi non so se questo potrebbe essere completamente fuori base, ma uno dei motivi per cui qualcuno potrebbe non conoscere le norme qui è se provengono dall'Asia, ad es.uno studente internazionale o un immigrato che è tornato a scuola da adulto.Qualcuno che è cresciuto in Asia potrebbe comprensibilmente aver preso alcune delle loro norme culturali sul plagio durante la loro prima educazione, che sono molto diverse dalle norme occidentali.Questo non ti toglierebbe dai guai, ma potrebbe essere un fattore attenuante.
Dieci risposte:
Jack Aidley
2017-12-07 10:44:26 UTC
view on stackexchange narkive permalink

Sembra molto probabile che tu abbia plagiato e, in tal caso, faresti meglio a procedere riconoscendo il tuo errore piuttosto che continuare a discutere.

Guardando il tuo codice, c'è un ottimo affare che sembra essere stato preso dal file HashMap.java. Sospetto fortemente che tu abbia iniziato con questo codice e poi lo abbia modificato per produrre il tuo codice, o lo abbia seguito da vicino come modello durante la scrittura del tuo. Le sezioni di codice evidenziate hanno raccolto alcune di queste, ma anche altre sezioni assomigliano molto all'altro file, sebbene con commenti e ordinamento leggermente alterati.

In questo caso, il codice che ci hai mostrato è non il tuo lavoro originale ma in realtà una versione plagiata di HashMap.java. Lasciando nelle due linee che sono scollegate è una pistola fumante del collegamento che probabilmente sarà conclusiva per il pannello. Il tuo punto di vista che non sono necessari in realtà conterà contro di te perché non sarai in grado di spiegare perché sono lì. E che questo fosse il tuo intento o meno, è probabile che il pannello (e il tuo professore) vedrà i tuoi commenti e ordini modificati come un tentativo di coprire le tue tracce e nascondere il tuo plagio da strumenti automatici.

È più probabile che il panel mostri clemenza nei confronti di uno studente che sembra almeno essere contrito e riconosce di aver commesso un errore, rispetto a uno studente che nega di aver commesso un errore di fronte a prove apparentemente molto forti.

Oh, non sto negando di usarlo come riferimento, cosa consentita nel programma.La mia affermazione è che ho dimenticato di citare / non ho visto la necessità di citare, perché sono nuovo nel mondo accademico, l'incarico si prestava ad esso e sono abituato a trattare incarichi come questo per quanto riguarda i progetti più hobbiest che possono prendere in prestitoliberamente dal codice GPL, non da quelli accademici che ne vietano l'uso.Le affermazioni mosse dal mio professore contro di me, tuttavia, puntavano solo al MOSS, non al fascicolo nel suo insieme, quindi è per questo che chiedo solo le due righe.
In realtà ho una buona ragione per scrivere quelle righe per cominciare.Abbiamo dovuto eseguire l'hashing di molte stringhe di due caratteri (ad esempio "AB").Senza la funzione hash ausiliaria, c'erano molte collisioni e temevo che il mio codice sarebbe scaduto nella valutazione automatica, il che avrebbe ritardato lo sviluppo molto in base a come funziona il nostro selezionatore Jenkins automatizzato.L'ho incluso perché una volta imparato come funzionava, pensavo che fosse bello e il mio progetto avrebbe potuto usarlo.Sì, ora mi sento contrito, realizzando che il mondo accademico ha standard diversi, che in realtà non mi erano stati chiariti.
@TheSmartWon, Suggerirei che in futuro, anche per progetti hobbistici in cui non si intende diffondere il codice, si dovrebbe comunque citare codice preso in prestito da altrove.Se in seguito decidi di pubblicare o vendere il tuo codice, senza queste citazioni, potresti dimenticare cosa è stato preso in prestito e da dove (e corri il rischio di violare la licenza).
@TheSmartWon 1) Il MOSS ha identificato molto di più di due sole righe.2) dovresti sapere che copiare il codice che sei destinato a scrivere da solo è barare su un compito, è solo buon senso, 3) non hai scritto quelle righe e 4) Non credo che tu abbia effettivamente avuto paura del timeout.Per me quell'affermazione puzza come un tentativo di copertura.
@immibis 1) Guarda il secondo MOSS nell'OP.2) L'ho scritto io stesso - usando una fonte e apportando alcune delle mie modifiche.3) Concordato.4) Non ho motivo di mentire qui.Penso come un ingegnere (pensavo che la funzione fosse interessante e di averla usata bene!), Quindi l'ho usata, non uno studente che cercava di consegnare "il proprio lavoro".
@TheSmartWon 1) Lo stesso che identifica 3 ulteriori sezioni?2) "usare una fonte e apportare alcune modifiche" non è "scriverla da soli".4) La tua ragione per mentire è cercare di evitare la punizione.è una risposta normale fare tutto il possibile per far sembrare che non si debba essere puniti.Un ingegnere inoltre non userebbe una funzione solo perché "pensava che fosse interessante".Sai anche già che gli incarichi devono essere il tuo lavoro;se non riesci a ricordarti di non consegnare il lavoro di altre persone, allora hai un problema.
1) Sì.Parla di loro se lo desideri.2) Sono d'accordo.Tuttavia, siamo incoraggiati a utilizzare l'API Java come modello.4) Se stavo cercando di evitare la punizione, non avrei fatto questo post.Voglio ciò che è giusto agli occhi del mondo accademico.4.2) Non sei riuscito a riconoscere la mia seconda clausola "... e io [comprendevo la funzione] e ne facevo un buon uso".Gli ingegneri includono sempre le ottimizzazioni di altre persone, specialmente in OSS!
Qui è dove l'intento è un problema così difficile da affrontare quando si tratta di plagio.L'imputato intendeva plagiare?Sapendo che un'idea, una citazione, un codice, appartiene ad un'altra entità, e pur conoscendo le regole decide comunque di utilizzarla senza citazione.Se la classe non ha mai sottolineato la citazione del codice (e sulla base della domanda e dei commenti di OP fino a quel momento) sembrerebbe che tali convenzioni non siano mai state insegnate ma comunque applicate.Se imposti una regola senza spiegarla, come sarebbe giusto se gli studenti non la capissero / non la seguissero?
@TheSmartWon Non credo che i programmatori OSS seri siano neanche lontanamente casuali come te sulla proprietà intellettuale.Sono sia un membro della Apache Software Foundation che un collaboratore di un paio di progetti ASF.Per diventare un committer, ho dovuto firmare un accordo legale che dice, tra le altre cose, "Dichiari che ciascuno dei tuoi contributi è una tua creazione originale" e "dichiari che i tuoi contributi includono i dettagli completi di qualsiasi licenza di terze parti oaltre restrizioni ... di cui sei personalmente a conoscenza e che sono associate a qualsiasi parte dei tuoi contributi. "
@FrankFYC “sembrerebbe che tali convenzioni non siano mai state insegnate ma comunque applicate” il concetto di “non barare copiando il lavoro di altre persone” ** non è ** una “convenzione” e non ha bisogno di essere insegnato.È ovvio (in realtà, si trova praticamente in qualsiasi regolamento accademico / universitario).
@AndreaLazzarotto Non sono in disaccordo con l'affermazione che il plagio è sbagliato, non etico e dovrebbe essere punito (in alcuni casi, severamente).Ma forse le mie parole erano più confuse che illuminanti.Se il reclamo qui è un plagio con le seguenti parti: conoscenza - l'imputato sapeva cos'è il plagio, intento - e ha comunque deciso di plagiare, la giuria (consiglio studentesco) può ritenere OP colpevole come accusato.La difesa che OP può avanzare è che l'attuale definizione di plagio non funziona bene quando si tratta di programmazione per computer, così come il fatto che (continua)
Un meccanismo comunemente usato per consentire agli studenti di citare le proprie fonti (una bibliografia per esempio) non è stato richiesto dal professore.Un altro argomento sarebbe che il professore avesse un altro membro della facoltà presente durante le revisioni dei voti, una possibile violazione della FERPA.Un altro argomento è il numero piuttosto elevato di affermazioni di cattiva condotta accademica nella classe - di cui può segnalare che il professore non ha compiuto sforzi nell'educare la sua classe sul plagio specificamente sulle citazioni di programmazione.
@FrankFYC Non sono d'accordo sulla difesa, è abbastanza discutibile.Io stesso ho studiato CS e non ci è mai stata data una direzione specifica per non plagiare.Sapevamo che era sbagliato e si applica bene anche al codice.Certo, sono in un paese diverso e qui il plagio è un reato penale, quindi la situazione potrebbe essere leggermente diversa rispetto agli Stati Uniti.
@AndreaLazzarotto Esattamente il mio punto.Il plagio è un'accusa seria.Determinare se una persona ha commesso o meno un crimine non è cosa facile.In questo caso, il professore ha utilizzato un solo test per determinare se lo studente ha plagiato o meno.Sarebbe giusto?Inoltre, il professore avrebbe infranto le leggi sulla privacy degli Stati Uniti consentendo a un altro membro della facoltà di vedere il voto dello studente.Il professore ha anche un tasso assurdamente alto di casi di integrità accademica in classe.Non ti chiederesti come il professore sta insegnando alla classe (continua)
può influenzare il processo decisionale dello studente?Se ti fissassi obiettivi impossibili, non importa quanto ben intenzionati, senza un mezzo per raggiungerlo eticamente, quanti deciderebbero di deviare e "imbrogliare"?Avere solo una persona che ha il potere unilaterale di determinare chi ha imbrogliato è potenzialmente pieno di abusi.Infine, e sono assolutamente d'accordo con te, il plagio è un problema serio.Ma ciò non significa che qualcuno sia automaticamente colpevole senza prove e un'indagine approfondita.Innocente fino a prova contraria: questo è il sistema giudiziario americano (imperfetto a volte, ma è tutto ciò che abbiamo).
@PersonX È anche molto utile avere quelle citazioni se guardi indietro al tuo codice tra un anno.È abbastanza facile copiare e incollare il link che stai guardando in un commento.Offre anche il vantaggio aggiuntivo se si desidera che gli altri imparino dal codice da cui leggere.
@FrankFYC: a seconda delle dimensioni della classe, tale tasso non è "assurdamente alto".Sono un selezionatore per una classe di solito una dozzina di persone e la maggior parte degli anni ho avuto 3 casi di ovvio plagio (quelli in cui gli studenti hanno copiato a vicenda le frasi e gli errori nell'aritmetica di base).Se l'anno prossimo uno studente in più decidesse di dividere i propri sforzi con un compagno di classe, all'improvviso sarebbe un evento straordinario?(Facciamo sedere quegli studenti, non lanciamo loro il libro intero la prima volta, e invariabilmente la loro giustificazione è che hanno troppi compiti da altre classi che non lasciano abbastanza tempo.)
Tom van der Zanden
2017-12-07 21:11:30 UTC
view on stackexchange narkive permalink

Il titolo della tua domanda "due righe di codice copiato costituiscono un plagio", non è esattamente accurato, secondo me.

Penso che ti sarà molto difficile sostenere che questo non è Non / non era plagio. Le somiglianze tra il tuo codice e HashMap.java non finiscono su due righe o su un unico "algoritmo comune".

1) Hai scelto la stessa identica capacità predefinita e lo stesso fattore di carico:

  / ** Deve essere una potenza di 2 * / private static final int DEFAULT_CAPACITY = 16; / ** Il fattore di carico * / private static final float DEFAULT_LOAD_FACTOR = 0.75f;  

contro

  // La capacità iniziale predefinita - DEVE essere una potenza di due. int finale statico DEFAULT_INITIAL_CAPACITY = 16; // Il fattore di carico utilizzato quando nessuno è specificato nel costruttore. static final float DEFAULT_LOAD_FACTOR = 0.75f;  

In effetti, il commento "Deve essere una potenza di 2" significa già che sei colto in flagrante, perché, in effetti, c'è nessuna buona ragione per richiedere che la capacità sia una potenza di due nel codice. Il fatto che la dimensione sia una potenza di due viene utilizzato solo per un'ottimizzazione nella versione HashMap.java del codice e questa ottimizzazione non viene utilizzata nel codice. Probabilmente sei fortunato che il consiglio di condotta dello studente non sappia molto di programmazione.

2) I due metodi get sono molto simili:

  public V get (K key) {if (key == null) return null; int hash = key.hashCode ()% data.length; // System.out.printf ("Recupero di% 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 () == key || key.equals (e. getKey ()))) return e.getValue (); } return null;}  

rispetto

  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) == key || key.equals (k))) return e.value; } return null;}  

Sembra strano che entrambi abbiate scelto esattamente lo stesso modo molto specifico per fare il confronto delle chiavi (prima confrontando gli hash, poi i puntatori delle chiavi e infine using key.equals).

3) ... così come il put-method:

  public MyEntry<K, V> put (K key , Valore V) {int hash = key.hashCode (); // System.out.printf ("Aggiunta di% d% d% s \ n", key.hashCode (), hash, key.toString ()); int i = hash% data.length; // Collisioni per (MyEntry<K, V> e = data [i]; e! = Null; e = e.next) {if (e.hash == hash && (e.getKey () == key || key.equals (e.getKey ()))) {MyEntry<K, V> old = e; e.setValue (valore); tornare vecchio; }} addEntry (hash, key, value, i); return null;}  

contro

  public V put (K key, V value) {if (key == null) return putForNullKey (value); 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) == key || key.equals (k))) {V oldValue = e.value; e.value = valore; e.recordAccess (this); return oldValue; }} modCount ++; addEntry (hash, key, value, i); return null;}  

4) ... come lo sono i metodi add e grow :

  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 (chiave); if (size ++ > = threshold) grow ();} / ** * Aumenta l'array 2x dimensione corrente * / private void grow () {int newSize = 2 * data.length; @SuppressWarnings ("unchecked") MyEntry<K, V> [] newArr = new MyEntry [newSize]; // Copia per (int i = 0; i < data.length; i ++) {MyEntry<K, V> e = data [i]; se (e! = null) {data [i] = null; fare {MyEntry<K, V> next = e.next; int j = e.hash% newSize; e.next = newArr [j]; newArr [j] = e; e = successivo; } while (e! = null); }} data = newArr; soglia = (int) (newSize * DEFAULT_LOAD_FACTOR);}  

rispetto a

  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]; se (e! = null) {src [j] = null; do {Entry<K, V> next = e.next; int i = indexFor (e.hash, newCapacity); e.next = newTable [i]; newTable [i] = e; e = successivo; } while (e! = null); }}}  

Ovviamente, una tabella hash è una struttura dati abbastanza comune e ci sono solo tanti modi per implementare un dato algoritmo. Tuttavia, le due righe copiate mostrano che hai sicuramente utilizzato HashTable.java come punto di partenza per la tua implementazione e le ulteriori somiglianze nel design, i commenti illogici e la struttura del codice porterebbero a credere che hai preso più di un semplice una piccola "ispirazione" da HashTable.java.

Nota che sia il tuo che i loro metodi put e get usano un ciclo for per iterare su un elenco collegato, mentre i metodi grow / transfer usano un ciclo while per Fai lo stesso. Sembra strano che entrambi i pezzi di codice prendano la stessa decisione in modo indipendente.

I nostri progetti sono piuttosto vasti poiché non ci è permesso usare java.util. * (Come 1k + righe per ogni progetto in 8 giorni) e non ho copiato nessun altro codice. Direi che l'effettiva implementazione della struttura dati è pensata solo per richiedere circa 1/5 del nostro tempo speso per progetto.

Sembra chiaro che non ti era permesso usare HashMap.java, e che, se avessi voluto usare una tabella hash, avresti bisogno di implementarne una tua. Copiando gran parte di HashMap.java hai cercato di aggirare questa restrizione. "È solo una piccola parte del progetto" non toglie il fatto che hai preso il codice, che non era il tuo lavoro, e hai cercato di farlo passare per tuo (anche se l'aspettativa era che lo scrivessi parte del compito da soli).

Se gli incarichi fossero veramente irrealistici dato il periodo di tempo assegnato, sarebbe stato meglio consegnare una soluzione fallimentare. Se molti studenti si fossero rivelati una soluzione fallimentare, il professore avrebbe potuto considerare la possibilità che il compito fosse troppo difficile. Se il plagio fosse passato inosservato, il professore avrebbe potuto concludere (erroneamente) che il compito era di adeguata difficoltà, penalizzando gli studenti che (tentavano) di completare l'incarico in modo equo e secondo le regole.

Le sanzioni per il plagio possono variare notevolmente a seconda dell'istituzione. -100% sull'incarico potrebbe essere pesante, ma presso il nostro istituto la sanzione potrebbe essere compresa tra lo 0% sull'assegnazione, un fallimento automatico per il corso in questione all'espulsione dai tuoi studi per 12 mesi. Il plagio, nella maggior parte delle istituzioni, è trattato in modo simile all'imbroglio durante un esame e le punizioni potrebbero essere severe. Se l'unica punizione fosse ottenere lo 0% sull'assegnazione plagiata, non ci sarebbe nulla di male nel "provare" a plagiare se fallissi comunque l'incarico senza ricorrere al plagio.

Mi sento un po 'a disagio nel mettere grandi quantità di codice sorgente in una risposta (non sembra in tema per il mondo accademico.SE), ma questo sembra l'unico modo per spiegare a chi fa la domanda quanto sia grave la copia (l'affermazione su"solo due righe" sembra minimizzarlo).
Inoltre, ovviamente, l'incoerenza segnalata da altri che il PO ha affermato che la parte copiata non è stata nemmeno utilizzata.In parte questo indica un problema perché quindi non ha senso perché sia incluso in primo luogo e, come anche sottolineato, l'affermazione non è nemmeno vera, indicando che l'OP non capisce davvero il codice.
Sì.Questo studente sarebbe un brindisi se consegnasse questo codice nella mia classe.
Per dirla in modo più schietto, a mio parere questi esempi di codice sembrano copia e incolla con qualche refactoring minore.Ogni volta che un semplice ciclo for viene utilizzato nella tabella hash, anche il codice degli studenti lo utilizza.Ogni volta che viene utilizzato un ciclo for in stile iteratore, anche il codice degli studenti lo utilizza.(i cicli con e.next (), non ho mai incontrato questo stile al di fuori di jdk nel codice moderno).Anche lo stile peculiare di omettere le parentesi graffe dopo una riga se le istruzioni e i cicli vengono copiati.
L'OP deve essere consapevole del fatto che un comitato per la condotta degli studenti che non ha molta esperienza di programmazione potrebbe essere in grado di invitare un programmatore Java esperto a rivedere il codice.Se fossi il professore e lo studente sostenesse che il codice non è derivato da HashMap, spingerei per una revisione da parte di esperti.
Non nego che il mio codice derivi da HashMap.java.Nego che "sembra chiaro che non ti era permesso usare HashMap.java" e sostengo fermamente che non sapevo quanto potessi usare, che la necessità di citare non è stata chiarita(Sono nuovo nel mondo accademico) e che non ho cercato di aggirare l'apprendimento durante il compito, ma invece ho deciso di non reinventare la ruota.Tu ritieni che non capisca il codice, ma lo so.
@TheSmartWon 1) L'ignoranza delle regole riguardanti il plagio probabilmente non costituirà un argomento molto convincente al consiglio di condotta.2) Ti è stato detto che non puoi usare nulla in java.util. *.Per un osservatore esterno, sembra fortemente che tu abbia praticamente copiato le parti rilevanti del sorgente di java.util.HashMap e le hai leggermente modificate, nessun lavoro tuo.Anche * con * una citazione che ti metterà nei guai.3) Ho ragione, stai seguendo un corso di base sulle strutture dati?In tal caso, prendi fondamentalmente "la costruzione della ruota 101" e reinventare la ruota è esattamente ciò che dovresti fare.
@TomvanderZanden 1) Sono d'accordo in generale, ma nell'informatica (dove ingegneria e scienza si uniscono), direi che c'è un po 'di spazio per discutere, soprattutto visto il programma poco chiaro.2) Nessuna negazione qui.Se avessi una citazione, però, perché mi metterebbe nei guai?Il prof ha detto che una citazione "avrebbe potuto essere sufficiente" nel nostro incontro.3) Sì, sto seguendo un corso di base sulle strutture dati.Tuttavia, reinventare la ruota NON è esattamente ciò che dovremmo fare, ma piuttosto, dobbiamo reinventare la ruota e realizzare una bicicletta completamente funzionale con una verniciatura e uno stile molto precisi.In classe, parliamo solo di teoria
Oltre ai punti @TomvanderZanden's, se pensavi che fosse consentito derivare il tuo codice da java.util.HashMap senza attribuzione, potresti dover spiegare perché hai apportato ciascuna delle modifiche apportate.Ad esempio, perché hai cambiato il commento su `size ()` dal preciso "Restituisce il numero di mappature valore-chiave in questa mappa".all'ambiguo "Restituisce la dimensione dell'array"?
@TheSmartWon Nell'educazione si può sempre sostenere che "qualcuno ha già risolto questo problema, perché dovrei risolverlo di nuovo?", A cominciare dagli esercizi di matematica nella scuola primaria.E anche l'insegnante si arrabbia con te se copi la soluzione o usi una calcolatrice invece di calcolare da solo.
@Kapep Sono totalmente d'accordo con te, solo una piccola cosa ... "Anche lo stile peculiare di omettere le parentesi graffe dopo una riga se vengono copiate dichiarazioni e cicli": quello stile non è peculiare, è abbastanza normale.
@AndreaLazzarotto Ok forse peculiare non è la parola giusta, ma associo questo stile al codice legacy o forse al codice java scritto da programmatori con background nelle convenzioni del codice Java di C. Sun di 20 anni fa ha detto di evitare di omettere le parentesi graffe per le istruzioni if e non lo faccioNon conosco alcuna linea guida moderna sullo stile del codice java che lo incoraggia.Penso di aver visto solo uno stile simile, però, in cui l'intera affermazione deve andare su una singola riga quando vengono omesse le parentesi graffe.
Ma se ci ripenso, potrebbe non essere giusto per lo studente sottolineare gli stili di codifica.La programmazione è già abbastanza difficile per molti principianti e gli stili di codice sono qualcosa in cui devi fare un po 'di esperienza prima di comprendere i vantaggi di uno stile rispetto all'altro.Non si può davvero incolpare gli studenti per attenersi alle convenzioni del codice (obsolete) delle librerie standard.
@Kapep sì, dopotutto l'unica cosa importante è insegnare agli studenti a mettere la parentesi graffa di apertura sulla stessa riga di if / for / class / qualunque.Alcune persone insistono nel metterlo su una nuova linea.Ogni volta che viene fatto, un cucciolo muore.:(
@TomvanderZanden Mi piacciono molto, ** davvero ** le regole del tuo istituto per affrontare il plagio.Alla mia università, la punizione era del tipo "cattivo ragazzo! Non farlo!", Quindi mi sono stancato di cercare di fare la cosa giusta mentre tutti se la passavano liscia, e ho rinunciato del tutto.
Dmitry Savostyanov
2017-12-07 05:58:06 UTC
view on stackexchange narkive permalink

Il plagio è considerare il lavoro di qualcun altro come tuo. Da quello che vedo, hai passato il lavoro di qualcun altro come tuo. A tua difesa, fornisci un elenco di affermazioni:

  • il frammento di codice plagiato è piccolo
  • il frammento di codice plagiato non è necessario
  • i compiti del professore sono difficili
  • il professore si è appena laureato
  • il comitato per la condotta degli studenti sa poco di programmazione

Non riesco a vedere come di loro sono rilevanti per la questione in questione. La domanda centrale è: hai usato il lavoro di qualcun altro nel tuo senza riferimenti. Se l'hai fatto, hai plagiato e stai affrontando le conseguenze. Impara la lezione e non ripetere più l'errore.

Non tutti i plagi sono uguali e non dovrebbero essere trattati allo stesso modo.Le punizioni valide per tutti sono generalmente una cattiva idea.
Non sappiamo se -100% sia una punizione valida per tutti, poiché non conosciamo i dettagli di altri casi di plagio in questa classe.
In questo caso, è una punizione valida per tutti.Lo ha fatto ad altre 3 persone che conosco in classe.Capisco di aver plagiato, semplicemente non lo vedo come un grosso problema e fa sorgere altre domande.
@TheSmartWon Il tuo commento "Non lo vedo come un grosso problema" è un argomento molto forte a favore di una conseguenza sufficientemente grave che lo vedrai come un grosso problema in futuro.
@PatriciaShanahan Bene, lasciami riformulare.Non vedo perché sarebbe un grosso problema nel mondo reale.In realtà ho imparato di più usando queste due righe di codice (ho imparato come funzionano!) Di quanto avrei fatto omettendole.Penso solo che la domanda sia una questione di cosa merita il mio plagio (non intenzionale)?
@TheSmartWon Nel mondo reale, comprendere e conformarsi alle regole di licenza è davvero un grosso problema.Incorporare codice con regole di licenza incompatibili nel prodotto del tuo datore di lavoro potrebbe portare a seri problemi legali.
@PatriciaShanahan Sono d'accordo, la licenza è importante e c'è il codice sorgente OSS che posso e non posso usare mentre lavoro per una certa azienda su un determinato progetto.Rispetto e utilizzo prontamente le licenze sia al lavoro che nel mio lavoro.In questo caso, ho copiato [codice GPL2] (https://tldrlegal.com/license/gnu-general-public-license-v2), il che andrebbe benissimo purché includessi una copia della licenza nel mio progettoe ha rilasciato la fonte.Per coincidenza, entrambe le cose sono vere con il mio progetto.All'università non importa, però.
@TheSmartWon Il mondo accademico si basa sul dare credito dove è dovuto._Non ti prendi il merito delle opere degli altri.Questo è il motivo per cui l'università lo considera un grosso problema ...
@TheSmartWon Ci saranno sempre regole per l'utilizzo del codice di altre persone.Le regole dipendono da come si utilizza il codice, nonché dal copyright e dalle licenze del codice.Quando svolgi un esercizio al college, la regola è di riconoscere tutto il codice che non hai scritto.
Nel caso più rigoroso, ogni codice che contiene una riga con "i ++;" sarebbe un plagio eccetto il primissimo utilizzo storico di questa riga.Spero sia ovvio quanto sarebbe ridicolo se fosse gestito in questo modo.Dovrebbe esserci un confine chiaramente definito, ma non ne ho sentito parlare ...
La duplicazione indipendente di @vsz, non è plagio.Il plagio è la copia intenzionale del lavoro di un altro senza un'adeguata annotazione.
@vsz Usare i ++ non è un plagio, a meno che non lo si plagia effettivamente.La domanda centrale è: "lo studente ha scritto il lavoro da solo o ha passato il lavoro di qualcun altro come proprio".La posizione "sì, ho copiato due righe, ma non è un grosso problema e come lo dimostrerai?"è immaturo, imho.
Se uno dei miei studenti copiasse due righe di codice che non sono veramente importanti per il suo lavoro, lo ignorerei.Posso capire perfettamente perché lo studente considera questo "non un grosso problema".In realtà, cerco di insegnare ai miei studenti a citare _less_, ad es.non scrivere qualcosa come "Java è un linguaggio di programmazione [13]".È importante che tutte le idee principali (che non sono le tue) siano adeguatamente citate e riconosciute, ma tutte quelle piccole cose che sono di conoscenza comune o chiare se ci pensi per cinque minuti non hanno bisogno di una fonte.
@aeismail: La punizione lieve applicata in questo caso non è certamente quella dura.Come nella maggior parte dei casi, le università sono di gran lunga troppo generose nel trattare gli studenti che hanno plagiato o imbrogliato in altri modi.Applicare semplicemente una penalità basata sull'assegnazione corrente invece di dare un errore per l'intero modulo è lieve quanto una penalità per plagio dovrebbe mai ottenere.
@TheSmartWon: ** GPL2 richiede una citazione ** (ovvero, quando dice che devi rilasciare il tuo lavoro derivato con la stessa licenza, non significa "una nuova copia della licenza GPL2 da FSF", ma "la licenza che hai ricevuto conil codice che hai usato, inclusa l'identificazione dell'autore ") La GPL ha diverse regole che si occupano della modifica dell'elenco degli autori quando si rilascia un lavoro derivato - non puoi lasciarlo da solo (il che attribuisce la colpa dei tuoi bug agli autori originali) e tunon può rimuovere le persone da esso (il che sottrae credito agli autori originali per il loro lavoro).** Dovresti davvero leggere la licenza. **
Frank FYC
2017-12-07 05:44:41 UTC
view on stackexchange narkive permalink

Domande che devi porsi:

  • Hai citato le tue fonti?

Sebbene l'argomento del plagio attraversi diversi campi, non tutti i campi sono lo stesso. Scrivere un programma non è la stessa cosa che scrivere un saggio. Sebbene entrambi condividano componenti di pensiero simili, grammatica = tabulazioni / spazi, nomi = oggetti, preposizioni = puntatori, ecc. Funzionalmente sono diversi. Come parte del tuo incarico, hai citato di aver ottenuto le sezioni di codice da una libreria open source? Anche se non fosse una citazione formale, forse all'interno dei commenti che collegano alla libreria?

  • In quanti modi una persona può realizzare realisticamente un determinato obiettivo?

Se l'attività fosse sommare un elenco di numeri interi. Sarebbe un plagio se il codice di 10 programmatori usasse sum (object)?

un algoritmo comune per il concatenamento che posso spiegare a fondo

Qui è dove è necessario sostenere che c'è un punto in cui un dato pezzo di codice è diventato un'informazione comune, ma è necessario dimostrare che è in effetti comune. Un non esperto non avrebbe le conoscenze di base per presumere che ciò che dici sia corretto. Dovresti fornire esempi. (Pensa a Hello World, chi lo "possiede" davvero?)

IANAL, ma sembrerebbe che la legge stessa sia complicata.

Oltre il 30% della classe è stato segnalato per violazioni dell'integrità accademica su progetti nel corso del semestre e il professore neolaureato non sembra pensare se stesso o i suoi incarichi sono il problema.

Un professore di informatica non è un avvocato, ma certamente ha la capacità di comprendere le questioni di informatica e chiedersi se o no è coinvolto un intento dannoso. Se le affermazioni di plagio possono essere affrontate con un semplice documento in cui citi le tue fonti (librerie, progetti open source, repository GitHub), le affermazioni dovrebbero diminuire.

La conoscenza e l'apprendimento non avvengono nel vuoto.


Grazie per questo. Come ho detto prima, citare il codice mi è estraneo (e sto programmando dall'età di 8 anni) e NON ho (ma DOVREBBE) citare quelle righe. Dimenticare di citare due righe e commettere plagio sull'intero progetto sono due cose diverse, però, soprattutto su un progetto di queste dimensioni. Come lo affronteresti?

Sostieni che i test attuali per determinare il plagio (come in inglese) non funzionano bene quando si tratta di programmazione e script, citando e documentando il tuo fonti è funzionalmente diverso. In un saggio, la citazione serve a dimostrare da dove ti è venuta l'idea. In un programma, serve a documentare come lo snippet di codice ti aiuterà a raggiungere i tuoi obiettivi. Lo scopo si sposta da "dare credito dove è dovuto" a "come questo aiuterà e cosa fa".

Con questo in mente, guarda "ciao mondo". È un'introduzione universalmente nota ai linguaggi di programmazione. Ma nessun programmatore esperto ha bisogno di "citarlo" per capirlo. È diventato "comune" in tutte le lingue. Tuttavia, un compilatore specifico in C che gli consentirà di controllare un braccio robotico, non è abbastanza comune da consentire a un programmatore esperto (indipendentemente dalla lingua) di riconoscerlo facilmente, da qui la necessità di documentazione. Nel mondo di Java, tuttavia, spetterebbe a te dimostrare che il codice che ti è stato assegnato sarebbe abbastanza "comune" da non essere considerato come oggetto di citazione.

Per quanto riguarda il caso stesso, puoi sostenere che le tue azioni non costituiscono le definizioni tradizionali e testare il plagio. Ma non aspettarti che il tuo pubblico (compagni di pari) capisca data la gravità e le credenziali dell'attore (il tuo professore). Un'altra strada sarebbe quella di sostenere come la gravità della pena -100% non sia coerente con la portata del presunto plagio. È presunto, non provato. Fino a quando non viene emesso un giudizio definitivo, è aperto al dibattito.

Per fallire unilateralmente uno studente per plagio sarebbe e dovrebbe essere fatto appello a una "autorità superiore" o, almeno, rivisto da un gruppo di individui consapevoli (contro laici). Hai affermato che questa classe ha una (secondo me, enorme) percentuale di affermazioni di plagio. Anche se non ho statistiche per sostenere la mia dichiarazione, il 30% è incredibilmente alto. Nella mia carriera accademica, il plagio è stato un evento RARO. Quindi un altro punto che puoi fare è se il professore stia applicando erroneamente il concetto di plagio tradizionale a un campo in cui è fondamentalmente diverso.

Un altro argomento che puoi fare è che la citazione del codice non è mai stata insegnata / sottolineata / prevista dal professore in classe. Ti è stato insegnato cos'è il plagio prima, molto probabilmente quando si trattava di comporre saggi, ma non ti è mai stato insegnato come si applicava alla codifica. Anche se a questo argomento potrebbero mancare una o due gambe (specialmente nel regno di, dovresti già saperlo), ma come sarebbe ragionevole ritenerti responsabile di qualcosa che non ti è mai stato insegnato a cercare?


Grazie, questo è un buon punto da sollevare. Usa solo il MOSS di Stanford, come ho collegato nell'OP. Non conosco il suo limite di percentuale di somiglianza prima che accusi le persone.

Un rilevatore di plagio come quello è uno strumento per dare credito al fatto che X è stato plagiato, un strumento tra i tanti. Non è affatto un test definitivo per determinare il plagio.

Fai un test di analisi del respiro per le DUI, ad esempio, se mangiassi semi di papavero e risultassi positivo, ci sarebbero fattori attenuanti? Se tutto ciò che il tuo professore usa per determinare il plagio è uno strumento, chiedi se gli strumenti possono essere difettosi.

Sebbene questa sia più retorica e logica che programmazione, sono sicuro che nessuno potrà mai affermare che un programma è perfetta. (Tranne COBOL, perché è perfetto al 100%) Quindi, se è davvero l'unica metrica utilizzata dal tuo professore, qual è la possibilità di falsi positivi? Sarebbe giusto punire ingiustamente gli studenti se un programma stabilisse che hanno imbrogliato?

Detto questo, leggi il manuale dello studente se puoi avere un consulente accademico durante il processo. Contatta anche i servizi del difensore civico se la tua scuola ne ha uno. Questo ufficio può arbitrare questioni come questa se l'istituto lo consente.

A mio parere, un gruppo di studenti (senza background legale o di programmazione) non sarebbe più adatto per determinare se si è verificato un plagio di programmazione.


Chiarisci, -100% è effettivamente 0%? Oppure il tuo professore non solo ti dà uno 0% per l'incarico, ma ti penalizza ulteriormente di un importo aggiuntivo? Cioè A + B + C = 100 (A = 20, B = 20, C = 60), uno 0% su A significherebbe l'80% totale, un -100% su A significherebbe il totale del 40%. - Frank FYC

Mi sta ulteriormente penalizzando di un importo aggiuntivo. Non riceverei uno zero sul progetto (cosa che il mio voto potrebbe permettermi), ma in realtà il mio voto complessivo è stato ferito PIÙ del 7% del valore del progetto. –TheSmartWon

Cosa complicata qui ... (visto l'aggiornamento) se il consiglio trova a tuo favore, questo non significa che il professore ti tratterebbe come farebbe con altri studenti che si trasferiscono inoltrare. Potresti trovarti sotto un'analisi ancora più attenta.


@ user2264247 Ha guardato il MOSS con me per circa 5 minuti oggi (esattamente quello che ho postato nell'OP), e lui concentrato solo su quell'hash funzione. Non sapeva nemmeno cosa facesse la funzione prima di parlare, quindi non credo che l'abbia rivista in precedenza. Lui e la sua collega (idkwhy era nella stanza) hanno dichiarato che, poiché ho copiato due righe, il mio intero programma è colpevole di plagio e che mi avrebbero accusato. , probabilmente a causa del gran numero di casi che affrontano. - TheSmartWon

@FrankFYC Anche lui e quel collega pubblicano articoli insieme e tengono corsi di accompagnamento. Sono buoni amici. È solo il suo nome che mi accusa sul "rapporto di violazione dell'integrità", ma solleverò questo punto di sicuro. Non ho idea di cosa stesse facendo nella stanza, tutto ciò che è successo è stato respingere rapidamente tutti i miei argomenti che il mio professore avrebbe potuto altrimenti ascoltare . Le dava gioia provare che avevo torto su ogni punto che sollevavo, era un po 'sadico. Ero come un altro insetto intrappolato nella loro rete! - TheSmartWon

Se fossero gli Stati Uniti. Ulteriori informazioni su FERPA. Non sono un esperto, ma presumo che se il tuo professore permettesse a un altro membro della facoltà di vedere i tuoi voti, sarebbe una violazione. Questo potrebbe essere l'atto che esplode in faccia. Se risiedi negli Stati Uniti, assicurati di stabilire il fatto che entrambi i professori erano nella tua stessa stanza quando hai discusso il rapporto.

Consulta la risposta di aeismail a una domanda.

Dato il numero di altri casi, presumereste che anche l'altro professore fosse in quei casi? Ad esempio, l'altro professore era al corrente del voto di un altro studente?

Possono negare tutto ciò che vogliono, ma se più di uno studente afferma che entrambi i professori erano nella stanza, ciò sarebbe in effetti, un class action (ah, scusa il gioco di parole).

Documenta tutto e fissa un appuntamento con il coordinatore FERPA della tua università (come un dipartimento organizzato per ricevere Reclami FERPA).

Grazie per questo.Come ho detto prima, citare il codice mi è estraneo (e sto programmando dall'età di 8 anni) e NON ho (ma DOVREBBE) citare quelle righe.Dimenticare di citare due righe e commettere plagio sull'intero progetto sono due cose diverse, però, soprattutto su un progetto di queste dimensioni.Come lo affronteresti?
Si sostiene che i test attuali per determinare il plagio (come in inglese) non funzionano bene quando si tratta di programmazione e scripting.Il grado di documentazione è funzionalmente diverso.In un saggio, la citazione serve a dimostrare da dove ti è venuta l'idea.In un programma, serve a documentare come lo snippet di codice ti aiuterà a raggiungere i tuoi obiettivi.Lo scopo si sposta da "dare credito dove è dovuto" a "come questo aiuterà".
Con questo in mente, guarda "ciao mondo".È un'introduzione universalmente nota ai linguaggi di programmazione.Ma nessun programmatore esperto ha bisogno di "citarlo" per capirlo.È diventato "comune" in tutte le lingue.Tuttavia un compilatore specifico in C che gli consentirà di controllare un braccio robotico, ** non ** è abbastanza comune da consentire a un programmatore esperto (indipendentemente dalla lingua) di riconoscerlo facilmente, da qui la necessità di documentazione.
Per quanto riguarda il caso stesso, puoi sostenere che le tue azioni non costituiscono le definizioni tradizionali e testare il plagio.Ma non aspettarti che il tuo pubblico (compagni di pari) capisca data la gravità e le credenziali dell'attore (il tuo professore).Un'altra strada sarebbe quella di sostenere come la gravità della pena -100% non sia coerente con la portata del presunto plagio.È presunto, non provato.
Per fallire unilateralmente uno studente basato sul plagio sarebbe e dovrebbe essere fatto appello a una "autorità superiore" o almeno, esaminato da un gruppo di individui informati (contro laici).Hai affermato che questa classe ha una (secondo me, enorme) percentuale di affermazioni di plagio.Anche se non ho statistiche per sostenere la mia dichiarazione, il 30% è incredibilmente alto.Nella mia carriera accademica, il plagio è stato un evento RARO.Quindi un altro punto che puoi fare è se il professore stia applicando erroneamente il concetto di plagio tradizionale a un campo in cui è fondamentalmente diverso.
Grazie, questo è un buon punto da sollevare.Usa solo [MOSS] (http://theory.stanford.edu/~aiken/moss/) da Stanford, come ho collegato nell'OP.Non conosco il suo limite di percentuale di somiglianza prima che accusi le persone.
Il tuo professore ha fornito ragioni più specifiche per cui sei stato accusato di plagio?Dal link che hai fornito: "In particolare, è un uso improprio di Moss affidarsi esclusivamente ai punteggi di somiglianza. [...] Ma i punteggi non sono certo una prova di plagio. Qualcuno deve comunque guardare il codice".
La funzione hash copiata mi sembra l'unica cosa dannosa per me, ma sono letteralmente 2 righe di codice effettivo che svolgono una funzione puramente matematica.Se il tuo plagio è paragonato a un saggio, è come dimenticare di citare una singola citazione nell'intero saggio. Nella tua vera difesa, potresti voler fare affidamento su innocenti fino a prova contraria e non citare questi contrappunti a meno che non li indichi effettivamente come motivi della tua colpa.(cioè l'hash potrebbe passare inosservato, quindi non c'è motivo di aggiungere benzina sul fuoco) Potrebbe anche finire per avere un brutto aspetto se ammette inavvertitamente di considerare il MOSS come prova.
@user2264247 Oggi ha guardato il MOSS con me per circa 5 minuti (esattamente quello che ho postato nell'OP) e si è concentrato solo su quella funzione hash.Non sapeva nemmeno cosa facesse la funzione prima di parlare, quindi non credo che l'abbia rivista in precedenza.Lui e il suo collega (idk perché era nella stanza) hanno dichiarato che, poiché ho copiato due righe, tutto il mio programma è colpevole di plagio e che mi avrebbero accusato.Sembrava che non ci pensassero due volte o che gliene importasse, probabilmente a causa del gran numero di casi che attraversano.
Sì, un bibunale (tribunale di due persone) non è necessariamente un giudice imparziale.Sicuramente qualcosa da sottolineare.
@FrankFYC Anche lui e quel collega pubblicano articoli insieme e tengono corsi di accompagnamento.Sono buoni amici.È solo il suo nome che mi accusa sul "rapporto di violazione dell'integrità", ma solleverò questo punto di sicuro.Non ho idea di cosa stesse facendo nella stanza, tutto ciò che ha fatto è stato respingere rapidamente tutte le mie argomentazioni che il mio professore avrebbe altrimenti potuto ascoltare.Le dava gioia dimostrare che avevo torto su ogni punto che sollevavo, era un po 'sadico.Ero come un altro insetto intrappolato nella loro rete!
@FrankFYC per rispondere alla tua ultima modifica, il consiglio decide la mia punizione.Potrebbero penalizzarmi fino al fallimento del corso o rinunciare completamente alle richieste.
Il professore ha ricorso contro la decisione del consiglio?
Inoltre, qual è il tuo paese?
@FrankFYC Bontà, grazie per tutto l'aiuto.Sono negli Stati Uniti e non sono sicuro di quale sia il ruolo del professore che sta andando avanti.Lo sto rivedendo ora.Tutto quello che so è che deve presentare prove (il primo MOSS che ho collegato) all'ufficio di condotta studentesca, e che mi invieranno un'e-mail entro due giorni con ulteriori dettagli sul processo.
@FrankFYC Ho appena letto la panoramica del processo che ha seguito.È interessante notare che, durante la fase della riunione, si dice "Non è necessario avere un altro docente o membro del personale con te come testimone".La sua parte del rapporto sembra finire dopo che ha presentato i documenti all'ufficio, e l'ufficio se ne occupa da lì presumo.
Non necessario = / = ** non ** consentito.Puoi, e lo consiglio vivamente.Trova un membro di facoltà di fiducia che sia disposto a garantire per te.Per quanto riguarda il fatto che sei negli Stati Uniti, congratulazioni, ora hai una possibile violazione della FERPA da parte del professore in questione.
Cerchiamo di [continuare questa discussione in chat] (http://chat.stackexchange.com/rooms/69821/discussion-between-thesmartwon-and-frank-fyc).
Cerchiamo di [continuare questa discussione in chat] (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

Potresti ritirare il tuo ricorso (se possibile)

A prima vista, la tua argomentazione sembra del tutto ragionevole. Questo è, se hai copiato due righe di codice (supponendo che fosse consentito) ma semplicemente non hai incluso una citazione o ti sei dimenticato di rimuoverlo (come hai affermato), allora questo potrebbe essere sostanzialmente attribuito a un errore onesto, su -par con un errore di battitura. Un errore del genere sarebbe sfortunato, ma difficilmente merita una punizione maggiore.

Tuttavia, come altri hanno notato, uno sguardo più attento al codice fa sembrare che tu abbia copiato completamente il codice originale e poi sia andato fuori strada per cercare di offuscare questo fatto. Questo fa sì che ogni simpatia vada fuori dalla finestra; semmai, potresti scendere troppo alla leggera.

Ma allora c'è il tuo fascino. L'appello stesso sembra essere basato su una premessa disonesta, proprio come fa questa domanda. Sembra che tu stia mentendo al consiglio d'onore!

Una simile bugia sembrerebbe essere un motivo per ulteriori punizione. Questo è, prima c'era l'inganno - la gravità di cui ora hai richiamato l'attenzione - e poi anche la difesa apparentemente fraudolenta.

Non so cosa dirti. Da un lato, questo è piuttosto grossolano e potrebbe effettivamente essere meglio se hai imparato la lezione ora. Ma come risposta a questa domanda, supponendo che tu stia cercando di ridurre al minimo la punizione, sembrerebbe che potresti voler uscire dall'appello e lasciare le cose da sole, piuttosto che rischiare di peggiorarle.

Riferimento : Riguardo al diritto di non autoincriminarsi

Nel sistema legale americano, a volte si pensa che gli imputati possano rivendicare l'innocenza senza ulteriori penali se tale affermazione viene successivamente ritenuta falsa. Ciò deriva dal quinto emendamento alla costituzione degli Stati Uniti che garantisce protezione contro l'autoincriminazione.

La parte divertente di questo è che, se guardi molti spettacoli di tipo Law-&-Order (come fanno molti americani), potresti essere usato all'idea che gli imputati possano mentire sul non essere colpevoli senza penalità, cosa che si potrebbe essere inclini ad applicare ad altri contesti simili a quelli di un tribunale, ad es. una revisione del consiglio d'onore.

Il fatto è che i consigli d'onore non sono tribunali; il diritto a non autoincriminarsi non si applica. Quindi, se menti in tua difesa davanti a un consiglio d'onore, stai comunque mentendo davanti alle persone esatte che ti giudicheranno per quell'esatto comportamento scorretto.

Modifica: è andato al fatto -controllato su questo punto, sembra che la Corte Suprema abbia stabilito che mentire in propria difesa può aumentare la pena:

La Corte Suprema ha stabilito oggi all'unanimità che gli imputati criminali che prendono posizione e testimoniano falsamente nella propria difesa possono costituzionalmente essere soggetti a un periodo di reclusione aggiuntivo per aver ostacolato la giustizia.

La decisione ha annullato una sentenza di una corte d'appello federale a Richmond, che ha dichiarato nel 1991 che la Costituzione vieta ai giudici di imporre un'ulteriore condanna ai sensi delle linee guida federali come punizione per "un rifiuto miscredente di colpevolezza sotto giuramento".

- "Court Says False Testimony Can Bring Longer Sentence", NYTimes (1993).

Quindi, a quanto pare, gli imputati possono essere penalizzati per aver mentito a loro difesa anche nei tribunali statunitensi.

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

Potrebbero non esserci molti algoritmi ragionevoli che implementano il concatenamento, ma ci sono letteralmente miliardi di possibili algoritmi hash a 32 bit. Non ha senso affermare che uno di loro in particolare è "di conoscenza comune", o che è stato rilasciato sotto GPL, o che stavi per rimuoverlo. Se lo facessi rimuoverlo, il tuo caso apparirebbe completamente diverso e direi che dovresti rivendicare la duplicazione indipendente. Nella tua posizione attuale non penso che tu possa convincere nessuno che hai scelto lo stesso algoritmo di hash indipendentemente da OpenJDK.

Quindi credo che la tua migliore opzione sia riconoscere l'errato, quindi sostenere che la quantità di il codice effettivamente plagiato è relativamente piccolo e la sanzione che il tuo professore vuole applicare è sproporzionata.

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

Altre risposte hanno affrontato questioni filosofiche / morali come "È plagio?" "È sbagliato?" ecc. Ma, direi che dovresti concentrarti sul problema pratico in questione, che è:

Non sono sicuro di come difenderlo l'intero caso davanti a un comitato per la condotta degli studenti.

Quindi hai un caso da discutere ...


Per prima cosa, leggi legalmente -documenti pertinenti:

  • Regolamento disciplinare degli studenti
  • Procedure del consiglio studentesco
  • Elenchi di leggi esterne che si applicano ufficialmente
  • Dichiarazione esatta delle accuse contro di te
  • Precedente: gli ex studenti conducono le decisioni del consiglio su tali questioni.
  • Protocolli di sessione delle precedenti sessioni del consiglio dello studente (se disponibili, che potrebbe non essere il case).

Quindi stabilisci se ti è permesso, e se è una buona idea, essere rappresentato da qualcuno: Un laywer; uno studente di legge; un membro della facoltà; un membro del consiglio studentesco ecc. Se questo è disponibile per te, dovresti almeno consultarne uno (anche se non finisci per portarli con te): sicuramente hanno più esperienza di te.

Ora, determina se vuoi davvero sostenere "questa parte di ciò che ho copiato non costituisce plagio". Forse potresti fare questo argomento, non lo so. Anche ai profani - se hai abbastanza tempo (cosa che potresti non avere), potresti essere in grado di spiegare come i programmi vengono compilati dal codice sorgente e come parte del codice non viene realmente utilizzato. Potresti presentare esempi di quello che sembra un plagio, ma in realtà è un codice quasi identico scritto indipendentemente da persone diverse.

Francamente, dubito che questo ti porterebbe molto avanti, viste le circostanze. Anche se in teoria hai ragione (una domanda su cui non sto commentando), e anche se potresti spiegarlo al consiglio, potrebbe non voler sentire un argomento del genere.

D'altra parte, immagino (senza fondamento!) che un argomento più convincente potrebbe essere qualcosa del tipo (breve riassunto):

Mi dispiace molto per quello che ho fatto e non nego che sia stato vietato, inappropriato e immorale.
Sono stato tentato di plagiare a causa dell'ABC che, pur non giustificando il mio comportamento, ha portato anche il 30% della classe a essere tentato di plagiare, suggerendo un problema oggettivo oltre al mio errore personale.
Ho fatto ammenda nei modi XYZ.
Nei casi C1 e C2, che ritengo comparabili, la penalità era molto più bassa.
Infine, vorrei che il consiglio prendere in considerazione le mie circostanze personali DEF quando si considera questo caso.
Mi atterrò a qualsiasi decisione presa dal consiglio di amministrazione.

e lascio perdere.

La domanda è che il titolo chiede "è un plagio?"e non "come difendo la mia causa?"Il problema, imho, è che lo studente non accetta il fatto che fosse un plagio e tende a liquidarlo come "non un grosso problema".Questa posizione, imho, non vale la pena difendere.
@DmitrySavostyanov: OP ha posto diverse domande e quella nel titolo non è l'unica.Sono d'accordo, sembra che stia cercando di liquidare ciò che ha fatto come "non un grosso problema", ma ha molto tempo per affrontare il dilemma morale e solo un mese per prepararsi alla sua audizione.Affermo che dovrebbe essere un punto focale.Spero che lo aiuti anche a smettere di ballare intorno a quello che ha fatto.
user83564
2017-12-07 23:20:03 UTC
view on stackexchange narkive permalink

Ho esperienza nell'insegnamento (e nella gestione del plagio) e nella brevettazione / contenzioso del software.

Ho classificato gruppi di compiti che mostrano tutti lo stesso errore o la stessa imperfezione. Ho visto studenti non in grado di avviare il loro IDE con soluzioni per i compiti concise ed esperte, in cui tutte le variabili avevano nomi come "theCounter", "variableA" e "me stesso", ma a parte questo, il loro autore sembrava avere già 10 anni di esperienza nel settore e chiaramente non necessita di una laurea.

Un caso di brevetto software può essere ridotto a dimostrare che una singola riga come "x = 0" è stata plagiata. Ciò include dimostrare il movente, le persone (il fatto che l'azienda A ha attratto persone dall'azienda B) e lo stato dell'arte al momento del presunto plagio (e non ora, quando l'approccio proposto è ovvio per tutti). Le prove sui brevetti software non sono discussioni sterili su come l'algoritmo Smith – Waterman si è comportato sul codice del querelante e dell'imputato.

Nel tuo caso, sembra che tu abbia almeno "guardato" il codice OpenJDK prima di iniziare il tuo. Una prova inconfutabile è la funzione hash: la probabilità di replicarla per caso, secondo Mr. Data e C-3PO, è una su 67 trilioni di miliardi. È inoltre chiaro che non stavi cercando una funzione hash, ma un'implementazione della mappa hash. La ricerca di "funzione hash per stringhe" o "funzione hash per stringhe java" non produce un risultato da OpenJDK.

Dopo aver visto l'implementazione OpenJDK di hashMap, il problema era chiaro. Tra tutti i modi possibili di avvicinarsi a hashMap, cosciente o meno, hai scelto quello di OpenJDK, perché eri terribilmente di parte.

I commenti sul codice sono inutili. Commentare "lunghezza" come "lunghezza" dimostra che non hai compreso il problema e il commento qui era inteso semplicemente per soddisfare un requisito di valutazione. Perdi il tempo del selezionatore. Sarebbe corretto: "hash = l'hash dell'elemento da cercare", "Lunghezza: la dimensione della tabella hash" "restituisce la posizione nella tabella hash della lunghezza specificata per l'elemento di hash h. Non supera mai la lunghezza meno uno". Inoltre, dici "get restituisce il valore all'indice", che è palesemente sbagliato per una mappa hash. Get restituirà il valore alla chiave. Mescolare chiave e indice è un "reato capitale" se fai strutture di dati.

Il mio giudizio qui sarebbe "colpevole in quanto accusato". Non hai speso tempo a pensare alla soluzione, ma hai preso una soluzione esistente e probabilmente implementata in modo indipendente. Ha sconfitto lo scopo dei compiti, che avevano lo scopo di farti pensare alle strutture dei dati. Citare la fonte di OpenJDK renderebbe solo la tua colpa più ovvia (un classico caso di autoincriminazione durante la difesa). È come ricevere un problema di matematica e si finisce per citare il libro e la pagina che mostrano una soluzione del problema. Hai svolto un buon lavoro di ricerca, ma l'intento del problema era farti risolvere.

Questa è un'ottima risposta.
aeismail
2017-12-07 05:58:53 UTC
view on stackexchange narkive permalink

Dovresti assolutamente protestare contro la punizione proposta, perché molte istituzioni non consentono una punizione come quella che il tuo professore vuole valutare. (In altre parole, il tuo insegnante non può darti un voto di -100% o qualsiasi voto inferiore a zero per una data parte del tuo voto.)

Per quanto riguarda la copia del codice come plagio, questa è un'affermazione molto più spinosa. Usare il codice di qualcun altro è un problema, ma se davvero non c'è un altro modo per fare qualcosa, allora come si fa a dichiarare plagio? Il plagio non si estende alle affermazioni "ovvie". Ad esempio, non è plagio se due libri di testo di calcolo risolvono un integrale usando una serie di equazioni nello stesso modo, perché fondamentalmente è l'unico modo per farlo. D'altra parte, se scrivi un po 'di testo attorno ad esso è lo stesso, allora hai commesso un plagio.

Non credo che "[nella maggior parte delle istituzioni] il tuo istruttore non può darti un voto del -100%, o qualsiasi voto inferiore a zero per una data parte del tuo voto" sia veramente vero.Non credo sia raro che la penalità per plagio sia maggiore del "valore" dell'incarico.
I regolamenti della "maggior parte delle istituzioni" sono irrilevanti.Solo i regolamenti di questa istituzione sono importanti in questo caso.I membri dello staff di solito sono a conoscenza delle regole, ma se questa particolare punizione va oltre quanto consentito, può essere impugnata (ma non il caso di plagio stesso).
Ho cambiato "più" in "molti", ma vale sicuramente la pena controllare.So di aver proposto delle sanzioni ridotte in modo sostanziale e non potevo nemmeno assegnare uno "0" a un esame a causa di barare.
@DmitrySavostyanov: Sono consapevole che le politiche di altre istituzioni sono irrilevanti, ma sto fornendo al PO una ragione per cui un ricorso dovrebbe essere considerato, anche se è ammesso al plagio.(E può sostenere che il plagio non è certamente così grave come presunto, il che può fare la differenza).
@aeismail: Mi sembra che il tuo ultimo commento sopra sarebbe una risposta migliore della tua risposta.* Se * la sanzione assegnata dall'istruttore supera quanto consentito dalla politica dell'istituto, allora l'OP dovrebbe certamente opporsi.In caso contrario (e sicuramente dovrebbero scoprirlo in anticipo), tutto ciò che possono sostenere è che non è proporzionale alla gravità del reato, che in ogni caso sarà una chiamata soggettiva alla fine.
TwoThe
2017-12-07 20:18:47 UTC
view on stackexchange narkive permalink

Il plagio è un argomento difficile in informatica, poiché esiste solo un numero limitato di pezzi di codice che portano allo stesso risultato e solo uno di essi può essere considerato una soluzione ottimale.

Tu in Infatti ha copiato il codice dalle librerie Java, sia il codice effettivo che la denominazione delle variabili lo suggeriscono. Quindi sarebbe stato tuo dovere citarlo correttamente. In questo punto di vista rigoroso il tuo professore ha ragione, e probabilmente ha ragione anche negli altri casi che hai citato. Se molte persone commettono errori, è ancora il problema della persona che commette l'errore, non quello che lo corregge.

Se è etico è comunque un argomento completamente diverso.

Quando si programmano funzioni complesse è buona norma non reinventare la ruota, ma utilizzare invece codice esistente e ben testato da altri. Tuttavia, come dall'articolo collegato, "reinventare la ruota è spesso necessario per aggirare le incompatibilità di licenza del software"

Se avevi l'ordine specifico di non copiare il codice esistente e non sei riuscito a obbedire a quell'ordine, il problema è dalla tua parte. La brevettazione del software è un grave problema negli Stati Uniti, diverse società più piccole sono fallite a causa di ciò, le società più grandi possiedono determinati brevetti solo per utilizzarli per contro-citare in giudizio (vedere Apple vs Samsung). Essenzialmente i brevetti software si sono trasformati in una sorta di arma che può essere utilizzata per cancellare la concorrenza indesiderata dal mercato. Pertanto è importante per qualsiasi sviluppatore di software (nel tuo paese) essere in grado di rilevare e risolvere tali problemi di licenza.

Non conosco le intenzioni del tuo professore, ma potrebbe essere possibile che lui ha aggiunto quella clausola specificamente perché è consapevole delle conseguenze del "furto di codice" e la sua dura reazione è un modo per insegnarti a evitare questi problemi in situazioni in cui sarebbe davvero doloroso.

In altre parti del mondo non così ristrette, i brevetti software o il "plagio" come nel tuo caso sono molto meno problematici. Ciò significa che in altri paesi il tuo lavoro avrebbe potuto essere considerato in modo diverso, alcuni potrebbero persino aver ridotto i tuoi punti per non aver copiato il codice esistente (reinvenzione non necessaria della ruota). Ma tu non vivi in ​​"altri paesi", quindi anche da un punto di vista etico il tuo professore potrebbe essere duro ma ha comunque ragione.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...