Enseñanza Clei 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Asignaturas Introductorias a la Programación:

Una Discusión acerca de sus Objetivos y Contenidos Programáticos

Carla Salazar Serrudo


Universidad Mayor de San Simón, Dpto. Informática
Cochabamba, Bolivia
[email protected]

Claudio Delrieux
Universidad Nacional del Sur de Bahía Blanca, Dpto. Ingeniería Eléctrica y
de Computadoras
Bahía Blanca, Argentina
[email protected]

Abstract

This paper outlines to discussion about the way in which the objectives and programmatic contents of the
introductory programming courses have gone evolving. In a growing number of Latin American Universities it is
possible to observe a tendency to teaching to programming by means the objects oriented languages such as Java or
C++ instead of teaching by means of the structured programming and the specific didactic languages as Pascal. We
take as examples the courses in those the authors have full knowledge (Universidad Mayor de San Simón, Bolivia
and Universidad Nacional del Sur de Bahía Blanca, Argentina), although we are also considered other cases. After
carrying out an analysis of the evolving of these programmatic contents and their new difficulties, we think about
some solutions that they could improve to the process of teaching-learning of the mentioned course.

Keywords: Introduction to Programming, programmatic contents, first course

Resumen

Este documento plantea una discusión acerca de la manera en la cual han ido evolucionando los objetivos y
contenidos mínimos en las asignaturas introductorias a la programación. En un creciente número de Universidades
de América Latina es posible observar una tendencia a ir abandonando la introducción por medio de la
programación estructurada y los lenguajes didácticos específicos como Pascal, con el objeto de enseñar a los
alumnos ingresantes directamente los lenguajes orientados por objetos de última tecnología como Java o C++ o los
lenguajes basados en componentes. Se toman como ejemplos las asignaturas introductorias en las que los autores
tienen conocimiento pleno (en la Licenciatura en Informática de la Universidad Mayor de San Simón y en la
Ingeniería Electrónica y Computadoras de la Universidad Nacional del Sur), aunque se consideran otros casos
también. Después de realizar un análisis de cómo han ido evolucionando estos contenidos programáticos, con las
nuevas dificultades asociadas al cambio, se plantean algunas soluciones que podrían mejorar el proceso de
enseñanza-aprendizaje de la mencionada asignatura.

Palabras claves: Introducción a la programación, contenidos programáticos, primera asignatura


1 Introducción

La constante evolución de las tecnologías derivadas de las Ciencias de la Computación, especialmente las que tienen
que ver con los paradigmas de programación, las metodologías de diseño y desarrollo, y especialmente los lenguajes
de programación asociados, ejercen una permanente presión sobre los docentes de las carreras universitarias
responsables de elaborar las currículas. Este fenómeno produce beneficios bastante discutibles, y como lo anticipara
Dijkstra [9], puede ser un factor que distorsione la orientación que reciben los educandos en su paso por la
Universidad.

Es tal vez posible aceptar el argumento de mantener actualizadas las carreras a las novedades tecnológicas, pero
dicho argumento es sostenible solamente en el caso de las asignaturas de los últimos años de las carreras. En las
asignaturas introductorias parece temerario enfrentar a los alumnos que recién terminan el secundario -y que por lo
tanto no están ni intelectual ni internamente maduros para ello- al esfuerzo intelectual que supone el aprendizaje
cabal de metodologías y lenguajes de programación que se basan en abstracciones muy elaboradas, y cuya
justificación y necesidad los alumnos tampoco están en condiciones de entender.

Si una tendencia similar se efectuara en otras ciencias, aún aquellas que no tienen un ritmo de renovación
tecnológica tan acelerado como las Ciencias de la Computación, el resultado sería ostensiblemente inadecuado:
pensemos por ejemplo cómo sería impartir a los ingresantes a Licenciatura en Física las últimas ecuaciones de las
supercuerdas en las materias introductorias. Esto sería incorrecto aún si la introducción a la disciplina fuese con las
teorías de comienzo del siglo pasado (Relatividad o Mecánica Cuántica).

Sin embargo, una situación análoga a esta comienza a ser la tendencia mayoritaria en las carreras de Ciencias de la
Computación. En efecto, es cada vez más común el fenómeno por el cual las currículas de las primeras asignaturas
de programación se van saturando de más y más temas, cuyo desarrollo conceptual y maduración requiere tiempo y
práctica. Últimamente -con el auge y la moda del lenguaje Java y la programación orientada por objetos en entornos
distribuidos- en estos cursos se asume que Java debe ser el lenguaje introductorio.

En este trabajo reseñamos estas tendencias en algunos casos particulares de conocimiento directo de los autores,
analizamos las desventajas a veces flagrantes que tiene este enfoque “moderno” de introducción a la programación,
y proponemos un retorno a un estilo de introducción a la programación basado en la programación estructurada, que
era lo usual hace una década.

2 Descripción de los Contenidos Programáticos de Enseñanza


En esta sección se describirán brevemente la transformación de los contenidos programáticos de la asignatura
introductoria a la programación en la Carrera de Informática de la Universidad Mayor de San Simón (Cochabamba,
Bolivia) y en la Carrera de Ingeniería Eléctrica y de Computadoras de la Universidad Nacional del Sur (Bahía
Blanca, Argentina) a través de los años, desde su creación hasta al presente. También se presentarán escuetamente
los contenidos programáticos de dicha asignatura en otras Universidades y Carreras Latinoamericanas.

2.1 Carrera de Licenciatura en Informática de la Universidad Mayor de San Simón (Cochabamba, Bolivia)

La Carrera de Licenciatura en Informática de la Facultad de Ciencias y Tecnología de la Universidad Mayor de San


Simón (UMSS) fue creada el año 1979. Es una carrera relativamente joven y actualmente es una de las carreras
profesionales de moda, donde confluye un gran número de estudiantes, provocando la masificación de la misma. El
plan de estudios está compuesto por 44 asignaturas que se imparten de manera semestralizada (2 semestres por año).

La asignatura Introducción de la Programación de la Carrera de Licenciatura en Informática es la primera de una


serie de asignaturas dedicadas a la enseñanza de algoritmos y programación que proporcionan las bases necesarias
para resolver problemas con ayuda de la computadora. Se encuentra ubicada en el primer semestre de la malla
curricular de dicha Carrera y actualmente tiene como objetivo enseñar la programación estructurada y orientada a
objetos con el lenguaje Java [2].

La asignatura tiene al presente 1687 alumnos repartidos en 7 grupos, cada grupo cuenta con 241 alumnos en
promedio. Como los cursos son numerosos se dificulta el proceso de enseñanza aprendizaje de la asignatura y
difícilmente se puede pensar en una enseñanza personalizada y medida para cada alumno. Por ello, las clases son
necesariamente magistrales con pizarra donde el profesor dicta la asignatura y propone algunos ejercicios a los
estudiantes. Por otra parte, se debe anotar que el Laboratorio de Computación de la Carrera apenas cuenta con 40

2
computadoras Pentium III, número insuficiente para satisfacer las necesidades estudiantiles y menos para impartir
clases prácticas.

A continuación se describirán los contenidos mínimos de dicha asignatura a lo largo de los 24 años de vida de la
Carrera.

Tabla 1.Transformación de los contenidos mínimos programáticos de la asignatura Introducción a la Programación


(UMSS)

Periodo Contenido mínimo Lenguaje Carga horaria


Semanal
1979 - 1989 1. Conceptos básicos de programación Basic Teoría: 6
2. Algoritmos Práctica: 2
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Arreglos
7. Cadenas
1990 – 1994 1. Conceptos básicos de programación Pascal Teoría: 4
2. Algoritmos Práctica: 2
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Procedimientos y funciones
7. Arreglos
8. Cadenas
1995 – 1999 1. Conceptos básicos de programación C++ Teoría: 4
2. Algoritmos Práctica: 2
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Funciones
7. Arreglos
8. Cadenas
9. Programación orientada a objetos básica
2000 – 1. Introducción a la computación Java Teoría: 4
presente 2. Algoritmos Práctica: 2
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Funciones
7. Arreglos
8. Cadenas
9. Programación orientada a objetos básica
10. Encapsulación
11. Polimorfismo
12. Herencia simple y múltiple
13. Serialización y persistencia

Como se puede observar en la tabla precedente, el contenido programático de la asignatura Introducción a la


Programación ha cambiado considerablemente a lo largo de los años siguiendo la tendencia de evolución de los
lenguajes y conceptos de programación. En los primeros 10 años de la Carrera se enseñaba programación
imperativa: conceptos básicos de programación, algoritmos, variables y constantes, estructuras condicionales,
estructuras iterativas, arreglos y cadenas con el lenguaje Basic. En los años comprendidos entre 1990 y 1994 se dictó
programación estructurada (esto es: conceptos básicos de programación, algoritmos, variables y constantes,
estructuras condicionales, estructuras iterativas, arreglos y cadenas) con el lenguaje Pascal.

A partir del año 1995 se decidió actualizar el lenguaje de programación de dicha asignatura y se optó por el lenguaje
C++, que además de la programación estructurada incluía la programación orientada a objetos, por lo que el
contenido programático de dicha asignatura se incrementó en varios temas relacionados con la programación
orientada a objetos básica.

3
En 1999 se decidió volver a modernizar dicho contenido para enseñar el lenguaje Java en vez del C++, en virtud que
era el último lenguaje en boga. Por supuesto, se extendió el contenido de la asignatura con temas relacionados a la
programación orientada a objetos avanzada y applets.

También se puede apreciar en el cuadro anterior, cómo se ha incrementado la cantidad de temas avanzados y al
mismo tiempo se ha disminuido el número de horas destinadas al proceso de enseñanza aprendizaje.

2.2 Carrera de Ingeniería Eléctrica y de Computadoras de la Universidad Nacional del Sur (Bahía Blanca,
Argentina)

La experiencia en el Departamento de Ingeniería Eléctrica y de Computadoras de la Universidad Nacional del Sur


(Bahía Blanca, Argentina) es un poco diferente por el contexto en el cual ha debido operar. Básicamente se trata de
una carrera de Ingeniería Electrónica, en la cual la programación cumple una función de formación básica, como la
física y la matemática. En la orientación a Computadoras los alumnos afianzan estos conceptos y aprenden el
desarrollo de sistemas industriales en lenguajes como C++ o Java (básicamente para la programación de sistemas en
tiempo real y embedded systems).

La asignatura introductoria es cuatrimestral, y comenzó junto con la carrera en 1960, con el nombre de Utilización
de Computadoras, y en su comienzo, sin posibilidades de realizar prácticas por la falta de computadoras en la
Universidad, se utilizaba Fortran y se enviaban las tarjetas perforadas para su ejecución en otra ciudad. En la década
del 70, con el influjo de docentes posgraduados en EEUU en la materia y con la compra de una minicomputadora
PDP, la materia se renovó, pasando a llamarse Sistemas de Programación I, se introdujo una segunda parte con
conceptos avanzados, y pasó a utilizarse Basic por sus facilidades interactivas.

Este esquema se mantuvo durante casi dos décadas, hasta que el advenimiento definitivo de las PCs y la existencia
de compiladores Pascal permitió basar los objetivos y contenidos del curso en la programación estructurada. En años
recientes se continuó utilizando lenguajes estructurados en sus modernas versiones de programación visual, y se
introdujo la programación basada en componentes y la programación orientada por objetos.

Tabla 2. Transformación de los contenidos mínimos programáticos de la asignatura Sistemas de Programación I


(UNS)

Periodo Contenido mínimo Lenguaje Carga horaria


Semanal
1960 - 1973 1. Conceptos básicos de programación FORTRAN Teoría: 6
2. Algoritmos Práctica: 6
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Archivos
1973 – 1990 1. Conceptos básicos de programación Basic Teoría: 6
2. Algoritmos y descripción de tareas Práctica: 6
3. Variables y constantes
4. Estructuras condicionales
5. Estructuras iterativas
6. Procedimientos y funciones
7. Arreglos
8. Árboles y recursión
1990 – 1997 1. Descripción de tareas en pseudocódigo Pascal Teoría: 4
2. Variables, constantes y parámetros Práctica: 4
3. Estructuras condicionales
4. Estructuras iterativas
5. Procedimientos y funciones.
6. Arreglos y estructuras indexadas
7. Recursión
8. Árboles y estructuras no lineales
9. Introducción a la programación
orientada a objetos
1998 – 1. Introducción a la programación y Delphi y Teoría: 4
presente descripción de tareas en pseudocódigo Visual C++ Práctica: 4

4
2. Variables, constantes y parámetros
3. Estructuras condicionales
4. Estructuras iterativas
5. Procedimientos y funciones.
6. Arreglos y estructuras indexadas
7. Recursión
8. Árboles y estructuras no lineales
9. Introducción a la programación
orientada a objetos.
10. Introducción a la programación
orientada por componentes

2.3 Otras Carreras de Informática en América Latina

En otras carreras de Ingeniería en la UNS, como ser las Ingeniería Industrial, Civil y Mecánica, es también
obligatorio un curso introductorio de programación. En este caso, y dada la experiencia de los docentes de
programación con la Ingeniería Electrónica, los objetivos y contenidos programáticos de la materia Elementos de
Computación son bastante moderados. En particular se introduce a los alumnos al lenguaje HTML estático para que
dichos elementos sean comprendidos de una manera gradual. Una vez que adquieren experiencia y comprenden la
necesidad de objetivos más ambiciosos, se los introduce al HTML dinámico por medio de la programación de
scripts en el lenguaje JavaScript. De esa manera alcanzan a conocer pragmáticamente los elementos de un lenguaje
basado en componentes, y pueden desarrollar aplicaciones basadas en la WEB de uso industrial.

En la Universidad Nacional de la Patagonia Austral, durante 2003 se produjo también la transición de programación
estructurada a orientada por objetos, con el consiguiente pasaje del uso de Pascal a JAVA. Los contenidos de la
materia introductoria, Programación I, cuatrimestral, dictada en el primer cuatrimestre de la carrera, hasta 2002
eran: Representación de problemas, Diseño de algoritmos, Tipos de datos, Estructuras de control, Procedimientos y
Funciones, Recursión, Arreglos, Ordenamiento y Búsqueda, Registros, Archivos y Conjuntos. El programa de la
misma asignatura, en el mismo contexto, para el año 2003 es: Representación de problemas, Diseño de algoritmos,
Tipos de datos, Estructuras de control, Arreglos, Ordenamiento y búsqueda, Funciones e Introducción a la
Programación Orientada a Objetos.

En la Carrera de Ingeniería en Computación de la Universidad del Bio-Bio de Chile, actualmente se enseña


introducción a la programación usando el lenguaje de programación Java. Previo a este lenguaje se enseñaba C++.
En dicha carrera se enseña principalmente conceptos de programación estructurada, y se cambió de C++ a Java para
facilitar al estudiante la comprensión de los conceptos en vez de la comprensión del uso de punteros [4] .

En otras carreras de la Facultad de Tecnología de la UMSS también existen asignaturas introductorias a la


programación con el objetivo que los estudiantes sean capaces de usar la computadora como una herramienta para el
desarrollo de sus disciplinas, en Carreras tales como la Ingeniería Electrónica, Civil de Construcciones, Industrial,
Física y Matemática. Dado el objetivo y la preparación de los profesores, típicamente se enseña programación
imperativa con los lenguajes de moda: Visual Basic y Delphi. Ambos, lenguajes visuales que son rápidos de
aprender y bastante interactivos. Previo a estos lenguajes se enseñaba Pascal, Basic y Fortran.

3 Análisis de los Contenidos Programáticos


En los ejemplos anteriores se puede apreciar una tendencia generalizada en la enseñanza de la Informática que se
basa en la incorporación continua de las últimas tendencias tecnológicas a los contenidos programáticos de las
asignaturas, ya sea en forma de lenguaje de programación, paradigmas de programación, modelos, metodologías,
plataformas, arquitecturas de sistemas y similares.

Es verdad, las Ciencias de la Computación es una rama del conocimiento que cambia continuamente, y es
conveniente actualizar periódicamente los contenidos de las asignaturas. Sin embargo, muchas otras disciplinas
(ciencias básicas, ingenierías, ciencias naturales, ciencias sociales, etc.) son también escenario de un cambio
permanente, en ocasiones más revolucionario aún que lo que ocurre en la Informática. Sin embargo, las carreras
universitarias asociadas –sobre todo en los objetivos, metodología y contenidos programáticos de sus asignaturas
introductorias– no cambian con tanta rapidez y radicalidad como lo que es posible observar en las carreras
informáticas. Si consideramos que la ciencia de la computación ya tiene más de 50 años de vida, actualmente,
¿podemos decir que tenemos alguna base sólida sobre la que se asientan los conocimientos de las ciencias de la
computación?. Si todo cambia tanto en la Informática, ¿los educadores de esta ciencia debemos cambiar, sino

5
totalmente, en gran parte los contenidos programáticos de las asignaturas, para estar actualizados? ¿Cada cuánto
tiempo se deben actualizar los contenidos de las asignaturas? ¿Están los alumnos ingresantes intelectualmente
preparados para asimilar los conceptos más modernos sin ser gradualmente introducidos? Estos y muchos otros
interrogantes surgen en las mentes de los educadores cuando se analizan las mallas curriculares informáticas.

3.1 Transformación de los Contenidos Programáticos en ambas Universidades

De acuerdo a las tablas anteriores que resumen la transformación de los contenidos programáticos de una asignatura
introductoria a la programación en dos carreras universitarias latinoamericanas, se puede apreciar que su contenido
ha ido cambiado principalmente por dos factores:

1. El lenguaje de programación
2. El paradigma de programación

En este caso, se puede apreciar claramente que el lenguaje de programación y paradigma de programación están
estrechamente ligados. Se puede ver por ejemplo que el lenguaje FORTRAN y Basic implantan la programación
imperativa, el lenguaje Pascal la programación estructurada y los lenguajes C++ y Java la programación orientada a
objetos. El lenguaje Delphi y Visual C++ además incluyen la programación basada en componentes.

Se puede notar claramente que cada cambio de lenguaje acarreó consigo la incorporación de mayor número de
temas al contenido básico original de la asignatura, que consistía en la enseñanza de programación imperativa (ver
gráfico 1). En el caso de la UMSS el número de temas prácticamente se duplicó (6 a 13) y en el caso de la UNS el
número de temas aumentó en un 40% (de 6 a 10). Se adicionaron temas tales como: recursión, programación
orientada a objetos y programación orientada a componentes en una asignatura considerada como la primera y
básica de una serie de programaciones. Al mismo tiempo se puede apreciar que la carga horaria de dicha asignatura
disminuyó de 8 a 6 horas semanales en la UMSS y de 12 a 8 horas semanales en la UNS.

Se debe resaltar que en estas universidades no sólo se ha incrementado la cantidad de temas de enseñanza, sino
también la complejidad de los mismos. La programación orientada a objetos requiere mayor capacidad de
abstracción que la programación estructurada. La recursión también es un tema que demanda mayores capacidades
cognoscitivas por parte de los estudiantes.

14
12
10
# Temas

8
6
4
2
0
FORTRAN Basic Pascal C++ /Delphi / Java
VC++
Lenguaje de programación

UMSS UNS

Gráfico 1. Relación entre lenguaje de programación y número de temas del contenido programático

Los estudiantes que cursan la materia introductoria a la programación en su mayoría son personas de
aproximadamente 18 años de edad y recién graduados del colegio; es decir mal preparados por una educación
secundaria deficiente y todavía sin la suficiente maduración de sus capacidades cognoscitivas como para afrontar
conocimientos vanguardistas complejos.

6
3.2 Masificación Estudiantil

Actualmente, uno de los factores que afectan directa y negativamente el proceso de enseñanza aprendizaje de las
universidades es la masificación estudiantil. Existe una gran afluencia estudiantil, pero los presupuestos se
mantienen iguales en el mejor de los casos. Este hecho influye en los resultados en la actividad académica de la
Universidad en su conjunto. Desde la década de los años ’80, la tendencia creciente de la población estudiantil se ha
tornado alarmante, existiendo riesgo de un colapso funcional de la misma [4]. Esto es una realidad en países como
Bolivia o Argentina, donde las Universidades Nacionales son libres y gratuitas.

La masificación del estudiantado se considera como la causa principal del descenso cualitativo en la enseñanza en
las universidades públicas, debido a la necesidad de bajar las exigencias de ingreso y de promoción para que la
mayoría del estudiantado pueda circular por el conducto de las carreras universitarias y alcancen el objetivo de un
título que les permita funcionar en la sociedad burocratizada del presente.

En el interior de las universidades se discute también como causa colateral de ese descenso cualitativo, la deficiente
preparación de los estudiantes provenientes de la educación media o secundaria y, en algunas ocasiones, las cada día
más bajas exigencias en la selección del profesorado universitario.

En la tabla 3 se puede apreciar el incremento de alumnos en el curso de Introducción a la Programación de la UMSS


a través de algunos años [8], es decir se puede apreciar claramente la masificación de dicha asignatura. Dicha
masificación se debe a dos motivos: a la afluencia de los estudiantes a una carrera de moda y al alto índice de
reprobación de la materia (90% en promedio en los últimos cinco años). La situación en la UNS es análoga.

Tabla 3. Número de estudiantes por curso en Introducción a la Programación (UMSS)

Año # Estudiantes por


curso (promedio)
1980 50
1990 100
1995 150
2000 220
2003 241

3.3 Discusión

En las anteriores secciones se ha mostrado cómo se ha incrementado en cantidad y complejidad la cantidad de temas
del contenido programático de una asignatura considerada básica e introductoria a la programación. Puesto que se ha
incrementado la cantidad de temas y a su vez se ha reducido la carga horaria, los contenidos apenas se tratan
superficialmente para conseguir terminar el temario propuesto. Sin embargo, los exámenes exigen desarrollar
problemas relativamente complejos para dicho nivel (problemas con ocho objetos en promedio que interactúan entre
sí).

Si suponemos que el propósito de una asignatura introductoria a la programación es presentar los conceptos y
herramientas básicas de programación para que el estudiante pueda resolver problemas pequeños usando la
computadora, ¿no estamos en contradicción al enseñarle conceptos avanzados como programación orientada a
objetos, programación basada en componentes y recursión en un curso introductorio, que generalmente se ubica en
el primer semestre o año de una carrera universitaria?.

En carreras consolidadas de otras disciplinas, como la Ingeniería, Física, Matemáticas, Química, Medicina,
Economía y muchas más, las asignaturas de primeros semestres o años se mantienen desde hace muchos años con el
mismo contenido programático. Así por ejemplo, en la primera física se imparte la física de Newton (esta física
asume que los eventos físicos del mundo real son absolutos, es decir modela al mundo de manera muy simplificada,
data del siglo XVII), en la segunda física la física de Faraday-Maxwell (basada en la noción de campo, es decir, la
física del siglo XVIII y XIX) y recién en cursos del tercer año los alumnos estudian la física relativista de Einstein y
la mecánica cuántica de Heisemberg-Bohr. En las ciencias jurídicas se enseña la lógica de Aristóteles (siglo IV
A.C.), considerada piedra fundamental de la lógica moderna, y después se enseña la lógica simbólica (siglo XX) y
lógicas más avanzadas. Siguiendo el mismo ejemplo de la asignatura lógica en las ciencias de la computación, en los
primeros cursos se enseña lógica proposicional, y en los últimos semestres lógica de predicados de primer orden y
lógica difusa, o sea, de lo sencillo a lo complejo y avanzado, y no al revés.

7
Surge la pregunta, ¿por qué los educadores en ciencias computacionales nos empeñamos en cambiar constantemente
las asignaturas básicas y propias de la Carrera, en son de enseñar conceptos nuevos y últimos a los estudiantes? Las
asignaturas de últimos cursos, consideradas en muchas universidades como optativas, electivas o de mención, ¿no
tienen la misión de presentar al estudiante las nuevas tecnologías? ¿No seria mejor enseñar programación
estructurada y en posteriores cursos los demás paradigmas? De esta manera se seguiría la tendencia del desarrollo de
la ciencia, primero los conceptos simples y poco a poco los restantes conceptos más desarrollados. Esto además
acompaña muchas teorías epistemológicas y de la psicología cognitiva, según las cuales para poder madurar los
conceptos hay que reconstruir su desarrollo en la mente de los alumnos, lo cual se puede realizar solamente si se
sigue el desarrollo histórico y la etiología de esos conceptos [5].

Lo mismo es posible afirmar con respecto a las habilidades específicas que se pretende que los alumnos asimilen y
desarrollen en esta asignatura. En todos los casos se busca formar en los alumnos la competencia para pensar
algorítmicamente y la capacidad de programar pequeños problemas. En cambio, al enseñarles programación
orientada a objetos estamos exigiendo en ellos capacidades de análisis y diseño de software de manera prematura.

Es verdad que las ciencias de la computación son radicalmente diferentes a otras, tal como afirma Dijkstra en su
célebre artículo acerca de la enseñanza de programación [9]. Pero precisamente por dicha razón es que su enseñanza
debe ser estricta y cuidadosa. Y sobre todo, en vez de ser la evolución tecnológica en la sociedad la que guíe la
enseñanza de la informática, debe ser la Universidad la que guíe a la sociedad.

También, como se ha mencionado previamente, hoy en día las condiciones de enseñanza se hacen más dificultosas
por la masificación estudiantil y ahora los alumnos están sujetos a exigencias educacionales e instruccionales
mayores. No pretendemos disminuir el nivel de exigencia, sino adecuarlo al nivel del curso y madurez estudiantil.

4 Propuesta de Cambio
En este trabajo nosotros proponemos lo siguiente cómo contenido analítico estándar de una asignatura introductoria
a la programación:

1. Enseñanza de programación estructurada que comprendería los siguientes temas: conceptos básicos de
programación, algoritmos y pseudocódigo, variables y constantes, estructuras de control condicionales,
estructuras de control iterativas, subprogramas y estructuras de datos básicas (arreglos y cadenas).
a. Sólo con algoritmos, de manera que se desarrolle el pensamiento algorítmico en el alumno,
abstrayendo cualquier lenguaje de programación de tercera generación.
b. Con algún lenguaje de programación de tercera generación, a excepción de aquellos su sintaxis sea
muy compleja, tales como el C ó el C++. Consideramos que el Pascal es ideal para la enseñanza
básica.

2. Enseñanza de conceptos básicos de la computación que incluiría los siguientes temas y lenguaje: conceptos
básicos de computación, partes de una computadora, variables y constantes, HTML, desarrollo de sitios
Web.

Las nuevas tendencias en programación y lenguajes sugerimos que se impartan en los últimos semestres o años de
carrera, de manera que los estudiantes asienten de manera sólida sus conocimientos básicos y recién después
conozcan los paradigmas orientados a objetos, basados en componentes, lenguajes funcionales, lógicos, etc.

La discusión acerca del lenguaje estructurado también es algo que debe hacerse desde el punto de vista del alumno.
Un lenguaje como C++ tiene una sintaxis excesivamente compleja, asistemática y de comportamiento imprevisible.
El lenguaje C es más reducido, pero no fomenta las buenas prácticas de programación que un alumno ingresante
debería tratar de respetar, los mensajes de error de los compiladores usuales son crípticos y no ayudan en nada a
descubrir el origen de los errores. Además, es un lenguaje basado en operaciones y no sentencias, lo cual es
francamente inconveniente desde un punto de vista formal (¿cómo se entiende que una asignación o un condicional
producen un valor como resultado?), pequeños cambios sintácticos tienen grandes diferencias semánticas (escribir
“==” en vez de “=”). En la práctica, un alumno con buen manejo de Pascal puede aprender C por sí solo sin adquirir
malos hábitos o confundirse.

5 Conclusiones y Recomendaciones
1. En las asignaturas introductorias a la programación se debería enseñar conceptos básicos de programación,
comenzando por algoritmos y terminando con programación estructurada.

8
2. Si en una asignatura introductoria se elige enseñar un lenguaje de programación se deberá escoger alguno
que sea relativamente simple en sintaxis. Por ejemplo C++ es muy complejo en lo que respecta a sintaxis.
Pascal sería una buena opción.

3. Actualizar las asignaturas finales de la Carrera. En algunos países se denominan asignaturas electivas,
opcionales o de mención que tienen como propósito especializar al estudiante en alguna subárea de la
Carrera y en ofrecerle las últimas tendencias los últimos semestres o año de la carrera, no en los primeros
cursos.

4. Cada vez que se pretenda cambiar los contenidos analíticos de una asignatura introductoria a la
programación, primero se debería cuestionar acerca de los objetivos que se tratan de alcanzar y si es
conveniente que alumnos que apenas están dando sus primeros pasos en la programación deban saber las
últimas tendencias en lenguajes y paradigmas de programación.

5. No es aconsejable que en una asignatura introductoria a la programación se incluya más de un paradigma


de programación.

Referencias

[1] Braunstein, S., Gioia, A., “Introducción a la programación y a las estructuras de datos”, Editorial
Universitaria de Buenos Aires, 1987, Argentina.
[2] Departamento de Informática, “Plan global de Introducción a la Programación”, Departamento de
Informática, Universidad Mayor de San Simón, Cochabamba, agosto 2002.
[3] DPA, “Guía pedagógica universitaria”, Dirección de Planificación Académica, Universidad Mayor de San
Simón, Cochabamba, 1997.
[4] Gutierrez, G., “Propuesta de un primer curso de estructuras de datos usando el enfoque de orientación a
objetos y el lenguaje Java”, Proceedings III Congreso Chileno de Educación Superior en Computación,
Chile, Punta Arenas, noviembre 2001.
[5] Leclercq, Dieudonné, “Pour une pédagogie universitaire de qualité”, Ed. Mardaga, 1998, Belgique.
[6] Omonte, R., Gerrissen, J., Ophoff, H., Azero, P., “Documento de la Reformulación del Plan de Estudios de
la Carrera de Licenciatura en Informática de la Universidad Mayor de San Simón”, Universidad Mayor de
San Simón, Octubre, 1994.
[7] Swierstra, D. “What Computer Science Education is about!”, Presentation en Congreso de Ciencias de la
Computación Bolivia CCBOL’02, Cochabamba, Bolivia, 2002.
[8] Vicerrectorado UMSS, Universidad en cifras 2002, Universidad Mayor de San Simón, Cochabamba, enero,
2003.
[9] Dijkstra, E. “On the Cruelty of Really Teaching Computer Science”, Communications of the ACM, June
1990.

También podría gustarte