Una hora corresponde al tiempo en clase requerido para presentar... Fundamentos de Programación (PF – Programming Fundamentals)

Anuncio
Una hora corresponde al tiempo en clase requerido para presentar el material.
Fundamentos de Programación (PF – Programming Fundamentals)
La fluidez en un lenguaje de programación es un requisito para el estudio de la mayoría de la
ciencia de la computación. Los programas de licenciatura de ciencia de la computación deben
enseñar a los estudiantes como utilizar al menos un lenguaje de programación correctamente;
además, los programas de ciencia de la computación deben enseñar a los estudiantes como ser
competentes en lenguajes que utilicen los paradigmas orientados a objetos y orientados a
eventos.
Esta área de conocimiento incluye aquellas destrezas y conceptos que son esenciales para la
práctica de programación independientemente del paradigma subyacente. Como resultado, esta
área incluye unidades en conceptos fundamentales de computación, estructuras de datos básicas,
procesos algorítmicos y seguridad básica. Estas unidades, sin embargo, de ninguna manera
cubren el rango completo del conocimiento de programación que un licenciado en ciencia de la
computación debe saber. Muchas otras áreas – Lenguajes de Programación e Ingeniería de
Software – también contienen unidades relacionadas a la programación que son parte del núcleo
de la licenciatura. En la mayoría de los casos, estas unidades pueden ser igualmente asignadas
tanto a Fundamentos de Programación como a áreas más avanzadas.
PF. Fundamentos de Programación (47 horas – núcleo)
PF/Componentes Fundamentales [núcleo]
PF/Solución de Problemas Algorítmicamente [núcleo]
PF/Estructura de Datos [núcleo]
PF/Recursión [núcleo]
PF/Programación Dirigida por Eventos [núcleo]
PF/Orientación a Objetos [núcleo]
PF/Fundamentos de la Seguridad de la Información [núcleo]
PF/Programación Segura [núcleo]
PF/Componentes Fundamentales [núcleo]
Mínimo de cobertura: 9 horas
Temas:
- Sintaxis y semántica básica de un lenguaje de alto nivel
- Variables, tipos, expresiones y asignación
- Entrada y Salida simple
- Estructuras de control condicionales e iterativas
- Funciones y paso de parámetros
- Descomposición estructurada
Objetivos de aprendizaje:
1. Analizar y explicar el comportamiento de programas simples involucrando las estructuras
fundamentales cubiertas en esta unidad.
2. Modificar y expandir programas cortos que utilicen las estructuras de control estándares
para condiciones e iteraciones, así como funciones.
3. Diseñar, implementar, probar y depurar un programa que utilice cada una de los
siguientes componentes de programación: computación básica, entrada y salida simple,
estructuras de control estándar para condición e iteración, y la definición de funciones.
4. Escoger apropiadamente las estructuras de condición e iteración para una tarea de
programación dada.
5. Aplicar las técnicas de la descomposición estructural (funcional) para partir programas en
piezas más pequeñas.
6. Describir los mecanismos de paso de parámetros.
PF/Solución de Problemas Algorítmicamente [núcleo]
Mínimo de cobertura: 6 horas
Temas:
- Estrategias de solución de problemas
- El rol de los algoritmos en el proceso de solución de problemas
- Estrategias de implementación para algoritmos
- Estrategias de depuración
- El concepto y propiedades de los algoritmos
Objetivos de Aprendizaje:
1. Discutir la importancia de los algoritmos en el proceso de solución de problemas.
2. Identificar las propiedades necesarias para buenos algoritmos.
3. Crear algoritmos para resolver problemas simples.
4. Utilizar pseudocódigo o un lenguaje de programación para implementar, probar y depurar
algoritmos para problemas simples.
5. Describir las estrategias que son útiles en la depuración.
PF/Estructura de Datos [núcleo]
Mínimo de cobertura: 10 horas
Temas:
- Representación de los datos numéricos
- Rango, precisión y errores de redondeo
- Arreglos
- Representación de los caracteres
- Cadenas y procesamiento de cadenas
- Administración de almacenamiento en tiempo de ejecución
- Punteros y referencias
- Estructuras enlazadas
- Implementación de estrategias para pilas, colas y tablas hash
- Implementación de estrategias para grafos y árboles
- Estrategias para escoger la estructura de datos correcta
Objetivos de aprendizaje:
1. Describir la representación de datos numéricos y alfabéticos.
2. Entender como la precisión y el redondeo pueden afectar los cálculos numéricos.
3. Discutir el uso de tipos de datos primitivos y estructuras de datos prefabricadas.
4. Describir las aplicaciones comunes para cada una de las estructuras de datos en la lista
de temas.
5. Implementar estructuras de datos definidas por el usuario en un lenguaje de alto nivel.
6. Comparar alternativas de implementaciones de estructuras de datos respecto de su
rendimiento.
7. Escribir programas que utilicen cada una de las siguientes estructuras de datos: arreglos,
cadenas, listas enlazadas, pilas, colas y tablas hash.
8. Comparar y contrastar los costos y beneficios de las implementaciones estáticas y
dinámicas de las estructuras de datos.
9. Escoger la estructura de datos apropiada para modelar un problema dado.
PF/Recursión [núcleo]
Mínimo de cobertura: 4 horas
Temas:
- El concepto de recursión
- Funciones matemáticas recursivas
- Funciones recursivas simples
- Estrategias de divide y vencerás
- Seguimiento de la recursión.
Objetivos de Aprendizaje:
1. Describir el concepto de recursión y dar ejemplos de su uso.
2. Identificar el caso base y el caso general para un problema definido recursivamente.
3. Comparar soluciones iterativas y recursivas para problemas elementales como factorial.
4. Describir la aproximación de divide y vencerás.
5. Implementar, probar y depurar funciones recursivas simples y procedimientos.
6. Determinar cuando una solución recursiva es apropiada para un problema.
PF/Programación Dirigida por Eventos [núcleo]
Mínimo de cobertura: 4 horas
Temas:
- Métodos para manejar eventos
- Propagación de eventos
- Manejo de excepciones
Objetivos de aprendizaje:
1. Explicar la diferencia entre programación dirigida a eventos y programación en Terminal.
2. Diseñar, codificar, probar y depurar programas dirigidos a eventos simples que respondan
a eventos del usuario.
3. Desarrollar código que responda a condiciones de excepción generadas durante la
ejecución.
PF/Orientación a Objetos [núcleo]
Mínimo de cobertura: 8 horas
Temas:
- Diseño Orientado a Objetos
- Encapsulación y ocultamiento de información
- Separación entre comportamiento e implementación
- Clases y subclases
- Herencia (“overriding”, despacho dinámico)
- Polimorfismo (subtipo de polimorfismo vs. herencia)
Objetivos de Aprendizaje:
1. Justificar la filosofía del diseño orientado a objetos y los conceptos de encapsulación,
abstracción, herencia y polimorfismo.
2. Diseño, implementación, prueba y depuración de programas simples en un lenguaje de
programación orientado a objetos.
3. Describir como el mecanismo de la clase apoya la encapsulación y el ocultamiento de
información.
4. Diseñar, implementar y probar la implementación de una relación “es un” entre objetos
utilizando la jerarquía de clases y herencia.
5. Comparar y contrastar las nociones de “overloading” y “overriding” de métodos en un
lenguaje orientado a objetos.
PF/Fundamentos de la Seguridad de la Información [núcleo]
Mínimo de cobertura: 4 horas
Temas:
- Rol y propósito de la seguridad computacional y de redes
- Metas de la seguridad: confidencialidad, integridad, disponibilidad
- Estándares y políticas de seguridad
- Opinión de la seguridad
- Defensa en profundidad
- Amenazas comunes: gusanos, virus, troyanos, negación de servicio
- Evaluación del riesgo y análisis de costo-beneficio
- Seguridad vs. compensaciones de: usabilidad, tiempo y/o dinero.
Objetivos de Aprendizaje:
1. Explicar los objetivos de la seguridad de la información.
2. Analizar las compensaciones inherentes en la seguridad.
3. Explicar la importancia y aplicación de cada una de las siguientes: confidencialidad,
integridad y disponibilidad.
4. Entender las categorías básicas de las amenazas hacia computadoras y redes.
5. Discutir los aspectos para crear una política de seguridad para una organización grande.
6. Defender la necesidad de protección y seguridad y el rol de las consideraciones éticas en
el uso de la computadora.
7. Agregar un aprendizaje sobre evaluación de riesgo simple aquí *
PF/Programación Segura [núcleo]
Mínimo de cobertura: 2 horas
Temas:
- Importancia del chequeo de y para evitar el desbordamiento de arreglos y cadenas
- Estructuras del lenguaje de programación para evitar y alternativas.
- Como los atacantes utilizan el desbordamiento para afectar la pila de tiempo de ejecución.
Objetivos de aprendizaje:
1. Reescribir un programa simple para eliminar las vulnerabilidades.
2. Explicar por qué y por qué no un desbordamiento en el “buffer” es posible en el lenguaje
de programación que mejor conozca.
3. Explicar una o más estructuras del lenguaje que puedan llevar a problemas de seguridad
tales como el desbordamiento.
Bibliografía: Interim Review Task Force of the Association for Computing Machinery and the IEEE
Computer Society, Computer Science Curriculum 2008: An Interim Revision of CS2001, December
2008 (Páginas 40 – 43)
---------------------------------------------------------------------------------------------------------------------------------Los siguientes cursos abordan las áreas de conocimiento descritas:
1. CC2002 – Intro. Programación Orientada a Objetos (3 períodos teoría p/semana = 42
horas p/semestre)
a. PF/Componentes Fundamentales [núcleo] 9 horas
b. PF/Solución de Problemas Algorítmicamente [núcleo] 6 horas
c. PF/Programación Dirigida por Eventos [núcleo] 4 horas
d. PF/Orientación a Objetos [núcleo] 8 horas
e. PF/Estructura de Datos [núcleo] 4 horas
i. Representación de los datos numéricos
ii. Rango, precisión y errores de redondeo
iii. Arreglos
iv. Representación de los caracteres
v. Cadenas y procesamiento de cadenas
Total de 31 horas de contenido mínimo.
2. CC2003 – Algoritmos y Estructuras de Datos (4 períodos teoría p/semana = 57 horas
p/semestre)
a. PF/Estructura de Datos [núcleo] 10 horas
b. PF/Recursión [núcleo] 4 horas
c. PF/Programación Dirigida por Eventos [núcleo] 1 hora
i. Manejo de excepciones
Total de 15 horas de contenido mínimo
3. CC525 – Seguridad (3 períodos teoría p/semana = 42 horas p/semestre)
a. PF/Fundamentos de la Seguridad de la Información [núcleo] 4 horas
b. PF/Programación Segura [núcleo] 2 horas
Total de 6 horas de contenido mínimo
Descargar