El área de conocimiento SDF reúne conceptos y habilidades fundamentales relacionados con el desarrollo de software, centrándose en aquellos que deben enseñarse al inicio de un programa de ciencias de la computación, típicamente en el primer año. Esto incluye conceptos de programación fundamentales y su uso efectivo para escribir programas, el uso de estructuras de datos fundamentales que pueden ser proporcionadas por el lenguaje de programación, conceptos básicos de buenas prácticas de programación para escribir programas de calidad, la lectura y comprensión de programas, y cierta comprensión del impacto de los algoritmos en el rendimiento de los programas. Las 43 horas de material en esta área de conocimiento pueden complementarse con material central de otras áreas a medida que los estudiantes avanzan a cursos de nivel intermedio y superior.
Esta área de conocimiento asume un lenguaje de programación contemporáneo con soporte incorporado para tipos de datos comunes, incluidos tipos de datos asociativos como diccionarios/mapas, como vehículo para introducir a los estudiantes a la programación (por ejemplo, Python, Java). Sin embargo, esto no pretende desalentar el uso de lenguajes más antiguos o de bajo nivel para SDF: las unidades de conocimiento a continuación pueden adaptarse adecuadamente al lenguaje real utilizado.
El surgimiento de la IA generativa y los Modelos de Lenguaje Grande (LLMs), que pueden generar programas para muchas tareas de programación, sin duda afectará a la profesión de programación y, en consecuencia, a la enseñanza de muchos temas de CS. Sin embargo, para poder utilizar efectivamente la IA generativa en tareas de programación, un programador debe tener una buena comprensión de los programas y, por lo tanto, aún debe aprender los fundamentos de la programación y desarrollar habilidades básicas de programación, que es el objetivo de SDF. En consecuencia, consideramos que los resultados deseados para SDF deberían permanecer iguales, aunque diferentes instructores ahora podrían dar más énfasis a la comprensión, documentación, especificaciones, análisis y pruebas de programas. (Esto es similar a enseñar a los estudiantes multiplicación, suma, etc., aunque se puedan usar calculadoras para hacerlo).
| KA | Core Tier1 | Core Tier2 | Electivo |
|---|---|---|---|
| 2.12.1 Fundamentos de Programación I | No | ||
| 2.12.2 Fundamentos de Programación II | No | ||
| 2.12.3 Estructuras de Datos Fundamentales | No | ||
| 2.12.4 Algoritmos | No | ||
| 2.12.5 Prácticas de Desarrollo de Software | No | ||
| 2.12.6 Sociedad, ética y la Profesión | No |