1. IDENTIFICACIÓN DE LA ASIGNATURA NOMBRE DE LA TECNOLOGIA: SISTEMAS NOMBRE DE LA ASIGNATURA: LENGUAJE DE PROGRAMACIÓN I AREA: ESPECÍFICA TECNOLÓGICA NIVEL: SEMESTRE 2 – TRIMESTRE 4 CREDITOS: 3 HORAS DE TRABAJO DIRIGIDO – HTD: 48 HORAS DE TRABAJO AUTÓNOMO – HTA: 96 TOTAL HORAS – TH: 144 TOTAL SEMANAS TRIMESTRE: 8 2. PRESENTACIÓN La programación de computadores, mediante los lenguajes de programación, es uno de los fundamentos del desarrollo de software ya que sus conceptos y aplicación permiten que el estudiante fortalezca y profundice sus conocimientos en lógica de programación y proponga código ejecutable en un computador. La interacción con el computador logra que el aprendiz se maraville con los resultados obtenidos y lo anima a continuar explorando la codificación que se puede lograr con diferentes estructuras de programación. En esta primera etapa del desarrollo de programas usando el computador, se adquieren las competencias necesarias para implementar soluciones algorítmicas que ya ha analizado en el papel y las ha convertido en un seudo código. Estas soluciones buscan resolver un problema del mundo real que puede ser de diferente tipo: manipulación básica de datos, estructuras matemáticas o algebraicas, control de procesos y procesamiento de información. Utilizando los conceptos de la Lógica de Programación Estructurada y la Programación Orientada a Objetos la asignatura implementa la solución de problemas en el computador empleando las estructuras de codificación que proveen los Lenguajes de Programación, tales como Asignaciones, Condicionales, Ciclos y Subprogramas. Aprovechando las tecnologías existentes la asignatura se puede apoyar en lenguajes de uso comercial como Visual Basic, Visual C++ o Java, que logran en el estudiante fortalecer el conocimiento y la aplicación de los conceptos de programación. 3. JUSTIFICACION Los desarrolladores de software juegan un papel fundamental en el diseño y la implementación de productos que prestan diferentes servicios en toda clase de empresas tanto en el procesamiento de información como en la aplicación de modelos para ser evaluados por herramientas computacionales. Por tanto la asignatura Lenguaje de Programación I aporta esos fundamentos valiosos para que el futuro tecnólogo amplíe sus oportunidades laborales en un área que está en continuo crecimiento de demanda y con una oferta que aún no es suficiente ni está bien calificada. La asignatura se encuentra en el semestre 2, dentro del plan de estudios de 6 semestres. Debe ser cursada preferiblemente después de haber cursado al menos Lógica de Programación I y Lógica Matemática. Es indispensable para cursar la asignatura Lenguaje de Programación II ya que en ésta última se desarrollan estructuras avanzadas de programación. Los lenguajes de programación muestran las infinitas posibilidades para solución de problemas por computador con resultados inmediatos si se utilizan los lenguajes disponibles. Se constituyen en motivadores del desarrollo de software ya que se da confianza en el uso del computador como herramienta para implementar soluciones a problemáticas planteadas en los algoritmos estructurados o en estructuras orientadas a objetos. El Tecnólogo en Sistemas es por excelencia un desarrollador de software, aunque en su quehacer profesional encuentre otras áreas de desempeño de la informática como las redes, los sistemas operativos y el hardware. Por esto es fundamental establecer unas buenas bases en programación para que el futuro profesional pueda desempeñarse en informática en esta área. Esta asignatura es esencial para desempeñarse académicamente con eficiencia en Lenguaje de Programación II y en las asignaturas cuyo tema sea la programación de computadores. Igualmente es importante formando en bases sólidas para el desarrollo de aplicaciones que es esencial en la modalidad de grado de investigación dirigida. 4. COMPETENCIAS 4.1 PARA EL DESARROLLO DEL CONOCER O COGNOSITIVAS Conoce las estructuras básicas de programación. Comprende la estructura de implementación del paradigma estructurado y de objetos. 4.2 PARA EL DESARROLLO DEL HACER O PROCEDIMENTALES Aplica las estructuras de programación para el desarrollo de software. Implementa una solución algorítmica mediante un computador utilizando un lenguaje de programación. 4.3 PARA EL DESARROLLO DEL SER, ACTITUDINALES Y DE CONVIVENCIA Respeta a sus compañeros. Presenta un alto sentido de pertenencia. Participa activamente en las actividades universitarias presenciales y autónomas. Cumple adecuadamente con los tiempos de entrega de los trabajos. Forma grupos de estudio. Acepta el trabajo colaborativo. 5. OBJETO DE ESTUDIO El objeto de estudio de Lenguaje de Programación I dentro del currículo de la Tecnología en Sistemas son: los Paradigmas de Programación Estructurada y de Objetos para la implementación de soluciones algorítmicas por computador. 6. PROBLEMA El Tecnólogo en Sistemas en su etapa de formación necesita de herramientas computacionales determinadas por los Lenguajes de Programación para la implementación de algoritmos de solución a problemas de almacenamiento y procesamiento de información y simulación de estructuras matemáticas básicas. 7. OBJETIVO DE FORMACIÓN 7.1 GENERAL Utilizar estructuras básicas de programación estructurada y de objetos para la implementación de algoritmos por computador. 7.2 ESPECIFÍCOS Comprender el proceso de instalación de las herramientas de programación. Representar en el computador estructuras básica de datos y estructuras matemáticas, usando los conceptos de variables, constantes, tipos de datos y operadores. Aplicar las estructuras básicas de programación para el desarrollo de algoritmos mediante código de lenguaje. Diseñar estructuras de programación mediante fragmentos de código que puedan ser reutilizados y parametrizados. Representar estructuras de datos finitas para efectuar procesamientos repetitivos. Organizar las estructuras de datos y las funciones en un mismo concepto empleando la teoría de objetos. 8. CONTENIDO Unidad Introductoria Ambiente de Programación 1. Instalación y configuración de la herramienta 2. Ambiente de Programación 3. Localización de ayudas Unidad No. 1 Conceptos Básicos 4. Variables y constantes 5. Tipos de datos y tipos de operadores 6. Expresiones aritméticas y booleanas Unidad No. 2 Programación estructurada 1. Enunciados de asignación 2. Instrucciones de Entrada y Salida de datos (Estructura secuencias) 3. Enunciados de decisión (Estructura condicional) 4. Instrucciones repetitivas (Estructura repetitiva) Unidad No. 3 Funciones y subprogramas 1. Diseño de funciones 2. Subprogramas 3. Parámetros por valor 4. Parámetros por referencia Unidad No. 4 Arreglos 1. Arreglos unidimensionales 2. Definición, subíndices, Recorrido y Llenado de vectores 3. Operaciones con vectores 4. Arreglos Bidimensionales 5. Definición, subíndices, Recorrido y Llenado de matrices 6. Operaciones con matrices Unidad No. 5 Programación Orientada a Objetos 1. Definición de objetos y clases, Atributos, Métodos 2. Paradigma OO: Encapsulamiento, Herencia, Agregado, Polimorfismo, Sobre Cargado, Arreglos de objetos 3. Interfaces de Usuario: formularios, objetos, eventos, proyectos 9. ESTRATEGIAS Para el desarrollo de la asignatura pueden combinarse las siguientes actividades para lograr coherencia entre lo conceptual y lo aplicado: 9.1 APRENDIZAJE EN EL TRABAJO PRESENCIAL Y DIRIGIDO Para el trabajo presencial: Clases magistrales: exposición por parte del docente de conceptos y fundamentos que sean esenciales en el desarrollo de una temática. El estudio de casos: para ejemplificar la forma como los conceptos se pueden aplicar. Talleres y trabajos en grupo: para que los estudiantes interactúen y propiciar trabajo colaborativo, de tal forma que desarrollen ejercicios, propongan nuevos problemas con sus soluciones y puedan llevar al aula sus preguntas para la retroalimentación del docente. Estos talleres se desarrollan en las salas de cómputo, con la orientación directa del docente. Proyectos: en grupos de trabajo, se plantea un tema de la realidad que establezca un problema relacionado con el manejo de la información para aportar desde lo metodológico y práctico a la solución de tales problemáticas. Estos proyectos se desarrollan combinando trabajo en el papel y trabajo en el computador con la asesoría directa del docente. Seminarios: cuando para actualizar a los estudiantes en temáticas que no están contempladas en lo curricular y que hacen parte de novedosos desarrollos informáticos, se proponen seminarios con conferencistas invitados por el docente o por la dirección del programa. Socialización en las sesiones de clase de consultas sobre temáticas paralelas a los conceptos expuestos en clase. Socialización en clase presencial de casos de estudio analizados fuera de clase. Socialización en clase presencial de ejercicios y problemas propuestos para desarrollar en el computador. 9.2 APRENDIZAJE EN EL TRABAJO AUTONOMO Para el desarrollo de la asignatura pueden combinarse las siguientes actividades para lograr evidenciar el trabajo del estudiante sin acompañamiento directo del docente: Para el trabajo autónomo: Informes de lectura: que motiven a consultar, a leer, a escribir y a producir texto escrito que fortalezca sus capacidades comunicativas. Visitas a bibliotecas, centros de información, empresas: para que el estudiante vea, analice y establezca una visión crítica de su entorno. Consultas en Internet sobre temas propuestos: para utilizar las NTICs en beneficio del aprendizaje y lograr filtrar y clasificar información valiosa. Desarrollo prácticas: donde se resuelven problemas para aportar en su solución desde la óptica de los sistemas informáticos en empresas o situaciones reales. Desarrollo de aplicaciones: donde se aprovechen los conocimientos en programación de computadores para resolver problemas de manejo de información o de simulación de procesos. Problemas propuestos para ser desarrollados en grupo y en la sala de cómputo, en tiempo de clase extra. Trabajo autónomo en Proyectos: los estudiantes, en grupos de trabajo, plantean un tema de la realidad que establezca un problema relacionado con el manejo de la información para aportar desde lo metodológico y práctico a la solución de tales problemáticas. Estos proyectos se desarrollan combinando trabajo en el papel y trabajo en el computador por fuera de clase. 9.3 DE FORMACIÓN EN INVESTIGACIÓN Para el desarrollo de la formación en investigación, tendiente a generar en el estudiante la actitud investigativa, el aprendizaje autónomo, el auto didactismo y la consecución de información, se proponen los siguientes temas: Creación de controles usando código. Instancias Dinámicas de Objetos y de Formularios. Acceso al Registro de Windows. Funciones Básicas de la API de Windows. o Identificación de Usuario de Red y de Máquina. o Reiniciador del Sistema. o Manejo de directorios y archivos. o Sonido y video embebido. Actualización de Herramientas de Software Libre Estos temas se proponen usando las siguientes estrategias: Informe de Consulta: se propone un informe de consulta estructurado como un informe ejecutivo, que resuma de manera clara y concisa los aspectos relevantes de lo encontrado. Ficha Técnica: cuando se plantea un anteproyecto, basado en uno de los temas propuestos, se estructura una ficha que presente el tema, sus objetivos y sus aspectos principales. Proyecto: con un derrotero establecido por el programa se presenta un proyecto que puede ser el producto final de la asignatura. 10. RECURSOS 10.1 ESPACIO Salas de cómputo, biblioteca, en la casa o en cafés Internet. 10.2 MEDIOS Salas de cómputo con Sistema Operativo MS Windows, Herramientas de Programación (Visual Basic, Visual C++, Java). 10.3 TIEMPO La asignatura se desarrolla en 24 (veinticuatro) sesiones presenciales de dos horas académicas y 96 (noventa y seis) horas de trabajo autónomo. 11. DESARROLLO DE CONTENIDOS Ver ANEXO 12. EVALUACION 12.1 CRITERIOS Esta asignatura desarrolla las sesiones presenciales en la sala de cómputo. Por tanto debe tenerse presente lo siguiente: Trabajar dos personas en el mismo equipo con el objetivo de colaborarse y complementarse en sus fortalezas y apoyarse en sus aspectos por mejorar. Asistir puntualmente a la sala de cómputo y observar el reglamento de uso de estos espacios. Dejar el sitio de trabajo en óptimas condiciones, en cuanto al equipo y en cuanto a los muebles utilizados. Abstenerse de desarrollar otras actividades en medio de la clase que sean ajenas al desarrollo de la misma. Las prácticas que se asignen para ser realizadas por fuera de clase tendrán un plazo máximo que debe ser cumplido. En caso de retraso el estudiante debe someterse a las penalizaciones establecidas en el cronograma. Los trabajos que deban ser entregados de forma escrita deberán seguir la Norma ICONTEC vigente. Los informes que tengan elementos de innovación e investigación serán tenidos en cuenta de manera especial para la calificación final. Las evaluaciones parciales que se realicen en la sala de cómputo se presentarán de manera individual y por sesiones, acordadas previamente para que cada estudiante acceda una estación. 12.2 DE ACUERDO A LA PARTICIPACIÓN Se tendrá en cuenta en la evaluación, de acuerdo a lo planteado en el cronograma, los siguientes elementos de evaluación: Autoevaluación: el concepto que el estudiante tiene de su trabajo de acuerdo a parámetros establecidos por el docente y el mismo estudiante. Coevaluación: el concepto que los compañeros expresen de la exposición o socialización de los trabajos propuestos para la asignatura, de acuerdo a parámetros establecidos por el grupo. Heteroevaluación: el concepto resultante de la discusión entre estudiante y docente de acuerdo a parámetros establecidos por el docente. 12.3 CUANTITATIVA De acuerdo al reglamento estudiantil la evaluación es del 100% y debe constituirse con al menos 5 notas, con porcentajes y temas acordados con el grupo en el cronograma. 13. BIBLIOGRAFÍA 13.1 BIBLIOGRAFIA BÁSICA Fundamentos de programación. Luis Joyanes Aguilar. 2. ed. España: McGraw-Hill, 1996. 714 p Programación orientada a objetos con c++. Francisco Javier Ceballos. 3. ed. México: Alfaomega: Rama, 2004. 617 p. + CD Guía de aprendizaje Java 2. Dori Smith. Madrid: Prentice - Hall, 2002. 337 p Fundamentos de Programación. Luis Joyanes Aguilar. 3. ed. Madrid: McGraw-Hill, 2003. 1004 p Fundamentos de Programación en Java 2. Herbert Schildt. SantaFé de Bogotá: Osborne : McGraw-Hill, 2002. 589 p Estructura de datos. Luis Joyanes Aguilar, Ignacio Zahonero Martínez. Madrid: McGrawHill, 1998. 857 p Visual Basic 6. Brian Siler, Jeff Spotts. Madrid: Prentice - Hall, 1999. 984 p Microsoft Press. Microsoft Visual Basic 6.0 Manual del programador. España: McGrawHill: 1998. 921p. 13.2 BIBLIOGRAFIA COMPLEMENTARIA SoloCodigo (Varios foros con distintos temas, en español) http://www.solocodigo.com/ Programacion.com (Foro de VB en español) http://www.programacion.com/hilos.php?fid=32 Lawebdelprogramador (Muchísimos foros) http://www.lawebdelprogramador.com/news/ IslaProgramacion (Foro de VB en español) http://www.islaprogramacion.com/ Foros de CGR Software http://foros.cgrsoftware.com/ (Varios foros con distintos temas, en español) 11. CRONOGRAMA DE ACTIVIDADES Sesión 1 2,3 Desarrollo de contenidos por tema Objetivo de aprendizaje Ambiente de Programación: Instalación y configuración de la herramienta, Ambiente de Programación, Localización de ayudas Comprender el proceso de instalación de la herramienta de programación. Conceptos Básicos: Variables y constantes, Tipos de datos y tipos de operadores; Expresiones aritméticas y booleanas. Representar en el computador estructuras básicas de datos y estructuras matemáticas, usando los conceptos de variables, constantes, tipos de datos y operadores. Descripción de actividades según los ambientes de aprendizaje HTP HTA Instalación guiada por el 2 docente de las herramientas que se van a utilizar con el apoyo de los monitores de las salas de cómputo. 4 Logros conceptual, procedimental y actitudinal Instala y configura la herramienta de programación. Taller de implementación de algoritmos. Ejercicios propuestos para socializar en grupo. Evaluación con la implementación de un algoritmo en el lenguaje. 4 Depende de la herramienta que se va a emplear, entre estas: Visual Basic Visual .Net Visual C++ Java Propuestas de consulta a los estudiante sobre las características de la Herramienta. Exposición del docente con ejercicios demostrativos. Bibliografía y lecturas de apoyo 8 Implementa un algoritmo en un lenguaje usando estructuras de datos básicas. Comprende los elementos sintácticos del lenguaje para representar estructuras de datos simples. Descubre la programación como un Fundamentos de Programación. Luis Joyanes Aguilar. 3. ed. Madrid: McGrawHill, 2003. 1004 p Sesión Desarrollo de contenidos por tema Objetivo de aprendizaje Descripción de actividades según los ambientes de aprendizaje HTP HTA Logros conceptual, procedimental y actitudinal Bibliografía y lecturas de apoyo lenguaje de interacción con la máquina. 4,5,6 7,8,9 Programación estructurada: Asignación, Instrucciones de Entrada y Salida de datos, Enunciados de decisión, Instrucciones repetitivas Funciones y subprogramas: Diseño de funciones, Subprogramas, Parámetros por valor, Parámetros Aplicar las estructuras básicas de programación para el desarrollo de algoritmos mediante código de lenguaje. Diseñar estructuras de programación mediante fragmentos de código que puedan ser Exposición del docente con ejercicios demostrativos. 6 12 Taller de implementación de algoritmos. Comprende los elementos sintácticos del lenguaje para utilizar estructuras de programación. Ejercicios propuestos para socializar en grupo. Evaluación con la implementación de un algoritmo en el lenguaje. Exposición del docente con ejercicios demostrativos. Taller de implementación de algoritmos. Ejercicios propuestos Implementa un algoritmo en un lenguaje usando estructuras de programación. Estructura de datos. Luis Joyanes Aguilar, Ignacio Zahonero Martínez. Madrid: McGraw-Hill, 1998. 857 p. Refuerza su concepto sobre la programación como un lenguaje de interacción con la máquina. 6 12 Implementa un algoritmo en un lenguaje usando estructuras de programación. Comprende los elementos sintácticos Estructura de datos. Luis Joyanes Aguilar, Ignacio Zahonero Martínez. Madrid: McGraw-Hill, 1998. 857 p. Sesión Desarrollo de contenidos por tema por referencia 10,11,1 Arreglos: Arreglos 2 unidimensionales, Subíndices, Recorrido y Llenado de vectores, Operaciones Objetivo de aprendizaje reutilizados y parametrizados. Representar estructuras de datos finitas para efectuar procesamientos repetitivos, en una dimensión. Descripción de actividades según los ambientes de aprendizaje para socializar en grupo. HTP HTA Refuerza su concepto sobre la programación como un lenguaje de interacción con la máquina. 6 12 Taller de implementación de algoritmos. Ejercicios propuestos para socializar en grupo. Representar estructuras de Exposición del docente con ejercicios Implementa vectores en Estructura de datos. un lenguaje de Luis Joyanes programación. Aguilar, Ignacio Zahonero Martínez. Comprende los Madrid: McGraw-Hill, elementos sintácticos 1998. 857 p. del lenguaje para implementar vectores. Refuerza su concepto sobre la programación como un lenguaje de interacción con la máquina, al usar estructuras repetitivas finitas. Evaluación con la implementación de un algoritmo en el lenguaje. 13,14,1 Matrices: Arreglos 5 Bidimensionales: Bibliografía y lecturas de apoyo del lenguaje para utilizar estructuras de programación. Evaluación con la implementación de un algoritmo en el lenguaje. Exposición del docente con ejercicios demostrativos. Logros conceptual, procedimental y actitudinal 6 12 Implementa matrices en Estructura de datos. un lenguaje de Luis Joyanes Sesión Desarrollo de contenidos por tema Objetivo de aprendizaje Definición, Subíndices, Recorrido y Llenado de matrices, Operaciones datos finitas para efectuar procesamientos repetitivos, en dos dimensiones. Descripción de actividades según los ambientes de aprendizaje demostrativos. HTP HTA programación. Taller de implementación de algoritmos. Comprende los elementos sintácticos del lenguaje para implementar matrices. Ejercicios propuestos para socializar en grupo. Organizar las estructuras de datos y las funciones en un mismo concepto empleando la teoría de objetos. Exposición del docente con Clases demostrativas. Taller de implementación de Clases. Ejercicios sobre Clases propuestos para socializar en grupo. Evaluación con la implementación de Bibliografía y lecturas de apoyo Aguilar, Ignacio Zahonero Martínez. Madrid: McGraw-Hill, 1998. 857 p. Refuerza su concepto sobre la programación como un lenguaje de interacción con la máquina, al usar estructuras repetitivas finitas en dos dimensiones. Evaluación con la implementación de un algoritmo en el lenguaje. 16,17,1 Programación Orientada a 8 Objetos: Definición de objetos y clases, Atributos, Métodos Logros conceptual, procedimental y actitudinal 6 12 Implementa el modelo de objetos en un lenguaje de programación. Comprende los elementos sintácticos del lenguaje para implementar el modelo orientado a objetos. Encuentra en la programación orientada Fundamentos de Programación en Java 2. Herbert Schildt. SantaFé de Bogotá: Osborne McGraw-Hill, 2002. 589 p. Sesión Desarrollo de contenidos por tema 19,20,2 Paradigma OO: 1 Encapsulamiento, Herencia, Agregado, Polimorfismo, Sobre Cargado, Arreglos de objetos Objetivo de aprendizaje Emplear los elementos del paradigma OO para representar estructuras y relaciones de clases HTP HTA Logros conceptual, Descripción de actividades según los procedimental y ambientes de actitudinal aprendizaje Clases en el lenguaje OO. a objetos un paradigma integrador de datos y funciones.. Exposición del docente con Clases demostrativas. 6 12 Taller de implementación de Sistemas de Clases. Comprende los elementos sintácticos del lenguaje para implementar sistemas de clases. Ejercicios propuestos con Sistemas de Clases para socializar en grupo. Evaluación con la implementación de un Sistema de Clases en el lenguaje OO. 22,23,2 Interfaces de Usuario: 4 formularios, objetos, eventos, proyectos Usar la teoría de objetos para implementar interfaces de usuario. Exposición del docente con Interfaces demostrativas. Taller de implementación de Interfaces. Ejercicios propuestos con Interfaces para socializar en grupo. Implementa Sistemas de Clases en un lenguaje de programación. Bibliografía y lecturas de apoyo Fundamentos de Programación. Luis Joyanes Aguilar. 3. ed. Madrid: McGrawHill, 2003. 1004 p. Refuerza el concepto de clases y de objetos. 6 12 Implementa Interfaces gráficas de usuario en un lenguaje de programación. Comprende los elementos sintácticos del lenguaje para implementar Interfaces. Programación orientada a objetos con C++. Francisco Javier Ceballos. 3. ed. México: Alfaomega: Rama, 2004. 617 p. + CD Sesión Desarrollo de contenidos por tema Objetivo de aprendizaje Descripción de actividades según los ambientes de aprendizaje HTP HTA Evaluación con la implementación de Interfaces en el lenguaje OO. Refuerza el concepto de clases y de objetos mediante la implementación de Interfaces. 48 HTP: Horas de trabajo del docente HTA: horas de trabajo del alumno autónomas Logros conceptual, procedimental y actitudinal 96 Bibliografía y lecturas de apoyo