Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Formación de Ingenieros
1 Universidad del Valle de México Campus Hispano, Av José López Portillo 222, Coacalco de
Berriozabal Estado de México, 55700. México
ricardo.vargas@uvmnet.edu
2 Centro de Investigación en Computación-IPN, Av. Juan de Dios Batíz, esquina con Miguel
Resumen. Con el paso de los años las teorías de la programación, los lenguajes, los
paradigmas, las técnicas de diseño de algoritmos, las técnicas de solución de problemas,
las herramientas, los tópicos curriculares, las técnicas de formación de ingenieros, las
herramientas y técnicas de enseñanza y muchas otras cosas de las cuales depende la
consolidación del conocimiento y talento de los programadores han evolucionado. Este
trabajo hace una recopilación histórica sobre los principales elementos, su impacto, su
evolución y su situación actual en el contexto de la Ingeniería de Software y la formación
de recursos humanos valiosos.
1 Introducción
3 Diseño de Algoritmos
Dentro del paradigma libre aparecieron con uso generalizado los Diagramas de
Bloques, Diagramas de Flujo, Grafos, Tablas de Verdad, Tablas de Decisiones,
Árboles de decisiones y HIPO. Cada uno con sus reglas y características
propias.
En el paradigma estructurado se continuó con la mayoría de las ya existentes y
se agregaron, o consolidaron, otras como son el Pseudocódigo y los
ordinogramas.
Durante el paradigma orientado a objetos no hay surgimiento de herramientas
nuevas sobre el diseño de algoritmos más que el diagrama de actividades [17]
que originalmente no era parte de UML aunque ya se le incluyó.
Es interesante observar que la mayoría de las herramientas aparecen en el
modelo de programación libre quizás por la ausencia de estructuras de control
formales. Muchas de ellas prevalecen durante la fase de la programación
estructurada pero solo el pseudocódigo sobrevive hasta la programación
orientada a objetos lo cual alerta de la necesidad de fortalecer o actualizar las
herramientas en este particular.
4 Aprendizaje de la Programación
4. 1 Conceptos
Los más relevantes son los siguientes: Método inductivo (tradicional), Método
de la disección (leer primero programas escritos para averiguar que hacen),
Método deductivo (utiliza la disección pero también incluye la escritura directa
de código experimental), Acercamiento progresivo (ejemplo del robot Karel [18]
o de Logo). Modelo constructivista (Vigosky), Todos comparten el objetivo de
desarrollar la habilidad de la programación en los estudiantes, sin embargo, las
investigaciones en el área de conocimiento de las ciencias sociales no
concluyen cual es el modelo más efectivo. De hecho, Gardner ha explicado a
través de su teoría de las inteligencias múltiples que las personas no tienen
una sola inteligencia cognitiva sino que tienen varias que se entremezclan y
complementan para que pueda enfrentar de mejor forma los problemas que
trata de resolver. Adicionalmente, también existe la teoría de los diversos
estilos de aprendizaje que señala que hay personas que aprenden mejor
observando (denominadas visuales), otras escuchando (auditivas) y otras a
través de la acción y movimiento (llamas kinestésicas). Todo esto es rematado
con la idea humanista de Carl Rogers quien indica que el aprendizaje es un
viaje estrictamente individual basado en las experiencias propias y exclusivas
de la persona que aprende por lo que tratar de estandarizar en un solo método
los procesos de aprendizaje resulta infértil. En conclusión, lo que es claro es
que existe la necesidad de crear una masa crítica de profesionales
competentes en la programación pero no hay una respuesta contundente de
cómo debe lograrse esto.
4.4 Tácticas (Técnicas Instrucionales) de enseñanza aprendizaje
Referencias
[1] Timothy Budd, Introducción a la Programación Orientada a Objetos. Addison Wesley, pp. 2, xiii. 1992.
[2] J. Glenn Brookshear. Introducción a las ciencias de la computación. Addison Wesley, pp. 149, 141.
1995.
[4] Donald Knuth. The Art of Computer Programming, Vol. 1: fundamental algorithms. Addison Wesley,
1997
[5] Conrado Böhm y Giuseppe Jacopini, Flow diagrams, Turing Machines and languages with only two
formation rules. ACM, vol. 9 num 5 mayo 1966.
[6] Eduardo Alcalde y Miguel Garcia, Metodología de la Programación. Aplicaciones en COBOL y Pascal,
MCGraw Hill, pp. 205, 219, 221, 224, xii, 1992
[7] Dahl, Ole, Edsger Dijkstra y Charles Hoare, Structured Programming, Academic Press, New Cork,
1972.
[8] C.M. Geschke y J.G. Mitchell, On the problem of uniform references to data structures, SIGPLAN
notices, vol. 10, No. 6 junio 1975, pp 31-42.
[9] David Lorge Parnas, A technique for software module specification with examples, Comunnications of
the ACM, vol. 15, No 5. Mayo 1972, pp.330-336.
[10] C.A.R. Hoare. Proof of correctness of data representations, Acta informática, Vol. 1, 1972, pp. 271-
281.
[11] Barbara H. Lizkov y Stephen N. Zilles. Programming with abstract data types, SIGPLAN notices, 9, 4
abril 1974 pp. 50-59.
[13] Jean D. Warnier. Entrainement a la programmation. Constriction des programmes. 1975
[14] M. A. Jackson, Principles of program design, Academic Press, Londres, 1975
[15] Luis Joyanes Aguilar, Metodología de la Programación.Diagramas de Flujo y programación
estructurada, McGraw Hill, pp 223, 39, 11 1987
[16] R. Geoff Dromey, A model for software product quality, IEEE Transactions on Software Engineering,
vol. 21, No. 2 Febrary 1995 pp 146-162
[17] Martin Fowler, UML distiled, Addison Wesley Longman, 1997
[18] Richard E. Pattis, Introducción Gradual a la programación . El Robot Karel, Limusa, 1987
[19] Brian W. Kernighan y Dennis M. Ritchie, El Lenguaje de Programación C, Pearson Educación, pp.4-5,
1991
[20] Rick Decker y Stuart Hirshfield, Pascal's Tirangle. Reading, Writen and Reasoning, PWS-Keny, pp.
xiv, 1992
[21] Peter E. Gosling, Programación Estructurada para microcomputadoras, Mc Graw Hill, pp 1, 1985
[22] Greg Voss, Programación Orientada a Objetos: una introducción, McGraw-Hill, pp.20, 1994
[23] Edsger W. Dijkstra. A Discipline of Programming. Prentice Hall. pp xiii. 1976
Lenguaje Máquina
Duro Bajo Nivel
Pseudocódigo Ensamblador
Diagramas de bloques Libre
Ordinogramas Macroensamblador 1a, 2a y 3a
Diagramas de flujo Estructurado
Chapin (Nassi/ oleada
Grafos Orientado a Objetos
Shneiderman Paradigmas
Tablas de verdad Distribuido-Colaborativo
Tablas de decisiones Orientado a Aspectos 3GL
Árboles de decisiones Otros Alto nivel
Orientadas a 4GL
Libres
Estructuradas objetos
Taxonomía
Diagramas de
Actividades Imperativos
Polya Lenguajes Lógicos
Funcionales
Gosling Descriptivos
Herramientas y
Joyanes técnicas Arte de la
Decker Globales programación
Alcalde Teoría de la Von neumann
Glenn Métodos de programación
Levine análisis de LIbre
Perry problemas
De
Programación
ESTADO DEL ARTE
EN EL MODELADO Teorías Böhm-Jacopini
ALGORÍTMICO Orientado a Diagrama propio
objetos Estructurado Programa Propio
Diseño Teorema de la
Algorítmico ADT-Ocultamiento- estructura
HIPO Conceptos Acceso uniforme
Herencia
Encapsulamiento Distribución
Polimorfismo Otras Colaboración
Aspectos
Libres Métodos de
diseño
algorítmico Aprendizaje y Teorías Vigosky
aplicación de la Rogers
Métricas
programación Glosanof
Guilford
Warnier/Orr Gardner
Jackson
Bertini Impacto en la Teoría de sistemas
Tabourier Estructuradas calidad del software Pensamiento complejo
Lógica de Tácticas de
programación* enseñanza
aprendizaje Inductivo
Heurísticas Estratégias de Deductivo
enseñanza Progressivo (Karel)
Pressman
aprendizaje Constructivista
Ledine
Vargas Herramientas
Directo al lenguajes y su sintaxis Aprendizaje basado en Problemas (PBL)
Enfoques Aprendizaje basado en Casos (CBL)
Primero semántica independiente del lenguaje
Modelo combinado Pirámide de habilidades Aprendizaje basado en Proyectos (POL)
Disección Aprendizaje colaborativo
IDE’s Técnicas expositivas
CASE Otros