Programa de Asignatura 01 Carrera: Tecnología Informática 02 Asignatura: Programación I 03 Año lectivo: 2013 04 Año de cursada: 2 05 Cuatrimestre: Primero 06 Hs. Totales: 5 07 Profesor: Martín Duhalde Sebastián Raul Nimo 09 Correlativas: Previas: 7 - Fundamento De Programación. Posteriores: 13 - Programación II 10 Objetivos: Objetivos Referentes al perfil profesional y sus incumbencias. Planificar, dirigir, realizar y/o evaluar, diseñar e implementar herramientas informáticas. Realizar con eficacia pruebas, desarrollos y controles de herramientas informáticas. Objetivos Específicos de los contenidos de la materia. Comprender la idoneidad del paradigma de objetos como modelo de simplificación de la realidad y como base de los nuevos paradigmas emergentes (por ej. Aspectos). Manejar todas las herramientas propias de objetos (clases, objetos, mensajes, herencia, polimorfismo, Interfaces, reutilización, modularidad, almacenamiento, etc.) y comprender objetos como parte de un contexto (Patrones de diseño, Frameworks, Tecnologías, etc.) para que no sólo pueda razonar sobre sus beneficios, sino que además maneje los conceptos básicos del mercado actual y las tendencias del futuro. Adquirir la habilidad de manejar un lenguaje de desarrollo y codificación para poder llevar a la práctica e implementar sistemas que resuelvan cualquier problemática planteada. 1
2
11 Unidades de desarrollo de los contenidos. Unidad 1: Introducción al paradigma de objetos Objetivo: Que el alumno tenga una visión integral y global de los procesos por los cuales se llegó al imaginario actual, que conforma el contenido de la materia. Contenido: Programación desestructurada, estructurada imperativa y funcional, programación modular, programación orientada a objetos. Objetos (estado- comportamiento). Modularidad. Reutilización de software. Presentación del lenguaje C# y Visual Studio.Net. Unidad 2: Clases, objetos y conceptos fundamentales Objetivo: Adquirir los conceptos y conocimientos de base para la construcción de la teoría de objetos Contenido: Objetos. Campos, propiedades, métodos y mensajes. Encapsulamiento. Tipos de Datos, El tipo Type. Representación de objetos, estandarización y nociones de UML. Lenguaje C#: Tipos de datos. Estructuras. Clases. Datos por Referencia y por valor. Manejo de memoria. Constructores, destructores, recolector de basura. get. set. Unidad 3: Colecciones y Tipos de datos genéricos Objetivo: Adquirir y/o afianzar el manejo de colecciones de datos que brindan herramientas utilizadas casi en todos los métodos de los programas. Contenido: Listas, Vectores, Diccionarios, Pilas, Colas, IEnumerable y sus propiedades. Conversiones de colecciones, Clases genéricas. Templates. Ciclos. Recorridos. Recurrencia. Datos Genéricos. Templates. Lenguaje C#: List, Array, Dictionary, IEnumerable, Stack, Queue, Class<T>. Foreach. 3
Unidad 4: Herencia Objetivo: Dentro del paradigma de objetos, específicamente en el arte del diseño, la Herencia cumple un rol fundamental en técnicas de generalización, reutilización, modularidad y desacoplamiento que permiten la eficacia y robustez de artefactos de software logrando un nivel de calidad que extiende la vida útil, escalabilidad y mantenimiento de los sistemas. Contenido: Polimorfismo, sobrecarga, herencia. Concepto de Herencia múltiple. Objetos virtuales y abstracción. Casting, Boxing y Unboxing. Diseño y Arquitectura. Lenguaje C#: public, private, protected, virtual, abstract, sealed, generics, operator. Unidad 5: Interfaces. Objetivo: Interfaces es probablemente el contenido más importante dentro del programa de la materia y dentro de las técnicas de desarrollo de software. Está directamente relacionada con el desacoplamiento en el diseño de módulos y arquitecturas. En esta unidad el alumno explorará, elaborará e internalizará los conceptos de Desacoplamiento-Interfaces entrando en el arte del diseño de artefactos de software profesionales. Contenido: Interfaces: explícitas, implícitas. Herencia versus interfaces. Diseño basado en interfaces. Desacoplamiento. Diseño y Arquitectura. Lenguaje C#: interface. Unidad Tecnológica. Objetivo: Complementar el conocimiento curricular. Esta unidad referencia a herramientas tecnológicas necesarias para realizar el trabajo práctico Final. No se evaluará en el parcial o final. Contenido implementado en C#: Manejo de Archivos. Serialización. Formato Binario, Texto, Serialización XML. StringBuilder. Posibles herramientas de correo electrónico, puerto serie, TCP, HTML, etc. 12 Metodología de trabajo. La mayoría de las clases son teórico-prácticas para que el alumno pueda interiorizar los conceptos 4
adquiridos en clase mediante la resolución de situaciones problemáticas en la Computadora. Al inicio se revisan rápidamente los conceptos vistos anteriormente y se explica la intención de la clase y hacia donde se plantea llegar para que el alumno se centre en un marco contextual y en el programa. Al final se cierra la clase con una discusión y análisis de lo visto, resumiendo los puntos más importantes de la misma y cuales de ellos serán evaluados en los exámenes y su nivel de relevancia en los mismos. Como el enfoque asumido por la materia exige un ritmo de trabajo intenso y continuado, se requerirá del alumno, además del conocimiento de los temas explicados en clase, la lectura de la bibliografía indicada. El alumno tendrá a su disposición una guía de trabajos prácticos que abordará todos los temas del programa de manera que pueda afianzar sus conocimientos de manera sistemática e intuitiva. La guía de trabajos prácticos no es de presentación obligatoria y el espacio para su resolución es fuera del aula (aunque podrá trabajarla en clase todo el tiempo que tenga disponible). Se aconseja a los alumnos realizar los ejercicios ya que es en el momento de tener que resolver situaciones problemáticas cuando aparecen las dudas de la implementación de la teoría. Programación I es una Materia Formativa y no solamente Informativa, el alumno debe elaborar la teoría resolviendo problemáticas de manera práctica. Dentro de la guía de Trabajos Prácticos se encuentra al final ejercicios integradores y todos los parciales y finales de los cuatrimestres anteriores para que puedan autoevaluarse o generar nuevas inquietudes. 13 Trabajo práctico: El trabajo práctico podrá ser grupal (2) estudiantes como máximo. Es una instancia más de evaluación para la aprobación de la cursada. Aunque la evaluación es individual. Luego del primer parcial se le brindará al alumno los lineamientos de éste trabajo obligatorio para aprobar la cursada. Dicho trabajo consistirá en diseñar y codificar un software de acuerdo a una problemática planteada. Para considerarse aprobado, el software deberá compilar, ejecutarse y resolver los puntos indicados en el enunciado. Cada alumno del grupo debe poder justificar cada elección que tomo para concluir el objetivo. 14 Bibliografía: 5
Bibliografía obligatoria: [1] Harvey M. Deitel. Como Programar C#. 2 Edición 2007, Pearson ISBN: 978-970-26-1056-4 Capítulos: 3 a 12, 16, 18, 24, 25, 26 Bibliografía básica: [2] Francisco, Javier Ceballos. Microsoft C#. Lenguaje y Aplicaciones. 2 Edición,Alfaomega.2008. ISBN: 978-970-15-1371-2 Capítulos: 1 a 9 Bibliografía complementaria: [3] Larman Craig. UML y Patrones, Introducción al análisis y diseño orientado a objetos y proceso unificado 2 Edición Alhambra Pearson 2003. [4] Ferguson. La biblia de C#. Anaya Multimedia. [5] Archer.A fondo C#. McGraw-Hill. [6] Charte Ojeda. Programación Visual C#.net.. Anaya Multimedia. [7] Sharp.Visual C# 2008 (Paso a Paso). Anaya Multimedia. Enlaces de Interés. RFC (Request for Comments) The Internet Engineering Task Force (IETF), Fecha de referencia Enero - 2013 http://www.ietf.org/ MSDN (Microsoft Developer Network), Fecha de referencia Enero - 2013 http://msdn.microsoft.com/es-ar Notas sobre la bibliografía En general los temas conceptuales teóricos del programa están conformados por definiciones cortas y específicas. La mayoría de los libros expresan los conceptos en párrafos generalmente breves. Se recomienda a los alumnos que extraigan la información de cada tema de varios libros. Los más explícitos generalmente se encuentran en Ingles. La bibliografía obligatoria [1] fue seleccionada ya que es un libro de referencia que presenta los temas de ésta materia, además de materias futuras. Ningún libro del nivel de la cursada abarca ampliamente los conceptos del programa con la profundidad que se dictan en la cátedra (Se recomienda asistir). En materia de diseño de software y la interacción de sus objetos (que es el aspecto más fuerte presentado en el curso) se recomienda la 6
bibliografía complementaria [3], aunque el nivel de sus contenidos podría superar la comprensión del alumno. En el arte de programar (debido a la gran cantidad de soluciones tecnológicas existentes, propias de los entornos de desarrollo o de terceros) se suele utilizar muy a menudo la prospección, búsqueda de soluciones y referencias en Internet. Hay una muy gran variedad de tutoriales, foros, libros, etc. Se recomienda al alumno que se acostumbre a extraer, analizar y criticar la información desde Internet. Ya que esta materia termina basada en la implementación práctica de la teoría, es muy fácil verificar la validez de la información extraída en Internet, en definitiva compila y funciona o no funciona. De cualquier manera subrayamos para todos los ámbitos académicos que la información extraída de fuentes conocidas/oficiales y específicamente de las no oficiales debe ser siempre evaluada, analizada y criticada. 15 Procedimiento de evaluación y criterio de promoción: La cursada de una asignatura se aprueba la cursada de la materia se aprobará mediante dos instancias de evaluación, la primera parcial y la segunda parcial integradora (debido al contenido progresivo propio de la materia). Además se deberá entregar de manera impresa el trabajo práctico grupal enunciado en el punto 13, con su código fuente y archivos(s) ejecutable(s), como así también con un promedio de asistencia a clases del 75% o mayor. Aquellos alumnos cuyo promedio de cursada sea inferior o igual a 3,99 puntos y/o tengan una asistencia a clases igual o mayor al 50% y menor al 75%, deberán rendir un Examen Recuperatorio de la asignatura en la misma fecha que se indica para el Examen Final. La asignatura se aprueba con un examen final que asume dos modalidades: a- Evaluación final integradora coloquial : accederán a este régimen de evaluación aquellos alumnos cuyo promedio de cursada se encuentre comprendido entre 7 y 10 puntos y tengan una asistencia promedio a clases igual o mayor al 75%. Los alumnos podrán presentarse a la mesa examinadora en grupos de no más de tres personas; no obstante, la evaluación se realizará en forma individual, debiendo demostrar el dominio de la asignatura como unidad y la capacidad de asociarla con otras asignaturas del plan de estudio ya cursadas. b- Examen final: acceden a este régimen de evaluación aquellos alumnos que han obtenido durante su cursada un promedio comprendido entre 4 y 6,99 puntos y tengan una asistencia promedio a clases igual o mayor al 75%. El alumno se presentará en forma individual ante un tribunal examinador, el que interrogará sobre el programa de la asignatura, debiendo demostrar su capacidad de integrarla y relacionarla con otras asignaturas del plan de estudio. La aprobación de la instancia de evaluación final de la asignatura requiere una evaluación mínima de 4 (cuatro) y una máxima de 10 (diez). Nota: 7
Los exámenes en general se deben realizar en papel, sin uso de libros o computadoras, excepto en el caso que el profesor lo autorice. Para considerarse aprobado, Nota 4 (cuatro), el alumno debe demostrar el 60% de conocimiento sobre cada tema (Unidad) evaluado. Por ejemplo un examen de 4 preguntas de herencia y una de interfaces no podrá ser aprobado si la pregunta de interfaces está en blanco o menor al 60% de contenido pese a que todo el resto este correcto. En el enunciado de cada evaluación se explicarán los conceptos que se pretende evaluar en cada pregunta, el modo de aplicación o la cuantificación de la nota y todo lo que se considere necesario para la aprobación del examen. En la mayoría de los casos, al final del examen se le entregará al alumno una copia del enunciado con su resolución completa. Esta cátedra considera que el examen es un punto más de aprendizaje donde, posiblemente con todo los conceptos revueltos y quizás algunos recién adquiridos, el alumno, a través del análisis de la problemática, termine de entender o afianzar, o auto responderse dudas de la teoría. Una vez que todos los alumnos hayan entregado el examen, el alumno que desee podrá evacuar en ese mismo momento todas sus dudas, podrá ver cómo se esperaba que resuelva cada situación problemática, o podrá solicitar una explicación de algún tema teórico siempre que haya tiempo suficiente. 8