Introducción
Aprenderemos C# en Visual Studio. Exploraremos variables, bucles, métodos y sentencias condicionales. Crearemos programas basados en consola y ventanas. Con ChatGPT, Gemini y GitHub Copilot, diseñaremos un juego de adivinanzas con IA, un asesor culinario y un chat NPC, y generaremos gráficos en arte ASCII.
Programa del curso
1Clase 1. Introducción a C#
El objetivo de la lección es crear el primer programa en C# y familiarizarse con el entorno Visual Studio Code.
2Clase 2. Variables y constantes
El objetivo de la lección es introducir el concepto de variables y constantes, y mostrar los tipos de variables más utilizados.
3Clase 3. Operaciones matemáticas
El objetivo de la lección es presentar las operaciones matemáticas más utilizadas.
4Clase 4. Operadores lógicos y conversión de tipos
El objetivo de la lección es introducir la lógica en el contexto de las matemáticas y la programación. Aprenderemos sobre el tipo lógico y los operadores que permiten el razonamiento.
5Clase 5. Conociendo el entorno de programación
El objetivo de la lección es conocer mejor el entorno de Visual Studio Code, aprender a reconocer y corregir errores comunes e integrar GitHub Copilot con el editor.
6Clase 6. Sentencias condicionales
El objetivo de la lección es introducir las sentencias condicionales. Aprenderemos cómo funcionan y veremos ejemplos de su aplicación.
7Clase 7. Switch y Enum
El objetivo de la lección es presentar la instrucción switch. Aprenderemos una alternativa a la instrucción if. Además, descubriremos qué es un tipo de enumeración (enum).
8Clase 8. Buenas prácticas de programación
El objetivo de la lección es introducir buenas prácticas de programación en C#, con especial énfasis en la depuración de código. Los estudiantes aprenderán a utilizar puntos de interrupción, analizar la ejecución del programa paso a paso y detectar y corregir errores en el código.
9Clase 9. Bucles
El objetivo de la lección es comprender el mecanismo de los bucles y adquirir la capacidad de utilizar en la práctica dos tipos de bucles en C#: while y for.
10Clase 10. Arrays (Arreglos)
El objetivo de la lección es aprender sobre los arrays (arreglos).
11Clase 11. Evaluación de habilidades en C# – Junior
El objetivo de la lección es repasar y consolidar los conocimientos adquiridos hasta el momento. Los estudiantes tendrán la oportunidad de enfrentarse a retos de programación y competir por puntos.
12Clase 12. Métodos
El objetivo de la lección es aprender sobre los métodos, que permiten dividir el código en partes y mejorar su legibilidad.
13Clase 13. Listas
El objetivo de la lección es comprender mejor los arrays (arreglos) y aprender sobre las listas.
14Clase 14. Juego de adivinanza
El objetivo de la clase es consolidar los conocimientos sobre métodos y listas.
15Clase 15. Estructuras de datos
El objetivo de la lección es aprender nuevas estructuras de datos que permitan implementar mecánicas sencillas de juegos populares.
16Clase 16. Chatbot con un NPC
El objetivo de la lección es aprender a crear un chatbot sencillo y comprender los conceptos básicos del procesamiento del lenguaje natural (NLP).
17Clase 17. Introducción a la Programación Orientada a Objetos
El objetivo de esta lección es introducir la programación orientada a objetos en C#.
18Clase 18. Programación Orientada a Objetos en la práctica
En esta lección, los alumnos aprenderán los paradigmas de la programación orientada a objetos: la abstracción, la herencia y el polimorfismo. Disenaremos la lógica de los héroes del juego definiendo tipos de personajes con diferentes habilidades, mediante el uso de objetos.
19Clase 19. Vectores y espacio 2D
El objetivo de esta lección es aprender qué son los vectores y cómo se utilizan, así como conocer formas de implementarlos mediante la programación orientada a objetos.
20Lección 20. Introducción a la POO
El objetivo de la lección es familiarizar a los participantes con los problemas básicos, el concepto de programación orientada a objetos y el trabajo en el Explorador de soluciones.
21Lección 21. Herencia (Parte I)
El objetivo de la lección es profundizar sus conocimientos de programación orientada a objetos. Se presentarán cuestiones como la herencia, la anulación de métodos y los elementos estáticos en la programación.
22Lección 22. Herencia (Parte II)
El objetivo de la lección es revisar y consolidar los conceptos básicos de la programación orientada a objetos y aprender sobre elementos como la sobrecarga de métodos, el bucle foreach y las listas.
23Lección 23. Revisión de programación orientada a objetos - RPG
El objetivo de la lección es revisar y consolidar el material desde los conceptos básicos de la programación orientada a objetos.
24Lección 24: Introducción a Raylib
El objetivo de esta lección es familiarizar a los participantes con la instalación y configuración de proyectos utilizando Raylib basados en la implementación del proyecto de caída de bola.
25Lección 25. Juego de la serpiente (Parte 1)
El objetivo de esta lección es comenzar a trabajar en un proyecto para el popular juego Snake, en el que crearemos la mecánica básica del juego, implementaremos el movimiento de la serpiente, la generación de alimentos y el manejo de colisiones.
26Lección 26. Juego de la serpiente (Parte 2)
El objetivo de la lección es continuar trabajando en el proyecto del popular juego Snake.
27Lección 27. Juego de Flappy Bird Parte 2
El objetivo de esta lección es ayudarte a empezar a jugar Flappy Bird. Aprenderás a controlar los movimientos de los personajes, generar obstáculos y registrar puntos para crear un juego completamente funcional.
28Lección 28. Juego de Flappy Bird Parte 3
El objetivo de esta lección es continuar trabajando en el juego Flappy Bird.
29Lección 29. Tareas independientes
El objetivo de la lección es utilizar el conocimiento de lecciones anteriores en el proceso de resolución de tareas independientes.
30Lección 30. Invasores del espacio Parte 2
El objetivo de esta lección es ayudarte a comenzar con tu juego Space Invaders.
31Lección 31. Invasores del espacio Parte 3
El objetivo de esta lección es continuar nuestro trabajo en Space Invaders. En esta sección, abordaremos la adición de naves extraterrestres, su movimiento y las colisiones con el jugador y los proyectiles.
32Lección 32. Pong
El objetivo de esta lección es aprender a trabajar con código escrito por otros y arreglar un proyecto de juego de Pong.
33Lección 33. El juego de la vida (Parte I)
En esta y próximas clases prepararemos nuestra propia implementación del Juego de Vida. Se trata de una simulación en la que no existe un jugador típico y la única influencia en el juego se produce durante el establecimiento de las condiciones iniciales. La simulación involucra células que evolucionan y forman diferentes estructuras.
34Lección 34: El juego de la vida (Parte 2)
En clase, perfeccionaremos nuestro proyecto del Juego de la Vida. Mejoraremos el rendimiento del programa y añadiremos varias maneras de ejecutar la simulación. Esto nos permitirá probar la funcionalidad de un organismo prediseñado.
35Lección 35. Métodos de almacenamiento de datos
El objetivo de esta lección es analizar varios métodos de almacenamiento de datos en C#. Se presentarán los conceptos de registros, diccionarios, colas y conjuntos.
36Lección 36: Bases de datos en C# (Parte I)
El objetivo de esta lección es explicar cómo conectarse a una base de datos MySQL en C# y demostrar cómo recuperar datos de ella.
37Lección 37: Bases de datos en C# (Parte II)
El objetivo de esta lección es analizar cómo prevenir la inyección de SQL, qué son las transacciones y el propósito de Entity Framework.
38Lección 38: Introducción al LINQ
El objetivo de esta lección es presentar LINQ, sus aplicaciones, cuándo vale la pena utilizarlo y sus ventajas.
39Lección 39: Pruebas
El objetivo de esta lección es explicar cómo escribir pruebas unitarias y de integración en C#. Además, cubrirá por qué es beneficioso hacerlo.
40Lección 40: LeetCode y HackerRank: Tareas básicas de programación (Parte I)
El objetivo de esta lección es mostrar los sitios web LeetCode y HackerRank. Se realizarán varias tareas en LeetCode, utilizando conceptos discutidos previamente.
41Lección 41: LeetCode y HackerRank (Parte II)
Continuación de la resolución de tareas. Demostrar y resolver colaborativamente tareas que puedan aparecer en entrevistas de trabajo corporativas.
42Lección 42: Interfaces y clases abstractas
El objetivo de esta lección es analizar las diferencias entre interfaces y clases abstractas en C# y demostrar cómo usarlas correctamente en proyectos complejos. Aprenderemos a implementar interfaces y crear clases abstractas mediante buenas prácticas de diseño.
43Lección 43. Singleton
El objetivo de esta lección es comprender qué son los patrones de diseño y su importancia en la programación. Aprenderemos los principios y aplicaciones del patrón Singleton.
44Lección 44. Lectura de datos de archivos
El objetivo de esta lección es aprender los métodos y bibliotecas de C# para leer datos de diversos formatos de archivo (PDF, JSON). El curso también abordará el manejo de excepciones al gestionar archivos dañados y las prácticas de validación de datos.
45Lección 45: Inteligencia artificial en C#, descripción general de ML.NET, parte 2
En esta lección, exploramos los conceptos básicos de inteligencia artificial y aprendizaje automático en el contexto de C# y la biblioteca ML.NET. También aprendemos a cargar datos fácilmente, entrenar un modelo y realizar predicciones básicas basadas en ejemplos reales (por ejemplo, clasificar películas favoritas).
46Lección 46: Inteligencia artificial en C#, descripción general de ML.NET, parte 3
"En esta lección, aprenderemos las métricas básicas para evaluar la calidad del modelo (exactitud, precisión, recuperación).
Aprenderemos a dividir los datos en conjuntos de entrenamiento y de prueba. Enriqueceremos el modelo con nuevas características (p. ej., año de lanzamiento, valoraciones de los usuarios) y observaremos el impacto de estos cambios en los resultados.
Añadiremos la interacción del usuario en la consola."
47Lección 47. Cine Gigante, parte 1
El objetivo de esta lección es diseñar e implementar una aplicación de consola para reservas de cine, que incluye la creación de espectáculos, la gestión de asientos y la gestión de reservas. Aprenderemos a escribir clases que representan la lógica de negocio y almacenan la información de las reservas en un archivo o una base de datos simple.
48Lección 48. Cine Gigante Parte 2 e Introducción a Unity
El objetivo de esta lección es diseñar e implementar una aplicación de consola para la reserva de butacas de cine, que incluye la creación de proyecciones, la gestión de butacas y la gestión de reservas. Aprenderemos a escribir clases que representan la lógica de negocio y almacenan la información de las reservas en un archivo. También aprenderemos sobre el motor gráfico Unity.
