2010-04-22 5 views
14

Soy un estudiante de informática que termina mi segundo semestre de clases de programación. Los disfruté bastante y aprendí mucho, pero parece que otros estudiantes están luchando con los conceptos y las tareas más que yo. Cuando se debe entregar una tarea, el inevitable correo electrónico grupal sale uno o dos días antes con personas que necesitan ayuda, ya sea con una parte específica del problema, o a veces las personas simplemente parecen tener dificultades para saber por dónde empezar.¿Cómo puedo ayudar a otros estudiantes que luchan en las clases de programación?

que realmente me gustaría ser capaz de ayudar, pero tengo dificultades para pensar de la manera correcta para darles ayuda, sin darles la respuesta. Cuando tengo problemas para entender un concepto, un fragmento de código puede ser útil para ayudarme, pero al mismo tiempo si tiene mucho sentido, puede ser difícil pensar en otra forma de hacerlo. Además, la sección de Integridad Académica de cada tarea siempre está amenazando con una advertencia general contra el uso compartido de códigos con otras personas. Intenté usar el pseudo código para ayudar a otros a dar una idea sobre el flujo del programa, dejándolos para descubrir cómo implementar ciertos aspectos del mismo, pero no obtuve demasiados comentarios y no sé cuánto los ayudó realmente. fuera, o si solo los confundió más.

Así que, básicamente, estoy buscando ver si alguien tiene experiencia con esto, o buenas maneras en que puedo ayudar a otros estudiantes a empujarlos en la dirección correcta o ayudarlos a pensar sobre el problema de la manera correcta.

+5

Me gustaría señalar que los compañeros no deberían ser el recurso de la educación, para eso es el personal docente. Es posible que también hayas malinterpretado la tarea, cometido errores horribles, etc. etc. Por lo tanto, el curso de acción ideal es abstenerse de ayudar y dejar que ellos lo aborden con los maestros. Por otra parte, hay cosas tan pequeñas como "¿De qué se queja la compilación de WTF ahora?", En esos casos, trate de ayudar, pero asegúrese de que se mantenga dentro de los cinco minutos. – NomeN

+2

@Nome a menos que, por supuesto, estés en una clase inicial de C++ y hayas escrito> 5,000 proyectos de LOC en C++ porque estuviste aburrido hace 3 años ... Esta es la situación en la que estoy. Mis clases son taaaan aburridas – Earlz

+8

@NomeN No estoy de acuerdo con eso. Creo que un compañero que se siente cómodo con el material es tan útil, y a veces más útil que un maestro. ¿Por qué? Porque ustedes dos comparten un punto de vista. Algunos maestros son simplemente malos maestros, eso es todo, y un compañero puede hacer un mejor trabajo al comunicar una idea. Sí, a veces un alumno inteligente recibe una pregunta de asignación incorrectamente, pero si él o ella todavía sabe los conceptos, entonces pueden ayudar a sus amigos mucho más que un mal profesor aclarando una pregunta en una tarea. – wilhelmtell

Respuesta

18

Haz que te expliquen el código.

Con esto se logran varias cosas:

  • primer lugar, demuestra que realmente tienen código para mostrar. ¿Cómo pueden ellos no entender algo si aún no han abierto un editor de texto?
  • A continuación, demuestra que entienden el código en un nivel básico. Podrían haberlo copiado de alguna parte. Si ellos no saben lo primero sobre el código que tienen, eso es una bandera. (Si copiaron el código, pero aun así se tomaron el tiempo para entender el código, eso sigue siendo académicamente deshonesto, pero es una habilidad valiosa para usar después de la universidad.)
  • Finalmente, ahora estamos en el lugar donde podrían estar realmente obténgalo, con su ayuda (¡o posiblemente sin él!) Si llegan al lugar donde está el problema (mientras le explican el código) y se les aparece, entonces han resuelto su problema. problema propioSi no reconocen el hoyo, es aquí donde puedes darles pistas específicas.
+0

Buen consejo, realmente me gusta que expliquen su código. Suena como una muy buena manera de comenzar y descubrir lo que realmente hacen y no entienden. Un buen consejo, aprecio toda la información. –

+6

De acuerdo, un buen enfoque. Básicamente agachándose de goma donde eres su pato de goma. – derivation

+0

@derivation, creo que era de programadores pragmáticos o código completo, pero no recuerdo cuál. – John

0

Uno de los problemas más comunes en la enseñanza es determinar si el estudiante lo entendió. Una forma fácil y efectiva de determinar si debe continuar o reformular es hacer que el alumno demuestre su comprensión haciendo algo estrechamente relacionado pero no idéntico.

Además, dado que la programación es esencialmente problemas de palabras, es importante que el estudiante romper cosas en pasos. Pediría ver su paso de alto nivel antes de mostrarles algo. Demasiada gente se colgó en la sintaxis y en realidad nunca concretar lo que están tratando de hacer antes de sumergirse en

3

Algunos pensamientos:.

  1. No la programación en parejas

    que el estudiante (el persona a la que ayudas) sentarse en la silla y codificar algo. Podría ser un fragmento de código, podría ser una parte de un proyecto, cualquier cosa, siempre que represente algo que tenga problemas. A medida que avanzan, señale (sin rudeza) los lugares donde pueden haber hecho algo incorrectamente, o algo que podría mejorarse.

  2. Revisar el trabajo realizado

    Una de las cosas que más me ayudaron era tener un compañero (a diferencia de un maestro o ayudante de estudiante) revisar mi código. La mayoría de las veces, el compañero podría señalar los lugares donde podrían haber hecho algo diferente.

  3. Haz que te repitan.

    A menudo hago que las personas a las que ayudo a aprender repitan lo que acabo de decir para ver si lo entienden o si tienen alguna pregunta. Te sorprendería la frecuencia con la que las personas no hablan cuando no entienden algo.

  4. Ofrecer ayuda antes de que el proyecto es debido.

    Tratar de realizar el proyecto la noche antes de la fecha de vencimiento es una forma segura de, al menos, no aprender los conceptos tan bien como de otro modo.

  5. no codifican por sí mismo

    Sus compañeros aprenderán nada si lo haces por ellos.

  6. Búsqueda de otras fuentes

    Un ayudante, profesor amable, otro de sus compañeros pueden ser valiosos recursos. Si encuentra que su estilo de enseñanza no combina bien con el estilo de aprendizaje de uno de sus compañeros, indíquele a alguien más que pueda ayudarlo más.

  7. esperar lo mejor

    Sólo puede ir tan lejos al enseñar a alguien; ellos tienen que querer aprender.

+8

Ah, y 8: No ofrezca ayuda a menos que esté seguro de que sabe lo que está haciendo. Los malos consejos son a menudo peores que ningún consejo. –

8

He trabajado como asistente técnico y en un servicio de ayuda del departamento de CS (y he ayudado a mis amigos). Esto es lo que hago ...

Resumir la cuestión, encontrar un problema relacionado, luego resuelva el problema relacionado con ellos. Si no pueden establecer la conexión, no puedes ayudarlos realmente.

Editar: y se niegan a ayudar con más de la sintaxis básica si están buscando ayuda el día o el día anterior. Las cosas deberían haber sido tratadas mucho antes de la fecha límite. Criar a la gente el día de la boda no es una buena práctica para ti.

+0

Definitivamente es un buen camino a seguir. – justkt

2

Una cosa que podría ser útil para sus compañeros es señalar un código similar en las notas de clase (o si no se entregan notas de clase en sus propias notas). De esa manera solo les estás mostrando lo que dijo el profesor, pero hacerlo de una manera útil.

Si otro alumno está abierto, haciéndoles preguntas sobre todo lo que han intentado y por qué sería útil.

Finalmente, considere acudir a su profesor y pedir su opinión sobre lo que se le permite hacer y cómo pueden sugerir que ayude a otros. Después de todo, los profesores tienen años de experiencia en la enseñanza de estudiantes. Aún más, ¿tendrá la oportunidad de ser un TA en años futuros? Llegué a TA como estudiante, y eso me ayudó a utilizar productivamente mis impulsos para ayudar a otros sin romper ningún código de honor. Si tiene tales oportunidades de empleo de pregrado, dejar que los profesores lo vean ahora, ya que el tipo útil lo ayudará a adquirirlos.

0

Una experiencia general en explicar cosas a los demás es averiguar dónde se encuentran primero. Trate de abstenerse de darles soluciones a problemas que aún no tienen (incluso si está seguro de que los encontrará más adelante). En otras palabras, no vaya dos pasos por delante de ellos. Si tienen problemas para entender el valor de llamada por valor, no les explique la recursividad.

-1

enfoque psicológico

ellos muestran algunas aplicaciones del mundo real populares (como ejemplo) que utilizan día a día ... escrito en lenguaje de programación misma que está tratando de enseñar .....

  1. explicar cada cosa con el fondo
  2. dar a cada estudiante, una importancia considerable
  3. alwaysss utilizan sintaxis de un código de colores
+0

Las personas no son pokemon. –

0

En cuanto a ayudar a los compañeros estudiantes en general, suelo utilizar el enfoque de "jugar estúpido". Pretendo que no sé nada sobre su misión particular, y les pido que me pongan al día sobre lo que se supone que deben hacer. También les pido que me den un vistazo rápido de lo que aprendieron en clase sobre el concepto de la tarea. Esto generalmente toma alrededor de 5 minutos y aproximadamente el 95% del tiempo, el otro estudiante ha respondido su propia pregunta cuando terminan de explicármelo. Si no lo han resuelto en este punto, les pido que me guíen a través de su solución a la tarea. Al hacer esto, generalmente detectan dónde se desvía su solución de lo que acaban de decir que aprendieron en clase.

En cuanto a la ayuda específica para la programación, a veces le pido al otro alumno que me envíe su código y lo ejecuto a través de un sencillo script de shell que escribí. Ese script borra todo en el archivo de código que es no un comentario, y le doy el resultado al otro alumno para que lo lea. El archivo resultante suele leerse como un esbozo de su código, y muchas veces pueden ver dónde salió mal el código simplemente sacando el código del camino. Si su enfoque es completamente incorrecto, les pido que escriban un resumen de lo que el código debe hacer (en términos de alto nivel) usando comentarios; Después de completar esto, rellenan cada sección del esquema con un código que implementa ese paso de esquema (probando cada "fragmento" a medida que avanzan). Esto ayuda a mucha gente a separar el código del algoritmo (muchos problemas comunes que veo provienen de la falta de un enfoque sistemático o disciplinado para la resolución de problemas, y este ejercicio los ayuda a encaminarse por el camino correcto).

Otro método es responder preguntas utilizando un lenguaje de programación diferente. Por ejemplo, ayudé a varios de mis compañeros estudiantes en proyectos de Matlab explicando los conceptos usando C, Ruby, o incluso pseudocódigo (que se leía más como un inglés sencillo que como un código). Sabía que tenían mucha más experiencia con otros idiomas, así que usé lo que sabían mejor para ilustrar los conceptos y los alenté a intentar primero resolver el problema en su "idioma nativo". Una vez que confiaban en que entendían los conceptos, podían trabajar para descubrir cómo implementarlos en el idioma de destino. Tener que aprender nuevos conceptos mientras todavía estás aprendiendo un idioma hace que ambos sean más difíciles. Este enfoque también ayuda a determinar si tienen problemas para entender cómo resolver el problema o cómo codificar la solución.

2

No creo que debas ayudarlos. Creo que es académicamente deshonesto. Además, no les ayuda tener que darles respuestas, o incluso tener que estar cerca para responder preguntas, ya que una vez que llegan al examen (o el mundo real), no estarán allí para ellos.No solo deben aprender cómo programar por su cuenta (lo que presumiblemente les está ayudando a hacer), sino que también deben responder sus preguntas por sí mismos. Eso significa publicar en lugares como StackOverflow. Es posible que desee recomendarles que formulen una pregunta específica (siempre un buen ejercicio) y publicarla aquí con la etiqueta "tarea".

Cuando estaba tomando clases de CS en la universidad, había un número de estudiantes que simplemente no podían codificar o diseñar en absoluto (y estoy pensando en una clase de ingeniería de software de alto nivel en particular). Tampoco tenían idea de cómo resolver problemas, o dónde buscar cosas, dónde obtener respuestas o qué preguntas hacer. Estaban totalmente desamparados porque habían pasado la mayor parte de su tiempo de pregrado trabajando en sus tareas/proyectos en grupos y haciendo que los miembros del grupo más talentosos los sostuvieran a mano. No perpetúes esto. Lo último que necesita la industria es que los programadores más incompetentes se gradúen con buenas calificaciones para poner en su currículum.

+0

Haces un buen punto. Lo que quiero evitar es ayudarlos a escribir los programas. Si voy a ayudar a otro alumno, quiero asegurarme de que mi ayuda los ayude a darse cuenta de cómo abordar el problema ellos mismos. Una de las cosas que veo es que la gente parece no modularizarse. Creo que hay algunas áreas como esta, algunas personas podrían usar una guía para ayudar a que la idea haga clic. Muy buena respuesta, sin embargo, si doy ayuda en el futuro, necesito asegurarme de que sea alguien buscando aprender, sin buscar la respuesta. –

+0

No estoy de acuerdo. Ayudarlos no es lo mismo que darles respuestas. Ayudarles es más parecido a volver a enseñar un concepto que pueden no haber aprendido de la manera en que se enseñó en clase. Usar eso para resolver su problema depende de ellos. Dijiste que necesitaban aprender cómo "obtener respuestas a sus preguntas por sí mismos", pero ¿no es eso lo que están haciendo al pedirte ayuda? Estoy de acuerdo en que arrastrar el peso muerto de otra persona es una mala idea para todos los involucrados, pero no diría que es una razón para evitar ayudar a los compañeros estudiantes por completo. – bta

1

Cada vez que traté de enseñarle a mi novia cómo programar, hice casi nada más que hacer preguntas. (ella llegó a la declaración .each antes de aburrirse)

Hágales preguntar cómo funciona su código y cómo creen que podrían lograr la tarea. Darles pequeño empujones en la dirección correcta. Y nunca EVER escribe algo para ellos. Si tienes otra computadora y escribes un código para mostrarlos y mostrarles los resultados, está bien, pero no hagas eso.

1

Aquí está el consejo que les doy a mis profesores estudiantes: evitar dar respuestas a los estudiantes. En cambio, hágales preguntas. Y asegúrese de hacer preguntas que pueden hacerse en el futuro. Para el material que enseño, estas son algunas de las preguntas que quiero que hagan todos los estudiantes:

  • ¿Cuál es su abstracción?

  • ¿Cuál es un ejemplo de cómo se supone que se comporta su abstracción? ¿Puedes mostrarme otro ejemplo?

  • ¿Hay algún ejemplo de dónde se permite que la abstracción falle? ¿Cómo debería fallar en ese ejemplo?

  • ¿Has probado estos ejemplos?

  • ¿Cuál es la representación de su abstracción?

  • ¿Cómo se relaciona la representación con la abstracción? ¿Me puedes mostrar una foto? ¿Puedes mostrarme en matemáticas?

  • ¿Qué funciones están permitidas para ver la representación? ¿Cuál es el contrato de cada función? ¿Satisface la representación a un invariante que la función puede asumir? ¿Cada función se asegura de que se preserve el invariante?

  • ¿Qué dice valgrind decir?

Cuestiones relacionadas