Fundamentos de Programación. Información de la Asignatura. Grado en Informática. Grupo A Curso 2016/2017 Información general Información general Este documento se encuentra en: http://decsai.ugr.es/jccubero/fp_A.pdf Información sobre el profesorado. • Profesor de teoría y prácticas: Juan Carlos Cubero. Web: http://decsai.ugr.es/jccubero e-mail: [email protected] Despacho: D-37. Ciencias de la Computación e Inteligencia Artificial Tutorías (por favor, avisar con antelación): Martes de 11:30 a 13:30, Miércoles de 12:30 a 13:30, Jueves de 11:30 a 12:30 y Viernes de 10:30 a 12:30. También pueden consultarse dudas por e-mail. Descargue el siguiente fichero: http://decsai.ugr.es/jccubero/fp.zip Este fichero contiene: • Transparencia de los dos primeros temas. • Guión de prácticas con las primeras sesiones. • Instrucciones para el registro en la plataforma decsai (ver siguiente apartado) Fundamentos de Programación. Información de la Asignatura 1 Acceso identificado Acceso identificado Los alumnos deben registrarse electrónicamente en dos sitios distintos. Realizad el registro hoy mismo • En la web de la Universidad de Granada. Los alumnos deben registrarse electrónicamente en la UGR para poder entrar en las aulas de prácticas de la asignatura. Las instrucciones están en: http://csirc.ugr.es/informatica/cuentasinstitucionales/ AccesoIdentificado.html Se necesita el DNI y el PIN obtenido con la matrícula. El registro electrónico tarda un día (incluso dos) en activarse. Por tanto, realizad el registro al menos tres días antes de la primera sesión de prácticas (que tendrá lugar la segunda semana de clases) Para obtener una dirección de correo electrónico de la Universidad, hay que seguir las instrucciones detalladas en http://csirc.ugr.es/informatica/correoelectronico/ SolicitarCuentaCorreo.html Una vez que se tenga cuenta de correo en la UGR, el alumno podrá iniciar sesión en cualquiera de los ordenadores de la Escuela de Informática. Para ello, tendrá que introducir como usuario y contraseña, los mismos que se han elegido para la UGR. Automáticamente, tendrá acceso a un sitio de almacenamiento en los servidores de la Escuela. Esto se explica en la primera sesión de prácticas. • En la web del departamento de Ciencias de la Computación e Inteligencia Artificial DECSAI https://decsai.ugr.es – En primer lugar, el alumno debe tener activa una cuenta de correo electrónico en la UGR (ver apartado anterior) – Una vez se tenga activa la cuenta de correo electrónico de la UGR, se puede proceder a activar la cuenta en la plataforma decsai. Para ello, debe seguir las instrucciones especificadas en el fichero RegistroWebDECSAI.pdf incluido en http://decsai.ugr.es/jccubero/fp.zip Si tiene una cuenta activa en la UGR y no puede acceder a la plataforma de decsai, envíe un e-mail a [email protected] indicando la letra de su grupo, su número de DNI, Nombre y Apellidos. El alumno usará la plataforma decsai para: ◦ Bajarse el material de la asignatura (transparencias seguidas en clase de teoría, guiones de prácticas, soluciones de los ejercicios, etc) Las transparencias también se dejarán en la fotocopiadora de la ETSII. Los guiones de Fundamentos de Programación. Información de la Asignatura 2 Asignación del grupo de prácticas prácticas se dejarán únicamente en la Web. Ya está disponible el material del primer tema. ◦ Subir las soluciones a los ejercicios propuestos en los guiones de prácticas. ◦ Consultar las notas de prácticas y de teoría. En cualquier caso, la nota oficial final es la que aparece a través del acceso identificado de la Universidad de Granada. MUY IMPORTANTE: El alumno nunca deberá dar a conocer a un tercero su nombre de usuario y contraseña, ya que es el responsable del mal uso que se pudiese realizar con su cuenta (como por ejemplo, copias en los exámenes prácticos). Asignación del grupo de prácticas Los grupos de prácticas están numerados del 1 al 3 (A.1, A.2, A.3): Grupo A.1: De ABRIL MOYA, JAIRO LUIS hasta GARZON SEGURA, IVAN ambos inclusive Clases de FP: Martes de 9:30 a 11:30. Aula: 3.1 Grupo A.2: De GONZALEZ MONTEOLIVA, MIGUEL hasta MOLINA TRUJILLO, JAIME ambos inclusive Clases de FP: Jueves de 9:30 a 11:30. Aula: 2.1 Grupo A.3: De MORENO PEINADO, ALBA AURORA hasta VARGAS PEREZ, VICTOR ALEJANDRO ambos inclusive Clases de FP: Miércoles de 9:30 a 11:30. Aula: 3.1 Los alumnos ya están asignados a su grupo de prácticas en la plataforma decsai, pero, en cualquier caso, es necesario que el alumno active su cuenta en decsai, tal y como se ha indicado anteriormente. Excepcionalmente se atenderán cambios de grupos de prácticas debido a problemas laborales, de salud, etc. Para ello, el alumno debe notificarlo por e-mail a su profesor de teoría de Fundamentos de Programación (Juan Carlos Cubero) Fundamentos de Programación. Información de la Asignatura 3 Desarrollo de las clases Desarrollo de las clases • Clases de teoría. La asistencia a clase de teoría no es obligatoria. Justo antes de empezar cada tema en el aula de teoría, traed a clase de teoría las fotocopias de dicho tema para poder trabajar sobre ellas. Traed también folios en blanco para poder trabajar durante la clase. Consejo: Trabajar de forma continuada en casa desde el primer día. • Clases prácticas. – Asistencia. La asistencia a clase de prácticas es obligatoria. Las clases de prácticas empiezan la semana del 28 de Septiembre. – Resolución de ejercicios. Cada semana se propondrá la resolución de una serie de problemas. Éstos vendrán indicados en el Guión de Prácticas (se irán publicando en decsai). Los alumnos tendrán que subir la solución a través de la plataforma decsai. A la semana siguiente, el profesor seleccionará algunos alumnos para que defiendan dichos ejercicios durante las horas de prácticas. El alumno obtendrá una calificación de esta defensa que constituirá la Nota de Evaluación Continua. Posteriormente se indica el peso de esta nota en la calificación final. Esta semana ya hay que resolver una serie de ejercicios que se corregirán la próxima semana, durante las horas de prácticas. Como excepción, no se subirán a decsai. El alumno los resolverá en papel y los llevará a su sesión de prácticas. – Compilador. En las prácticas trabajaremos en entorno Windows y usaremos Orwell Dev C++. También puede usarse cualquier otro compilador como por ejemplo CodeBlocks. Para más información sobre la instalación del compilador, consultad el guión de prácticas. Fundamentos de Programación. Información de la Asignatura 4 Evaluación de la asignatura Evaluación de la asignatura Convocatoria de Febrero. La nota final se computa de la siguiente forma: • En Febrero se realizará un examen escrito consistente en la resolución de varios problemas de programación relacionados con la materia impartida. La ponderación de este bloque es del 60 %. Nota mínima en el examen escrito para aprobar la asignatura: 4 • La parte práctica se evalúa de la siguiente forma: – Evaluación continua: Durante las sesiones de prácticas, los alumnos deberán defender ante la clase o ante el profesor, los problemas encargados para dicha sesión de prácticas. La ponderación de esta parte es del 10 %. – Exámenes de prácticas: A mediados de Noviembre y a principios de Enero se realizará un examen de prácticas. Cada uno de estos exámenes consistirá en la resolución de un ejercicio de programación delante del ordenador. Cada uno de los dos exámenes durará una hora y se realizará en las aulas de prácticas de la Escuela de Informática. La ponderación del primer examen es del 10 % y la del segundo del 20 % Si la nota de la parte escrita es inferior a 4, la nota final será la nota de la parte teórica, pudiendo el alumno mantener la nota de la parte práctica para la convocatoria de Septiembre. De forma excepcional, aquellos alumnos que opten por acogerse a la Evaluación Única Final, tendrán la opción de presentarse a un único examen práctico. Éste se realizará en el ordenador, en un solo acto académico, junto con el examen de Febrero correspondiente a la parte escrita. Para más información sobre la evaluación única final, véase la Normativa de Evaluación y Calificación de los Estudiantes de la Universidad de Granada: http://grados.ugr.es/matematicas/pages/infoacademica/ normativaevaluacion. Importante: el plazo para solicitarlo es las dos primeras semanas de clase. Convocatoria de Septiembre. En Septiembre, se realizarán las siguientes pruebas en un único acto académico. La nota final del alumno se obtendrá como la suma ponderada de las calificaciones en dichas pruebas: • Parte escrita: La ponderación de esta parte es del 60 %. Para la parte escrita se realizará un examen escrito multipregunta sobre los contenidos de la materia impartida. Fundamentos de Programación. Información de la Asignatura 5 Evaluación de la asignatura • Parte práctica: La ponderación de esta parte es del 40 %. Para la parte práctica se realizará un examen práctico en el ordenador. Los alumnos podrán optar entre conservar la nota de cada parte obtenida en Febrero o volver a evaluarse. Fundamentos de Programación. Información de la Asignatura 6 Sobre los contenidos Sobre los contenidos Importancia de la asignatura y dedicación Esta asignatura introduce al alumno al mundo de la Programación. El objetivo de la Programación es poder construir nuestros propios programas (aplicación de ofimática, gestión de clientes, juegos, etc) Fundamentos de Programación es la base para muchas otras asignaturas de la carrera, como Metodología de la Programación, Estructuras de Datos, Programación dirigida a objetos, etc. Programar no es fácil. Es un lenguaje nuevo para el alumno y se necesita mucha práctica. El plan de estudios en Informática de la UGR le asigna 6 ECTS a FP. Ésto se traduce en 4 horas presenciales a la semana y 6 horas de estudio en casa a la semana (como mínimo) Fundamentos de Programación. Información de la Asignatura 7 Sobre los contenidos Temario Tema 1. Programación en C++: Fundamentos 1.1 El ordenador, algoritmos y programas 1.2 Especificación de programas 1.3 Datos y tipos de datos 1.4 Operadores y Expresiones 1.5 Tipos de datos comunes en C++ Tema 2. Estructuras de Control 2.1 Estructura Condicional 2.2 Estructuras Repetitivas Tema 3. Funciones y Clases 3.1 Funciones 3.2 Clases Tema 4. Vectores y Matrices 4.1 Fundamentos 4.2 La clase MiVector 4.2 Algoritmos de Búsqueda y Ordenación 4.2 Vectores de varias dimensiones: matrices Tema 5. Clases (parte II) 5.1 Copia de objetos 5.2 Relaciones entre objetos 5.3 Diseño de una solución 5.4 Tratamiento de Errores: Excepciones Tema 6. Recursividad 6.1 Diseño de algoritmos recursivos 6.2 Funciones recursivas Fundamentos de Programación. Información de la Asignatura 8 Sobre los contenidos Bibliografía BIBLIOGRAFÍA FUNDAMENTAL. La mayor parte de los libros recomendados en esta página están disponibles de forma gratuita para los alumnos de la UGR en http://proquest.safaribooksonline.com/ El acceso es directo desde un ordenador de la Universidad. Desde un ordenador particular hay que crear previamente una VPN con la UGR. Se puede consultar las instrucciones en https://csirc.ugr.es/informatica/RedUGR/VPN/ConfVPN/ • T. Gaddis, J. Walters, G. Muganda. Starting out with C++: early objects. Pearson; 8va Ed. 2013 Es uno de los textos de C++ con una estructura de presentación de contenidos que más se asemeja a la presentada en este curso. • Steve McConnell. Code Complete: A Practical Handbook of Software Construction. Microsoft Press; 2nd edition, 2004 Estupendo manual del buen estilo de programación. • Garrido, A. Fundamentos de Programación en C++. Delta Publicaciones, 2005 (Temas 1 y 2) Un libro muy recomendado para los dos primeros temas. Es un libro centrado en programación estructurada, por lo que no nos servirá cuando veamos programación dirigida a objetos a partir del tercer tema. • C++: An Active Learning Approach. Todd W. Breedlove; Randal L. Albert. Jones & Bartlett Learning. 2010 Otro texto con una estructura similar a la del curso. • Starting out with C++: From Control Structures through Objects, Brief, Student Value Edition (7th Edition). Pearson. 2011. Otro texto con una estructura similar a la del curso. • Deitel & Deitel. C++ Cómo Programar. Séptima edición, Prentice Hall-Pearson, 2010 Un libro clásico que puede ayudar a los que están completamente perdidos desde el principio. Se queda un poco corto en algunos temas. A partir de la sexta edición se encuentran versiones early object y late object según si se introduce el concepto de clase desde el primer momento o no. Nosotros seguiremos la versión late object. La cuarta edición se encuentra disponible en español. Fundamentos de Programación. Información de la Asignatura 9 Sobre los contenidos • Mercer, R., Computing Fundamentals with C++. Object-oriented Programming and Design. 2a Edición. Palgrave Macmillan. 2000. Un libro muy didáctico para aprender orientación a objetos con C++. Será un libro importante para la asignatura, a partir del tema de las clases. • Stephen Prata. C++ Primer Plus. Fifth edition. SAMS, 2004 Un libro con muchos detalles y explicaciones. Abarca los contenidos de las asignaturas de Fundamentos de la Programación y Metodología de la Programación. Si hubiese que elegir algún libro fundamental para Fundamentos de la Programación sería éste. Le falta ver con más profundidad el diseño de una solución utilizando programación dirigida a objetos. BIBLIOGRAFÍA COMPLEMENTARIA: • Robert Martin. Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008 Libro muy interesante, con muchos consejos de diseño orientado a objetos. Requiere conocer los fundamentos de PDO. • Kayshav Dattatri. C++ Effective Object-Oriented Software Construction. Prentice Hall, 1999. Un libro antiguo y poco conocido, pero muy bueno para aprender programación dirigida a objetos con C++. Complementa a la perfección al libro de Stephen Prata en la parte más avanzada de diseño orientado a objetos. • Robert Lafore. Object-Oriented Programming in C++. Sams. 2002 Libro similar al de Stephen Prata, aunque es más completo el de Prata • Bjarne Stroustrup. El Lenguaje de Programación C++. Addison Wesley, 2001. El libro del creador de C++. Poco didáctico. Recomendado sólo como referencia de todo aquello que puede hacerse con C++. • Walter Savitch. Resolución de problemas con C++, Pearson, 2006. Tiene un nivel muy equilibrado, aunque se queda corto en la parte de orientación a objetos. Recomendado para los dos primeros temas. ENLACES DE INTERÉS: • Web con material docente y muchos ejercicios resueltos: http://www.fdi.ucm.es/profesor/luis/ • Tutorial de C++ muy completo: http://www.zator.com/Cpp/ Fundamentos de Programación. Información de la Asignatura 10 Sobre los contenidos • Cómo NO realizar una práctica de programación. En tono irónico: http://www.di.uniovi.es/~cernuda/noprog_ESP.html • Páginas a destacar sobre C++, incluyendo tutoriales y referencias de las bibliotecas standard: http://www.cplusplus.com http://www.cppreference.com • Otras páginas sobre C++: http://c.conclase.net http://www.cprogramming.com/ http://www.programmersheaven.com http://stackoverflow.com Fundamentos de Programación. Información de la Asignatura 11 Sobre la profesión Sobre la profesión ¿Cuál es el Ingeniero Informático? Fundamentos de Programación. Información de la Asignatura 12 Sobre la profesión La respuesta correcta corresponde a la segunda imagen: Profesionales que siguen protocolos de actuación y modelos de desarrollo bien definidos. Trabajan en equipo, usualmente en compañías de relevancia Tienen competencias específicas y las desarrollan en equipo Tratan directamente con clientes importantes y por tanto no se les ocurre usar la k en sustituto de la c, ni escribir aprovar, hinundaciones, etc. Recordad: ¡Sólo se contestarán correos electrónicos que vengan sin faltas de ortografía (incluidos los acentos, signos de puntuación, etc)! IMPORTANTE: En el examen, se bajará la nota hasta un máximo de 2 puntos por las faltas de ortografía. Fundamentos de Programación. Información de la Asignatura 13