Es importante señalar que esta área de conocimiento es distinta de la antigua área conocimiento de de CC2001: Fundamentos de Programación . Considerando que dicha área de conocimiento se centró exclusivamente en los conocimientos de programación necesarios en un curso introductoria de ciencia de la computación, esta nueva área del conocimiento tiene la intención de llenar un propósito mucho más amplio. Se centra en todo el proceso de desarrollo de software, la identificación de los conceptos y habilidades que debe dominar en el primer año de un programa de ciencia de la computación. Esto incluye el diseño y análisis de algoritmos simples, conceptos fundamentales de programación, estructuras de datos, métodos y herramientas de desarrollo de software básicos. Como resultado de su propósito más amplio, esta área de conocimiento incluye conceptos y habilidades fundamentales que naturalmente podrían ser listados en otras áreas de conocimiento de software orientado a (por ejemplo, construcciones de programación de lenguajes de programación, análisis simple de Algoritmos y Complejidad, de desarrollo simple metodologías de Ingeniería de Software). Del mismo modo, cada una de estas áreas de conocimiento contendrá material más avanzado que se basa en los conceptos y habilidades fundamentales enumerados aquí.
Aunque más amplio que el área antigua de Fundamentos de Programación, esta área de conocimiento todavía permite una gran flexibilidad en el diseño de planes de estudios de primer año. Por ejemplo, la unidad Conceptos Fundamentales de Programación identifica sólo aquellos conceptos que son comunes a todos los paradigmas de programación. Se espera que un instructor seleccione uno o más paradigmas de programación (por ejemplo, la programación orientada a objetos, programación funcional, scripting) para ilustrar estos conceptos de programación, y se retiraría contenido paradigma específico del área de conocimiento Lenguajes de Programación para completar un curso. Del mismo modo, un instructor puede optar por enfatizar el análisis formal (por ejemplo, Big-O, computabilidad) o metodologías de diseño (por ejemplo, proyectos de equipo, el ciclo de vida del software), integrando así las horas de áreas de conocimiento tales como Lenguajes de Programación, Algoritmos y Complejidad, y/o Software Ingeniería. Por lo tanto, las 43 horas de material en esta área de conocimiento típicamente serán aumentadas con material de núcleo de una o más de estas otras áreas de conocimiento para formar una experiencia completa y coherente de primer año.
Al considerar las horas asignadas a cada unidad de conocimiento, cabe señalar que estas horas reflejan la cantidad mínima de cobertura de clase necesaria para introducir el material. Muchos de los temas de desarrollo de software volverán a aparecer y ser completados por temas posteriores (por ejemplo, aplicando estructuras iterativas al procesar listas). Además, el dominio de los conceptos y habilidades de esta área de conocimiento requiere una cantidad significativa de experiencia en desarrollo de software fuera de la clase
KA | Core Tier1 | Core Tier2 | Electivo |
---|---|---|---|
3.15.1 Algoritmos y Diseño | 11 | No | |
3.15.2 Conceptos Fundamentales de Programación | 10 | No | |
3.15.3 Estructuras de Datos Fundamentales | 12 | No | |
3.15.4 Métodos de Desarrollo | 10 | No |