¿Son comunes los exámenes escritos de informática en todo el mundo?

Puedo darte la perspectiva de un profesor. Rutinariamente doy preguntas de examen para las cuales los estudiantes deben escribir pseudocódigo o código de programa real.

El problema que tengo es que debo evaluar el nivel individual de conocimiento y habilidad de los estudiantes. Por lo general, tenemos trabajo de laboratorio, tarea, proyectos y exámenes para hacer esto. Cada uno de estos es necesariamente algo artificial y tiene sus pros y sus contras, pero la esperanza es que, juntos, podamos obtener una buena idea de dónde está un estudiante. En particular, la tarea y los proyectos les permiten a los estudiantes resolver problemas algo sustanciales y escribir / probar / depurar programas prácticos. Sin embargo, los estudiantes pueden sustituir mucho tiempo y la ayuda de otros (incluso sin hacer trampa) por el conocimiento y la habilidad individual. Un examen me da una medida de lo que ese estudiante, no el estudiante y sus compañeros de cuarto y asistentes de enseñanza y StackOverflow, pero el estudiante individual sabe y puede hacer. Desde un punto de vista laboral: ¿será este estudiante un contribuyente individual a los proyectos?

Muchos estudiantes opinan que programar escribiendo código a mano es artificial, y lo es. Sin embargo, no es más artificial que los proyectos de tarea. Pregúntele a un profesional cuándo vinieron a trabajar y le dijeron “ya hemos implementado el nuevo sistema, pero eliminamos estas piezas y queremos que todos en el equipo vean si pueden duplicar lo que ya hicimos”. es algo a lo que es prácticamente imposible exponer a los estudiantes en un entorno de clase típico, pero es donde realmente sucede un montón de trabajo. Como otros han dicho, escribir código a mano es normal en una entrevista (si no puede hacerlo, no será contratado), pero también es cierto que a veces los programadores trabajan juntos en una pizarra. Entonces, aprende a hacerlo cómodamente.

Si encuentra esto difícil, entonces hay algunas cosas que puede hacer, dependiendo de lo que lo haga difícil. Si sufres ansiedad por los exámenes, entonces deberías obtener ayuda competente (tenemos un gran Centro de Recursos Académicos donde enseño que hace un gran trabajo con esto). De lo contrario, practique. Si quieres ser un buen lanzador, entonces comienza a lanzar una pelota de béisbol; si quieres programar, programa; Si quieres resolver problemas a mano, ¡practica hacerlo! Cualquier función que vea, lea o escriba durante el curso podría ser un buen problema de ejemplo. Obtenga algunos amigos, acuerde un problema, establezca un temporizador de 5 a 10 minutos (según el problema) y resuélvalo por separado. Si todavía no domina el idioma que está usando (o si lo es pero no ve de inmediato cómo resolver el problema), no intente pensar primero en el idioma. Dibuje su solución con imágenes y / o pseudocódigo primero, luego conviértala al idioma.

Cuando suene el temporizador, observe si no ha terminado y tómese unos minutos para terminar. Luego compara las soluciones. Si tiene 3 o 4 personas, verá 2–4 respuestas de diferente calidad. Debatirlos, predecir lo que sucederá. ¡Incluso puede escribir las soluciones y compararlas!

Lo que generalmente encuentro es que a los estudiantes les faltan algunos elementos clave: o no pueden analizar el problema y los ejemplos en el examen, que muestra brechas conceptuales y posiblemente incluso falta de vocabulario del curso; o son incapaces de articular un algoritmo en el nivel apropiado de abstracción, que muestra la falta de un modelo mental del problema y / o las herramientas computacionales; o carecen de fluidez en el lenguaje de programación que estamos usando.

¡Nada de esto es artificial! Si tiene estos problemas, entonces todavía no está donde quiere estar. La buena noticia es que puede solucionarlo con una práctica dedicada y una autoevaluación clara.

En una nota separada, eso requeriría un ensayo enorme por sí mismo: he decidido que los estudiantes generalmente deberían usar un IDE durante los primeros 2 o 3 semestres. Entiendo que son herramientas poderosas que facilitan las cosas, y son una necesidad profesional en estos días. Sin embargo, al igual que un GPS le permite conducir docenas de veces sin que aprenda cómo llegar allí (qué caminos toma, cuáles son los puntos de referencia clave, etc.), un IDE permite a los estudiantes producir programas sin aprender sobre interfaces de funciones , cómo ocurren la compilación y la vinculación, etc. Cuando las cosas salen mal, los estudiantes están a la deriva sin un modelo mental de lo que realmente está sucediendo. Entonces, creo que un IDE es una gran lupa de productividad para alguien que tiene el modelo mental de lo que es un programa, cómo funciona, cómo encajan sus componentes y cómo se crean los programas. Pero evita que los principiantes adquieran el modelo en primer lugar. En cualquier caso, los proyectos en los que uno trabaja para los primeros cursos de pregrado (o incluso en toda una carrera de pregrado) no necesitan toda esa infraestructura.

¡Buena suerte!

El psuedocódigo es el más común y se prefiere sobre la sintaxis específica del lenguaje, a menos que, por supuesto, haya un estándar establecido (por ejemplo, SQL)

Sin embargo, puede ser necesario escribir un código de idioma específico a veces, dependiendo del tema. Estos son módulos que enseñan un idioma en particular específicamente. Como un curso C ++ 101 o algo por el estilo.

Una vez tomé un curso de posgrado en programación de computadoras en la Universidad de Hawai que consistía en escribir el mismo programa de computadora en 15 lenguajes de programación diferentes, incluido Lisp. Sin exámenes, sin exámenes parciales, sin exámenes finales y sin otra tarea.

El último día de clase, mi profesor (el famoso W. Wesley Peterson) dijo una frase: Consíguelo; Todos son esencialmente lo mismo.