2.13.4 PL/Sistemas de tipos básicos (1 horas Core-Tier1, 4 horas Core-Tier2)
Las horas-core tier2 serían bien gastadas tanto en los temas estratégicos Core-Tier2 y en un tratamiento menos superficial de los resultados Core-Tier1 aprendizaje topicsand. 
Temas:
Core Tier1
- Tipos como conjunto de valores junto con un conjunto de operaciones.
- Tipos primitivos (p.e. números, booleanos)
 
- Composición de tipos construídos de otros tipos (p.e., registros, uniones, arreglos, listas, funciones, referencias)
 
  
- Asociación de tipos de variables, argumentos, resultados y campos. 
 
- Tipo de seguridad y los errores causados por el uso de valores de manera incompatible dadas sus tipos previstos. 
 
- Metas y limitaciones de tipos estáticos
- Eliminación de algunas clases de errores sin ejecutar el programa
 
- Indecisión significa que un análisis estatico puede aproximar el comportamiento de un programa 
 
  
Core Tier2
- Tipos genéricos (polimorfismo paramétrico)
- Definición
 
- Uso de librerías genéricas tales como colecciones.
 
- Comparación con polimorfismo ad-hoc y polimorfismo de subtipos
 
  
- Beneficios complementarios de tipos estáticos y dinámicos:
- Errores tempranos vs. errores tardíos/evitados.
 
- Refuerzo invariante durante el desarrollo y mantenimiento del código vs. decisiones pospuestas de tipos durante la la creación de prototipos y permitir convenientemente la codificación flexible de patrones tales como colecciones heterogéneas.
 
- Evitar el mal uso del código vs. permitir más reuso de código.
 
- Detectar programas incompletos vs. permitir que programas incompletos se ejecuten
 
  
Objetivos de Aprendizaje:
Core-Tier1:
	
- Tanto para tipo primitivo y un tipo compuesto, describir de manera informal los valores que tiene dicho tipo  [Familiarizarse]
 
- Para un lenguaje con sistema de tipos estático, describir las operaciones que están prohibidas de forma estática, como pasar el tipo incorrecto de valor a una función o método  [Familiarizarse]
 
- Describir ejemplos de errores de programa detectadas por un sistema de tipos  [Familiarizarse]
 
- Para múltiples lenguajes de programación, identificar propiedades de un programa con verificación estática y propiedades de un programa con verificación dinámica  [Usar]
 
- Dar un ejemplo de un programa que no verifique tipos en un lenguaje particular y sin embargo no tenga error cuando es ejecutado  [Familiarizarse]
 
- Usar tipos y mensajes de error de tipos para escribir y depurar programas  [Usar]
 
Core-Tier2:
	
- Explicar como las reglas de tipificación definen el conjunto de operaciones que legales para un tipo  [Familiarizarse]
 
- Escribir las reglas de tipo que rigen el uso de un particular tipo compuesto  [Usar]
 
- Explicar por qué indecidibilidad requiere sistemas de tipo para conservadoramente aproximar el comportamiento de un programa  [Familiarizarse]
 
- Definir y usar piezas de programas (tales como, funciones, clases, métodos) que usan tipos genéricos, incluyendo para colecciones  [Usar]
 
- Discutir las diferencias entre, genéricos (generics), subtipo y sobrecarga  [Familiarizarse]
 
- Explicar múltiples beneficios y limitaciones de tipificación estática en escritura, mantenimiento y depuración de un software  [Familiarizarse]
 
Generado por Ernesto Cuadros-Vargas ,               Sociedad Peruana de Computación-Peru,               basado en el modelo de la Computing Curricula de               IEEE-CS/ACM