2.14 Fundamentos del desarrollo de software (SDF)

La fluidez en el proceso de desarrollo de software es un requisito previo para el estudio de la mayor parte de la ciencia de la computación. Para utilizar las computadoras para resolver problemas de manera eficaz, los estudiantes deben ser competentes en los programas de lectura y escritura en múltiples lenguajes de programación. Más allá de conocimientos de programación, sin embargo, debe ser capaz de diseñar y analizar algoritmos, seleccionar paradigmas apropiados y utilizar el desarrollo moderno y herramientas de prueba. Esta área de conocimiento reúne a aquellos conceptos y habilidades fundamentales relacionadas con el proceso de desarrollo de software. Como tal, proporciona una base para otras áreas de conocimiento orientadas a software, sobre todo Lenguajes de Programación, Algoritmos y Complejidad, e Ingeniería de Software.

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
2.14.1 Algoritmos y Diseño 11   No
2.14.2 Conceptos Fundamentales de Programación 10   No
2.14.3 Estructuras de Datos Fundamentales 12   No
2.14.4 Métodos de Desarrollo 10   No



Subsecciones
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM