¿Deben las clases de algoritmos incluir tareas de programación?

Creo que depende del tipo de algoritmos y del nivel de enseñanza del que estamos hablando. Definitivamente defiendo las tareas de programación cuando se introduce un concepto por primera vez, especialmente si es algo muy versátil como la programación dinámica. Sin embargo, una vez que comprenda cómo implementar algo, se vuelve mucho más importante poder detectar cuándo y cómo usar el algoritmo, lo que puede estar lejos de ser obvio.

Mi experiencia personal involucra algoritmos de flujo. Aprendí sobre el flujo hace unos 3 años y lo he estado usando para programación competitiva desde entonces. Sin embargo, me tomó un curso de posgrado puramente teórico para comprender completamente por qué y cómo funciona y mejorar para descubrir cuándo usarlos. El curso usualmente involucraba pruebas de complejidad o tener que explicar cómo aplicar un algoritmo de flujo en un problema dado, ¡definitivamente era una de mis clases favoritas!

Sí, las clases de algoritmos definitivamente deberían incluir tareas de programación. Existen límites para comprender cómo interactúan los algoritmos y las estructuras de datos, y cómo se implementan de manera eficiente en la práctica, si solo lee y escucha acerca de ellos, o simplemente lee el código de muestra.

Aprende mucho más sobre algoritmos y estructuras de datos al escribir el código y depurarlo. No tiene que codificar cada algoritmo o estructura de datos cubiertos … solo lo suficiente para comprender cómo se implementa una variedad.

Por lo general, les doy a mis estudiantes proyectos de programación que se ocupan de la clasificación, el filtrado, las listas doblemente vinculadas, los árboles binarios y los gráficos no dirigidos (por ejemplo, el algoritmo de ruta más corta, etc.).

Si el tiempo lo permite, también es útil hacer que los estudiantes realicen algunas pruebas de rendimiento entre algoritmos, para ver cómo se desarrolla la gran O de un algoritmo en el mundo real.

Creo que depende de la naturaleza del curso y para quién está diseñado. Por ejemplo, en mi universidad, tenemos dos cursos para algoritmos, el normal y el de Honor. El normal está muy basado en aplicaciones y tiene varias tareas de implementación de algoritmos. Sin embargo, la versión de Honores tiene muchas pruebas y las tareas abarcan más teoría. La versión de honor no tiene tareas de programación.

Creo que las personas que están interesadas en la programación competitiva, la preparación de entrevistas y los ingenieros de software opcionales optarían por la versión normal, mientras que las personas interesadas en realizar más estudios en la teoría de CS tomarían la de Honor.

¿Deben las clases de algoritmos incluir tareas de programación?

No diría que deberían hacerlo , pero ciertamente pueden .

Cuando enseño el curso de algoritmos de pregrado, hago que los estudiantes codifiquen un algoritmo de programación dinámica. Encuentro que cuando realmente implementan programación dinámica, lo entienden mejor. A diferencia de otras posibles tareas de programación en un curso de algoritmos, la mayoría de los problemas de programación dinámica requieren solo matrices (o listas en Python), en lugar de clases definidas por el usuario. Por lo tanto, podemos ser agnósticos acerca de qué lenguaje de programación elige cada estudiante.

Los otros profesores de Dartmouth que enseñan algoritmos no tienen alumnos que codifiquen nada. Y sus cursos están bien.

Siendo un estudiante de Ciencias de la Computación por elección, podría responder a su pregunta.

Antes de comenzar a estudiar el algoritmo y no tenía conocimiento al respecto, pensé que era una asignatura que me enseñaría cómo resolver problemas complejos mediante programación con habilidades matemáticas.

Y para mi sorpresa lo hizo, y junto con él, conocí la complejidad del tiempo y el espacio, que es una herramienta para medir el rendimiento del programa.

Ahora, volviendo a su pregunta, le recomendaría que asigne tareas de programación a los estudiantes porque si los estudiantes solo estudiéramos un algoritmo (la columna vertebral de la informática), entonces solo lo analizaríamos, pero podríamos no aplicar nuestras habilidades para implementarlo en la resolución de nuevos problemas.

Si asigna tareas, entonces usted también puede juzgar a un estudiante sobre cuánto se acerca a resolver el problema y ayudarlo en lo que le falta.

También les daría confianza en sí mismos para comenzar con una programación competitiva. Y las tareas son el primer paso para comenzar a implementar nuestras habilidades de algoritmo para resolver problemas mediante programación

En mi opinión, las clases de algoritmos definitivamente deberían incluir MUCHAS asignaciones de programación. En informática, la mejor manera de aprender cosas es hacerlo (respaldado por un sólido conocimiento teórico). Y la mayoría de las veces, las clases de algoritmos es una de las clases en las que todavía te están introduciendo en el mundo de las computadoras, por lo que puede generar confianza (lo que se hace al codificar los algoritmos) o asustarte de por vida. Y es muy importante que se tome muy en serio la parte de codificación de esta clase. La mayoría de mis amigos que no codificaron en esta clase, nunca codificaron en el futuro en ninguna de las clases y finalmente asumieron roles no técnicos como carrera. Crecieron para odiar la codificación (o tener miedo de ella) y aquellos que lo hicieron, disfrutan mucho de la codificación, y yo diría que son buenos ingenieros informáticos. Entonces, si va a hacerlo por el resto de su vida, hágalo bien, sea bueno y, lo más importante, disfrútelo.

, definitivamente deberían hacerlo.

Para la práctica, las tareas harán que los conceptos sean más claros de lo que lo serían las lecciones de enseñanza.

Sugeriría este blog para tareas con soluciones que son exclusivamente para este propósito. →

¡Todas tus tareas de laboratorio en una sola parada!

Espero que haya ayudado!

Vota a favor si encuentras útil esta respuesta.

Gracias 🙂

Las clases de algoritmo deben usar un lenguaje bien definido para expresar algoritmos. Usar un lenguaje natural solo da lugar a confusión.

Existen algunos lenguajes excelentes para definir algoritmos y también se pueden probar en una computadora.

Creo firmemente que las clases de algoritmos deben contener tareas de programación. Te diré lo que sucede cuando no hay asignaciones de programación en una clase de algoritmo. Al menos lo que observé. Puedes ver a casi todos tratando de memorizar el algoritmo solo por aprobar los exámenes. Memorizar algoritmos por poco tiempo es fácil, pero usarlos para resolver problemas es lo que los reforzará en nuestra mente. En mi clase de algoritmos nunca se nos asignaron tales asignaciones. Todo lo que practiqué fue de un juez en línea, pero me resultó muy difícil. Siento que si la escuela hubiera incluido más tareas, estaríamos mucho mejor.

Creo que deberían incluir tareas de programación, preferiblemente una en C y una en Python o un lenguaje similar. Es bueno tener una visión más cercana de esos algoritmos y estructuras de datos. A veces los estudiantes pueden llegar a algo mejor también. Las plataformas de programación en línea también son útiles.

No. Las clases de algoritmo te enseñan el flujo del programa. Pero, para escribir la asignación de programación, debe intentar escribir el programa en sí.

Para la asignación de programación, puede probar Ayuda con la asignación de programación

Dios mío, sí. Hay un mundo de diferencia entre la efectividad del aprendizaje simplemente leyendo, frente al aprendizaje tratando de ejecutar lo que crees que tienes un buen modelo, solo para descubrir que tu modelo mental no es tan bueno como pensabas. ¿Cómo saber qué tan bueno o malo es su modelo? Al ejercitarlo!

El alumno perezoso leerá y creerá que lo sabe todo. Pero ah, la prueba está en hacerlo con éxito. Los ejercicios le enseñan a uno más allá de la simple lectura, siempre que no sean problemas triviales. Por otro lado, si son demasiado duros, tampoco son buenos.

Seguro.