¿Es plagio usar un tutorial en línea como base para completar una tarea de programación?

Supongamos que te asignaron un proyecto de programación, que es considerado por tu profesor/profesor, no es fácil. Sin embargo, logra encontrar un tutorial en línea que lo guía paso a paso a través del proceso necesario (por lo que el código fuente que ha escrito no tiene mucha diferencia con el de ese tutorial).

La solución final se basa en este tutorial, pero también agregó su propia información, corrigió algunos errores menores, etc. No sé si esto importa, pero sabe exactamente lo que hace cada línea de su código , puede para explicar y responder preguntas complejas, etc.

¿Es eso considerado plagio, y si es así, por qué? Si no, ¿cómo puede alguien apoyar eso en un maestro/profesor?

Como siempre, cite su fuente. Si su trabajo es parte de una evaluación, también diga qué valor agregado proporcionó en comparación con el material que utilizó. Si hace esto, no plagia y tampoco comete un delito de evaluación.
@CaptainEmacs El escenario que estaba imaginando es que lee una publicación en Stack Overflow sobre cómo calcular la secuencia de Fibonacci de forma iterativa, luego se le pide al estudiante que envíe la tarea o se le da una prueba, y sin querer replica el código de la memoria. ¿Eso es aprendizaje o eso es plagio?
@CaptainEmacs Seguramente no querrá que los estudiantes citen más de 50 fuentes (según mi experiencia, podrían ser muchas más) para cada tutorial de programación que vieron para ayudarlos en su tarea actual. En ese momento, pasarían más tiempo administrando sus fuentes que aprendiendo el material.
@AustinHenley Desafortunadamente, este no es el caso. No estoy hablando de un fragmento de código de diez líneas, sino de un código de 200 líneas como un controlador de Linux. Sin embargo, el tutorial estaba haciendo exactamente eso: explicar una situación paso a paso y luego escribir algo de código (una función que hace algo). No copié y pegué el código, de hecho estaba estudiando esa función en particular, qué estaba haciendo, etc. y es por eso que puedo saber exactamente qué hace mi código.
@Arkoudinos En ese caso, el Capitán Emacs tiene razón. Solo citalo. En mi licenciatura hice esto varias veces cuando leía tutoriales arcanos, añadí un comentario en la parte superior de mi código que enlazaba con el tutorial y daba una breve descripción de cómo lo usaba.
@AustinHenley, recordar vagamente de 10 a 15 líneas de código (que realmente no se pueden escribir de muchas maneras diferentes) está muy lejos de seguir un tutorial detallado para desarrollar algo bastante complejo, como entiendo que describe OP.
@AustinHenley Se necesita sentido común. Si se utiliza una función comparativamente trivial que se ha enseñado en un tutorial, es posible que no sea necesaria una cita. Pero todo lo que no sea trivial debe citarse. Y sí, si hay 50 cosas para citar, deberían ser citadas. Es parte de la vida académica.
¿Cómo decides si es trivial? La pauta es: si algo tiene probablemente solo 3 o 4 formas distintas de hacerse canónicamente (como Fibonacci), que son de conocimiento común, es posible que no sea necesaria una cita (nota, esto implica que la solución es muy breve; también podría ser de memoria) ). Si hay una forma no canónica de hacerlo que eligió en alguna parte (por ejemplo, tratar a Fibonacci como una iteración de matriz, que no es estándar en los tratamientos informáticos), necesita una cita, incluso si es breve.
Seguramente no querrías que los estudiantes citaran más de 50 fuentes --- Sí, lo haría.
@JeffE Yo no lo haría. Mantener a los estudiantes comprometidos y completar con éxito los problemas de programación ya es bastante difícil. ¡Actualmente estoy en una conferencia CS Ed y escuché presentaciones de las 5 mejores escuelas que tienen el mismo problema! Es ridículo decir que tienes que citar cada material que hayas usado alguna vez para aprender algo.

Respuestas (1)

Usar material en línea para aprender no es plagio.

Esta es una excelente manera de aprender (p. ej., ejemplos resueltos y etiquetado de subobjetivos) y es una forma común para que los instructores intenten enseñar algo. ¿Estoy plagiando cada vez que uso un patrón de diseño común? No.

Sin embargo, copiar y pegar código en línea sí lo es. Se vuelve un poco confuso cuando se trabaja en tareas simples que se pueden encontrar fácilmente en línea porque podría argumentarse débilmente que lo está recordando de memoria. Definitivamente no me preocuparía por esto, especialmente si crees que entiendes el código y no estabas tratando de hacer trampa.

Si está realmente preocupado, incluso podría discutirlo con su instructor y es posible que se dé cuenta de que no están dedicando suficiente tiempo a discutir un determinado proceso o brindándole suficiente material de práctica.

EDITAR: según su aclaración en los comentarios, si esto es algo más específico/arcano y no un tutorial sobre algo general, simplemente cítelo. He hecho esto en mis cursos de programación antes. Agregué un comentario en la parte superior de mi código vinculado al material al que hice referencia y di una descripción muy breve de qué es y cómo lo usé.

Sería una forma de aprender técnicas o modismos específicos. No es una forma de aprender a encontrar su propia solución, que es para lo que se les paga a los programadores. Si la solución ya estuviera disponible, la empresa la compraría, no le pagaría a alguien para que se sentara en una silla y la volviera a escribir. Hay mucho en "aprender a programar", como cualquier campo que sea creativo y productivo. Las respuestas no están "ahí afuera", están dentro de ti. Preferiría ver una solución mal elaborada que fue desarrollada por alguien a través del pensamiento y el esfuerzo que una solución ideal (o buena) tomada pegando cosas.
"Si la solución ya estuviera disponible, la empresa la compraría, no le pagaría a alguien para que se sentara en una silla y la escribiera de nuevo". Suponiendo, por supuesto, que la empresa sea consciente de su existencia y que se ajuste plenamente a los requisitos de la empresa. Hay muchos programas que hacen mucho de lo mismo en un sentido amplio pero difieren en términos de detalles (que es una de las razones de la proliferación de marcos de programación, etc. que existen). Los programadores no deberían desarrollar nuevos algoritmos para resolver problemas cuando los algoritmos existentes hacen bien el trabajo a menos que su trabajo sea desarrollar nuevos algoritmos.
Tu lógica es defectuosa. Si la tarea era "escribir un servidor de base de datos" y alguien proporcionaría el código fuente de MariaDB, el estudiante reprobaría la tarea. Si le pago a un desarrollador para que haga lo mismo y ella escribió su propio servidor de base de datos, la despediría. Para aprender es imperativo hacer cosas que miles de personas ya hicieron antes. De lo contrario, ningún concertista nuevo tendría que aprender Beethoven.