Download la enseñanza de la programación

Document related concepts

Oz (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Erik Meijer wikipedia , lookup

Haskell wikipedia , lookup

Simon Peyton Jones wikipedia , lookup

Transcript
LA ENSEÑANZA DE LA PROGRAMACIÓN
Autor: MARIO OVIEDO GALDEANO.
Adscripción: ACADEMIAS DE COMPUTACIÓN DE LA UPIICSA.
Coautora: FRIDA GISELA ORTIZ URIBE
Adscripción: ACADEMIAS DE HUMANIDADES DE LA UPIICSA.
Institución: IPN-UPIICSA
Dirección: CALLE DE TE #950. IZTACALCO.
Teléfono: 5624-2000 Ext. 70355.
Email: [email protected]
OBJETIVO
Proponer estrategias para la enseñanza de la programación de computadoras en carreras de informática y
carreras afines en el nivel superior.
RESUMEN
En este trabajo se analizan los problemas más comunes en la enseñanza de la programación de
computadoras, principalmente en los primeros semestres de las carreras de Informática y carreras afines.
Al final se presenta una propuesta de solución denominada Estrategias para la Enseñanza de la
Programación en la que se tratan algunos aspectos que se consideran de utilidad general para lograr los
objetivos de aprendizaje en los cursos básicos de programación en las instituciones de educación
superior.
Actualmente en las instituciones de educación superior, el profesor de programación debe resolver los
siguientes problemas que le presentan la mayoría de los alumnos de primer ingreso:
• Desconocimiento de la materia
• Carencia de habilidades para programar
• Carencia de disciplina en programación
• Falta de conciencia estudiantil
• Desinterés por sus estudios en general
• Apatía por la materia en particular
La enseñanza de la programación implica la consideración de otras dos áreas concurrentes importantes:
• Lenguajes de programación
• Herramientas de desarrollo
La base de nuestra propuesta contempla los siguientes aspectos:
• Realizar un examen diagnóstico al inicio del curso
• Mostrar a los estudiantes la importancia de la programación en su formación profesional y en el
ejercicio profesional.
• Ubicar a la programación en la fase de desarrollo del ciclo de vida de los sistemas de información.
• Diferenciar plenamente la programación de la codificación.
• Privilegiar la enseñanza de la programación sobre la de los lenguajes de programación.
• Implementar los algoritmos en los lenguajes de programación PASCAL y C
LA ENSEÑANZA DE LA PROGRAMACIÓN
LA PROGRAMACIÓN DE UNA COMPUTADORA
Siendo la programación una actividad que implica un proceso mental, generalmente complejo y creativo,
exige del programador: inteligencia, conocimiento, habilidades y disciplina.
La inteligencia es un recurso natural que en la mujer y el hombre normales es suficiente para adquirir los
otros tres atributos necesarios para programar y poder resolver problemas utilizando una computadora
La adquisición del conocimiento se logra estudiando los conceptos, fundamentos y las técnicas básicas de
programación. En el modelo educativo tradicional con base presencial el profesor expone los temas y
orienta a los estudiantes con aclaración de dudas y recomendaciones. La capacidad y experiencia del
maestro puede contribuir notablemente para el logro de los objetivos de aprendizaje, motivando a los
alumnos para que se interesen en la materia.
En cuanto a la adquisición de las habilidades, la voluntad del educando es fundamental, ya que sólo con la
práctica y la experimentación tesonera personal podrá lograrse.
La disciplina, como observancia de las normas y el buen proceder, la podrá adquirir el estudiante con la
guía valiosa del maestro y de buenos programadores, comúnmente los autores de libros de texto
especializados.
PROBLEMÁTICA DE LA ENSEÑANZA DE LA PROGRAMACIÓN
La enseñanza de la programación enfrenta algunos problemas obvios con el aspirante típico a
programador:
• Desconocimiento de la materia
• Carencia de habilidades para programar
• Carencia de disciplina en programación
Los estudiantes de licenciaturas en informática y afines, no son la excepción. Sin embargo, los profesores
de programación en la UPIICSA hemos observado que en los años recientes, los alumnos de los cursos
básicos (primero y segundo semestres) revelan en lo general algunos rasgos preocupantes que se añaden a
la problemática natural ya planteada, y que son:
• Falta de conciencia estudiantil
• Desinterés por sus estudios, en general
• Apatía por la programación, en particular
Nuestras reflexiones nos han llevado a los siguientes supuestos.
1) Los estudiantes adolecen de ciertas carencias derivadas del sistema educativo básico actual que se
reflejan en su desempeño inicial en la carrera. Por ejemplo, los estudiantes del primer semestre en
su cambio del nivel medio superior al superior, pasan abruptamente de un ambiente escolar
restringido a otro de casi libertad total. Este cambio causa un descontrol y desubica
temporalmente a muchos estudiantes, que no pueden manejar adecuadamente su nuevo grado de
libertad personal.
2) Por otra parte, el estudiante descubre un ambiente social que le agrada, hace nuevas amistades
con otros compañeros que tienen intereses comunes y con los cuales se identifica rápidamente. Su
nuevo estatus le atrae más que los asuntos académicos relacionados con su carrera y los descuida.
La programación es una materia esencial en cualquier licenciatura de informática y deberá estudiarse
desde los primeros semestres de la carrera. Su impacto es muy importante en la mayoría de las asignaturas
de la carrera y en el campo profesional del egresado. Por lo tanto es imperativo buscar las mejores
estrategias de solución para la enseñanza de la programación.
ESTRATEGIAS PARA LA ENSEÑANZA DE LA PROGRAMACIÓN.
Nuestra propuesta de estrategias para la enseñanza de la programación, está dirigida principalmente a las
instituciones educativas del nivel superior en informática y carreras afines, se basa en nuestra propia
experiencia y aceptamos de antemano que, entre muchas otras no sea la mejor ni la más afortunada pero
tenemos la esperanza que pudiera ser útil.
La enseñanza de la programación implica la consideración de otras dos áreas concurrentes importantes:
• Lenguajes de programación
• Herramientas de desarrollo
Su relación la mostramos en el siguiente diagrama
Lenguajes de
Programación
Conceptos y
técnicas de
Programación
Herramientas de
Desarrollo
ENSEÑANZA
DE LA
PROGRAMACIÓN
Aunque el propósito principal debe ser que el estudiante aprenda a programar, es conveniente que pueda
codificar los algoritmos en algún lenguaje de programación e implementarlo utilizando la herramienta de
desarrollo disponible y que se considere adecuada.
Nuestra experiencia a lo largo de varios años con los lenguajes de programación y sus herramientas
asociadas, nos ha mostrado que Pascal facilita el aprendizaje por primera vez, ya que la mayoría de sus
compiladores cuidan mucho al programador contra sus propios errores y omisiones, y aunque son de
alguna manera restrictivos no limitan la programación básica inicial. Otra gran ventaja es que el diseño de
Pascal corresponde totalmente a las técnicas de la Programación Estructurada y facilita notablemente la
conversión de seudo código. Además es un lenguaje con muchos tipos de datos predefinidos, simples y
estructurados.
También hemos observado que los estudiantes que poseen nociones o conocen el lenguaje C, tienen
dificultad para aprender el lenguaje Pascal, y al contrario quienes han aprendido primero Pascal no tienen
gran dificultad para aprender C. Estas observaciones no las hemos probado formalmente para todos los
casos.
Por su parte, la herramienta de desarrollo de ambiente integrado facilita que el estudiante pueda
implementar y probar sus algoritmos de manera sencilla y casi inmediata. Sin embargo, no debe dedicarse
demasiado tiempo al conocimiento de dicha herramienta en un curso básico de programación, es decir,
solamente deberá adiestrarse al estudiante en lo elemental para poder construir, compilar, enlazar y correr
los programas. En este aspecto las herramientas orientadas al lenguaje Pascal presentan menos problemas
en su manejo que las herramientas orientadas al lenguaje C.
La base de nuestra propuesta contempla los siguientes aspectos:
• Realizar un examen diagnóstico al inicio del curso
• Mostrar a los estudiantes la importancia de la programación en su formación profesional y en el
ejercicio profesional.
• Ubicar a la programación en la fase de desarrollo del ciclo de vida de los sistemas de información.
• Diferenciar plenamente la programación de la codificación.
• Privilegiar la enseñanza de la programación sobre los lenguajes de programación.
• Implementar los algoritmos en los lenguajes de programación PASCAL y C
El examen diagnóstico.
Los grupos no son homogéneos ni tienen los estudiantes los mismos antecedentes académicos, es muy
frecuente que se presenten grandes contrastes entre alumnos que ya han desarrollado algunas habilidades
de programación y conocen determinado lenguaje de programación, mientras que otros desconocen todo
en materia de programación. Un examen diagnóstico al inicio del curso le indicará al profesor la
composición de su grupo y el grado de heterogeneidad que enfrenta.
En el examen es conveniente preguntar al alumno si conoce algún lenguaje de programación y que
indique su nivel de dominio. Deberán hacerse preguntas generales sobre temas de programación y medir
las habilidades a través del análisis de un algoritmo sencillo, descrito ya sea en lenguaje natural o en
seudo código. El resultado del examen diagnóstico le indicará al profesor el nivel inicial de su curso y el
tratamiento que pudiera darle al grupo con base en el alumno medio.
Importancia de la programación en la formación y ejercicio profesional.
Aunque en el primer semestre de la carrera algunos estudiantes todavía no tienen muy claro para qué
están estudiando la licenciatura en informática, el profesor debe explicar la importancia que tiene la
programación en la vida profesional en el mediano y largo plazo así como durante los estudios en la
facultad en el corto plazo.
Si el profesor conoce el plan de estudios podría explicar a los estudiantes el impacto de la programación
en los diversos cursos donde la aplicará, por ejemplo en Estructura y Representación de Datos,
Algoritmos Computacionales, Bases de Datos, Sistemas de Información, Compiladores, Sistemas
Operativos, etc.
La programación y el ciclo de vida de los sistemas.
Es necesario que el estudiante comprenda que la razón principal para que aprenda la programación es
para resolver problemas. Pero también es muy importante que conozca el tipo de problemas que deberá
resolver en su campo profesional, por ejemplo: en la banca, las instituciones gubernamentales, hospitales,
el comercio, la industria, servicios turísticos, etc. El profesor deberá describir a los estudiantes con todo
detalle el ciclo de vida de los sistemas de información, con el propósito de que ubique la programación en
la fase de desarrollo.
Programación y codificación.
Tal como cita Guillermo Levine en su libro1, sobre programar y codificar “la diferencia entre ambos
conceptos es fundamental, y no está entendida del todo en el medio profesional de la computación ni por
completo, por desgracia, en el medio académico”. Más de una vez hemos escuchado decir “ya aprendí a
programar en Pascal” o bien “se requiere experiencia en programación en C”, lo correcto sería “ya
aprendí a codificar en Pascal” y “se requiere experiencia en el manejo del lenguaje C”.
Hay un consenso creciente entre los profesores de informática en que los estudiantes deben aprender
cómo se resuelven los problemas lógicamente (desarrollo de algoritmos) antes de preocuparse por la
puntuación y otros detalles de un lenguaje de programación. En el ciclo de la programación, la
codificación solamente representa una de las etapas posteriores al diseño de la lógica y permite escribir en
los términos de un lenguaje de programación la serie de pasos que realizará la computadora al seguir paso
a paso el programa.
Consideramos que una técnica apropiada para iniciar a los estudiantes en la programación es explicarles
el siguiente diagrama:
ENTRADA
PROCESO
SALIDA
El estudiante debe ser capaz de describir la salida como la solución a un problema a partir de los datos de
entrada y sus transformación a través del proceso. Para lograrlo, el profesor puede comenzar con ejemplos
muy sencillos y aumentar el grado de complejidad según el progreso que demuestre el grupo. En el
mercado editorial se encuentran diversas obras enfocadas a la programación independientemente de los
lenguajes2.
La programación estructurada es una técnica que facilita la construcción del proceso a partir de las
estructuras de control primitivas de secuenciación, selección y repetición condicional. La notación
propuesta por Guillermo Levine en sus libros es fácil de explicar y hemos visto buenos resultados en su
1
LEVINE, G. GUILLERMO
Computación y programación moderna.
Perspectiva integral de la informática.
PEARSON EDUCACIÓN, México, 2001.
ISBN: 968-444-485-0
Páginas:640
2
JOYANES, A. LUIS
Fundamentos de Programación.
Algoritmos y Estructura de Datos.
McGRAW HILL, España 1998.
ISBN: 84-481-0603-2
comprensión por los alumnos. Así mismo la definición de un seudo código en español, facilita el manejo
de las estructuras de control para la construcción de la lógica necesaria en el proceso.
Por otra parte, el concepto de tipo de datos debe ser explicado con toda claridad y profundidad, a partir de
su definición matemática para que el alumno sea capaz de asociar el tipo de datos y su representación en
la computadora. También deberá ser capaz de describir la llamada taxonomía de los datos.
Privilegiar la enseñanza de la programación sobre los lenguajes de programación.
Como ya se ha establecido en los párrafos anteriores, lo importante es que el estudiante aprenda a
construir la lógica del programa, sin embargo, se sugiere que en la medida de un avance satisfactorio, el
profesor describa en términos generales, el lenguaje de programación que se considere adecuado. La
estructura de un programa en dicho lenguaje y recomiende los libros de texto apropiados sobre el
lenguaje. El propósito es que sea el estudiante el que descubra por sí mismo la satisfacción de lograr con
éxito la implementación de sus algoritmos en la computadora, que sea capaz de realizar el proceso de
depuración y probar con datos críticos sus programas.
El profesor de programación no debe olvidar que su mejor esfuerzo lo debe orientar siempre a que el
estudiante adquiera el conocimiento sobre las técnicas de programación, a la definición adecuada de los
datos y al desarrollo de la habilidad necesaria para el diseño y construcción de los algoritmos con un
estilo disciplinado que les dé orden y claridad.
UPIICSA. México D. F. agosto de 2002.
BIBLIOGRAFIA
1) LEVINE, G. GUILLERMO
Computación y programación moderna.
Perspectiva integral de la informática.
PEARSON EDUCACIÓN, México, 2001.
ISBN: 968-444-485-0
Páginas:640
2) JOYANES, A. LUIS
Fundamentos de Programación.
Algoritmos y Estructura de Datos.
McGRAW HILL, España 1998.
ISBN: 84-481-0603-2