Introduccion
 En este curso, vamos a enfocarnos en el desarrollo de software, empezando desde los cimientos.
 La programación, en su esencia, es el arte de darle instrucciones a una computadora para que realice tareas específicas.
 Es una herramienta poderosa que nos permite crear soluciones innovadoras, automatizar procesos y dar vida a nuestras ideas en el mundo digital.

Objetivos:
 Brindar a los estudiantes una base sólida en algoritmos y estructuras de datos, que les permita desarrollar programas de tamaño mediano en C.
 Desarrollar la competencia en el uso de herramientas de programación como compiladores y depuradores.
 Aprender a distinguir entre diferentes tipos de datos estáticos, reconocer estructuras de control, resolver problemas complejos utilizando técnicas de diseño descendente y comprender la gestión de memoria a través de punteros y estructuras de datos dinámicas, incluido el manejo de archivos de texto.

Contenido del curso (Unidades):
Unidad I: Introducción a los conceptos de programación, historia, mecanismos de compilación e interpretación, y la diferencia entre programas y algoritmos.
Unidad II: Tipos de datos básicos (variables, constantes, tipos numéricos, caracteres, booleanos).
Unidad III: Expresiones, declaraciones y estructuras de control ( if, switch, while, do-while, forbucles, break, continue, gotodeclaraciones).
Unidad IV: Descomposición funcional y diseño de arriba hacia abajo I (definición de funciones, llamada, declaración, paso de parámetros, alcance de variables).
Unidad V: Tipos de datos compuestos estáticos (matrices unidimensionales, bidimensionales y multidimensionales, cadenas de caracteres, paso de matrices a funciones).
Unidad VI: Declaración de tipos de datos personalizados (estructuras, uniones, variables definidas por el programador, matrices de estructuras, uso de typedefy sizeof).
Unidad VII: Punteros y gestión de memoria dinámica (declaración de punteros, operaciones de dirección e indirección, asignación de punteros, punteros nulos, paso de parámetros por referencia, matrices y punteros en C).
Unidad VIII: Descomposición funcional y diseño de arriba hacia abajo II (paso de parámetros por referencia, la mainfunción y sus argumentos, visibilidad y alcance, bibliotecas y el preprocesador).
Unidad IX: Archivos de texto ( FILEtipo, operaciones de archivo: abrir, cerrar, leer, escribir, entrada/salida estándar).
Evaluaciones:
La calificación final se basa en:
Exámenes: 70% (Parcial 1: 10%, Parcial 2: 30%, Parcial 3: 30%)
Producto: 30%
Total: 100%

Herramientas:
 El curso recomienda utilizar los entornos de distribución libre Dev C++ o Codeblocks para las prácticas del lenguaje C.

Conceptos clave:
 Algoritmos, tipos de datos, estructuras de control, funciones, punteros, gestión de memoria y manejo de archivos en C.
 Se pone énfasis en la aplicación práctica y la resolución de problemas.
¿Por qué aprender C?:
 La presentación destaca la continua popularidad de C y su uso en sistemas integrados, interconexión de hardware y programación a nivel de sistema.
 También es un lenguaje fundamental para muchos lenguajes modernos.