Se encuentra usted aquí

Cursos Thales-CICA Edición 2020 Primera Convocatoria (ED20) - Abril - Junio 2020 / Información y matrícula

CONVOCATORIA DE PROPUESTAS DE CURSOS - Hasta el día 30 de Junio de 2020 (Participa activamente en el proyecto Thales-CICA y envíanos tu propuesta de formación)

FECHA DE INICIO DE LOS CURSOS: 22 de Abril de 2020

ED16 - Descripción completa de curso

Descripción completa de curso

Descripción Curso: 10-PROGRAMA

Código: 10-PROGRAMA
Título: Programación informática: Algoritmos + estructuras de datos = Programas
Descripción:
La programación informática se ha convertido en una de las actividades de mayor difusión e impacto en distintos ámbitos. Alrededor de la programación informática se han creado de hecho diferentes profesiones especializadas en aspectos específicos, desde analistas hasta programadores. 

Pero la programación informática se puede contemplar también desde un punto de vista más amplio en tanto que disciplina que aborda la resolución óptima de problemas y su implementación como sistemas informáticos, y en este sentido hay una línea clara que aboga por la incorporación de la formación en ciencias de la computación incluso en niños, para las etapas primaria y secundaria.

Además, la enorme proliferación del uso de dispositivos con componentes informáticos y la difusión de Internet y las redes sociales, ha multiplicado exponencialmente las especialidades, los lenguajes de programación, las posibles aplicaciones, etc.

Este curso parte de este contexto general e intenta concentrarse en los fundamentos de la programación informática. Un tema apasionante y con interesantes derivaciones y aplicaciones en el mundo de la enseñanza. Por tanto el curso, aborda los fundamentos de la programación, pero para ello utiliza un lenguaje en concreto, C, cuya motivación analizamos a continuación, y cuestiones de enorme importancia como son el diseño de algoritmos y estructuras de datos.


En la historia de los lenguajes de programación, el lenguaje C es ya un gran veterano, que goza de una estupenda salud. 

De acuerdo con el índice TIOBE1 de popularidad de los lenguajes de programación, el gráfico que se muestra a continuación indica que C se ha mantenido como uno de los principales lenguajes en los últimos años (junto con Java), habiendo llegado a la posición número 1 recientemente.Tiobe

Por otro lado, en cuanto a los lenguajes más demandados actualmente por los estudiantes de informática, C es el segundo lenguaje (tras Java) y delante de otros lenguajes como C++ y C#.

C representa el paradigma clásico de programación imperativa o procedimental, y el modelo de organización y gestión de la memoria, así como su estructura de instrucciones permiten los mayores niveles de eficiencia en la programación.

Por su cercanía al modelo de cómputo a bajo nivel que ejecuta la CPU de un ordenador, además de la eficiencia, este lenguaje permite una adecuada comprensión de los modelos básicos de computación, desde la gestión de memoria, los modelos de control de ejecución, la comunicación entre procesos, etc.

Finalmente, es interesante destacar que C sigue siendo uno de los principales lenguajes demandados para trabajar en el sector de las tecnologías. De hecho, prácticamente todas las ofertas de trabajo en este sector exigen el conocimiento avanzado de C, Java o ambos.

Profesorado: Fernando Sancho Caparrini
José Francisco Quesada Moreno
Pedro Almagro Blanco
Alejandro Ruiz Martínez
Programa:
  • Capítulo 1: Introducción: Programación, Ciencias de la Computación y C
    • Objetivos
    • C: un activo veterano
  • Capítulo 2: Entorno de trabajo
    • Editar y compilar
    • IDE: Entornos Integrados de Desarrollo
    • Compilador de C
    • Code::Blocks
    • Un ejemplo de utilización
  • Capítulo 3: Un paseo por C
    • Funciones, funciones, funciones
    • Funciones y Datos
    • Comentarios
    • Inclusión de ficheros: #include
    • Lectura y escritura
    • Ejecución condicional
    • Ejecución iterativa
  • Capítulo 4: Representación básica de la información
    • Tipos enteros
    • Tipos en punto flotante
    • Tipo carácter
  • Capítulo 5: Arrays, punteros y strings
    • Memoria y datos
    • Punteros
    • Arrays
    • Strings: Cadenas de caracteres
    • Funciones estándar para manipulación de string
    • Ejemplo: normalización de un título
    • Caracteres del Ascii extendido
  • Capítulo 6: Estructuras
    • Definición de estructuras
    • Definición de tipos y su aplicación a las estructuras
    • Estructuras autorreferenciadas
    • Listas
    • Ejemplo: Polinomios
  • Capítulo 7: Funciones
    • Declaración y ficheros de cabecera
    • Paso de argumentos
    • Parámetros y Arrays
  • Capítulo 8: Ficheros
    • Entrada y salida
    • Ficheros: Operaciones básicas
    • Ejemplo: La palabra más larga de un texto
    • Preprocesador: macros
    • Ejemplo: Trabajando con el Índice de Desarrollo Humano
  • Capítulo 9: Tipos de Datos Abstractos: Listas, Árboles, Mapas Hash y Ordenación
    • Tipos Abstractos de Datos
    • Conjuntos
    • Árboles 
    • Hash: estructuras de datos clave-valor
    • Frecuencia de palabras
    • Ordenación
Objetivos:
  1. El principal objetivo de este curso es llevar a cabo un estudio profundo de la programación informática a través del uso de un lenguaje consolidado y masivamente utilizado (como es C), abordando las cuestiones relativas a la creación de estructuras de datos y diseño de algoritmos.
  2. En conexión con el objetivo anterior, el curso está motivado por la necesidad de abordar las cuestiones relativas a la resolución de problemas en general y su aplicación al ámbito de la informática en particular.
  3. En cuanto al estudio del propio lenguaje de programación, el curso asume varios objetivos específicos, como:
  4. Presentar a los participantes el lenguaje de programación C, partiendo desde los fundamentos básicos de este lenguaje, y abordando progresivamente técnicas avanzadas de programación que permitan cubrir problemas interesantes. Como se ha indicado previamente, C es uno de los lenguajes de programación más longevos y que sin embargo sigue siendo uno de los principales lenguajes usados y consultados. Fue desarrollado originalmente en 1972 por Dennis Ritchie en los Laboratorios Bell, y a partir de este lenguaje han surgido otros tales como Java, C#, C++, Perl o JavaScript. Entre sus principales características se encuentran la potencia, la estabilidad y la facilidad para usarlo en prácticamente todas las plataformas actuales. Como ejemplo, la interpretación primaria de lenguajes tan populares como Python y PHP está escrita en C. Esta es la razón por la que C es uno de los lenguajes más usados en la enseñanza de estudiantes, ya que facilita el aprendizaje de otros muchos.
  5. Desde los componentes básicos del lenguaje, se abordan así mismo cuestiones como entrada/salida, validación de la entrada, modelado de funciones, construcción de matrices, utilización de punteros, clases de almacenamiento, linkado, gestión de memoria, ficheros, estructuras, uso del preprocesador y representación avanzada de datos.
  6. Además se abordan las cuestiones relativas al estilo de programación, con el objetivo de conseguir código legible, comprensible y fácilmente mantenible.
  7. Así mismo el curso se centra en aspectos más avanzados del lenguaje tales como la utilización de librerías, e incluso la propia creación de nuestras librerías, el análisis de algunas de las funciones más importantes de las librerías básicas, tanto de funciones de entrada-salida como matemáticas.
  8. Un objetivo adicional del curso es mostrar todos los conceptos introducidos mediante ejemplos relevantes para los participantes en el curso.

Calendario: El curso se desarrollará entre el 18 de Febrero y el 24 de Junio de 2015.

Todo el material se distribuirá en una serie de entregas organizadas periódicamente.

Metodología:
El curso se basa en la utilización de una plataforma Web para la enseñanza-aprendizaje a través de Internet. Dicha plataforma permite la organización del material de acuerdo con los objetivos y los contenidos programados. 

Es decir, el curso se organiza a través de un conjunto de temas, para cada uno de los cuales se facilitará tanto el desarrollo del tema correspondiente, así como un conjunto de ejemplos ilustrativos de la materia del tema. Puesto que se trata de un curso muy práctico dirigido a presentar y adquirir una serie de competencias en el campo de la programación de aplicaciones informáticas con el entorno Python, se facilitan el código fuente de estos ejemplos para agilizar la implementación y estudio de cada tema.

Así mismo, cada tema incluye un conjunto de ejercicios que será necesario realizar para superar el curso. Los ejercicios se han diseñado pensando en el modelo progresivo de aprendizaje de un entorno y lenguaje de programación.

Para facilitar la resolución de las dudas y la colaboración en un entorno integrado de enseñanza-aprendizaje, el curso contará con una serie de mecanismos de comunicación tutor-alumno, entre los que destacan la creación de una serie de foros, tanto genéricos (dudas y comentarios acerca del curso y su seguimiento) como específicos por temas o tópicos de especial interés.
Evaluación: De acuerdo con las directrices generales especificadas para la metodología del curso, la evaluación para la superación del mismo se basa en la realización de los ejercicios propuestos en cada tema. Cada alumno debe realizar estos ejercicios individualmente  y enviar la solución al profesor del curso mediante los canales de control de tareas internos al propio entorno virtual de enseñanza-aprendizaje, en el que quedan reflejadas las fechas y valoración de cada una de las tareas.
Requisitos: No existen requisitos previos específicos para la realización de este curso.

El curso se impartirá de forma que pueda ser seguido tanto por usuarios y programadores de entornos Windows como Linux.

No obstante, se recomienda un nivel de competencias mínimo para la realización de tareas tales como descargar, instalar y configurar los sistemas que forman el entorno sobre el que se desarrolla el curso.
Bibliografía:

Brian W. Kernighan, Dennis M. Ritchie (1991): El lenguaje de programación C. México. Prentice-Hall.

Raquel Martínez-Fernández et al (2013): Ejercicios de programación en C. Madrid. Sección de Publicaciones de la E.T.S.I. Industriales. Universidad Politécnica de Madrid.

Diego R. Llanos Ferraris (2010): Fundamentos de informática y programación en C. Madrid, Paraninfo.

José Rafael García-Bermejor Giner (2008): Programación estructurada en C. Madrid, Pearson-Prentice Hall.


Otros:
  Descripción reducida del curso