0% encontró este documento útil (0 votos)
72 vistas8 páginas

Plan de Estudios en Ingeniería de Software

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas8 páginas

Plan de Estudios en Ingeniería de Software

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Escuela de ingeniería de software.

Plan de estudios.

1. Lógica y algoritmos.

El objetivo de esta materia es desarrollar en el alumno un pensamiento lógico que le permita


comprender y aplicar conceptos fundamentales de la programación. A través de distintas
metodologías de aprendizaje, se busca transformar su percepción natural del entorno hacia
una perspectiva más analítica y orientada a la resolución de problemas.

Se introduce por primera vez el concepto de algoritmo, explicando cada una de sus partes
para que el alumno pueda resolver problemas cotidianos, operaciones aritméticas básicas y
desafíos más complejos. Se utilizarán diagramas de flujo como herramienta gráfica para
visualizar y estructurar soluciones.

1.1. Lógica.
1.2. Algoritmo.
1.3. Variables.
1.4. Condicionales.
1.5. Ciclos.
1.6. Funciones.
1.7. Resolución algorítmica.
1.8. Modulación.

2. Programación estructurada.

El objetivo de esta materia es que el alumno desarrolle la capacidad de crear programas


básicos que resuelvan problemas utilizando conocimientos de lógica de programación,
algoritmos y resolución de situaciones cotidianas. Además, pondrá en práctica la
modularidad mediante la implementación de código en el lenguaje de programación C.

El estudiante aprenderá a identificar y utilizar la estructura básica de un programa en C y


sus componentes esenciales. A través de la creación de programas, aplicará sentencias
condicionales, ciclos y funciones, asegurando que su código esté correctamente
estructurado y modular.

2.1. C.
2.2. Partes de un programa en C.
2.3. Declaración de variables y uso.
2.4. Condicionales y uso.
2.5. Ciclos y su uso.
2.6. Funciones y su uso.
2.7. Memoria.
2.8. Apuntadores.
3. Programación orientada a objetos.

El objetivo de esta materia es que el alumno conozca y aplique el paradigma de


programación orientada a objetos (POO) mediante el uso del lenguaje de programación
Java. Aprenderá a desarrollar programas estructurados que integren el uso modular de
objetos y la creación de clases, siguiendo las mejores prácticas de programación.

El estudiante adquirirá los conceptos fundamentales de la POO, como herencia,


polimorfismo, abstracción y encapsulamiento, así como conceptos más avanzados,
tales como interfaces, clases abstractas, sobrecarga, sobrescritura y constructores.
Estos conocimientos se aplicarán a través del desarrollo de programas complejos en
Java.

Además, se presentarán librerías gráficas como Swing y se abordará la gestión de


memoria, explicando el funcionamiento de la memoria en pila y memoria de montón, así
como el rol del recolector de basura en Java. El alumno también aprenderá a manejar
excepciones utilizando la sentencia try-catch.

3.1. Java.
3.2. Partes de un programa en Java y programación estructurada en Java.
3.3. Funciones y constructores, introducción al concepto de objeto.
3.4. Clases, propiedades, funciones, instancia, herencia y polimorfismo.
3.5. Abstracción y encapsulamiento, interfaces y clases abstractas.
3.6. Sobrecarga y sobreescritura, tema selecto de composición sobre herencia.
3.7. Sentencia try-catch y manejo de excepciones, introducción a la librería Swing.
3.8. Inmutabilidad, teoría de memoria en pila, en montón y recolector de basura.
4. Estructura de datos.

El objetivo de esta materia es que el alumno reconozca las principales estructuras de


datos y aprenda a implementarlas correctamente. Para lograrlo, deberá comprender la
lógica interna de cada estructura y su representación gráfica, de modo que pueda
imaginar su implementación y elegir el momento adecuado para utilizarlas de forma
eficiente.

Se abordarán temas fundamentales para introducir la estructuración de datos, como la


creación y uso de arreglos unidimensionales y bidimensionales, listas enlazadas, listas
de arreglos enlazados, pilas y colas. Además, se enseñarán algoritmos de
ordenamiento básicos, incluyendo el ordenamiento burbuja y el ordenamiento rápido
(quicksort).

4.1. Notación de la O grande y rendimiento.


4.2. Arreglos unidimensionales y bidimensionales, Conjuntos (Set) y mapas (Map).
4.3. Listas enlazadas y Listas de arreglos enlazados.
4.4. Pilas y colas.
4.5. Ordenamiento de datos.
4.6. Recursividad y ordenamiento rápido.
4.7. Árboles y árboles binarios.
4.8. Grafos.

5. Programación avanzada.

El objetivo de esta materia es que el alumno haga uso de la programación funcional y


concurrente. Se abordarán temas selectos de la programación funcional en el lenguaje de
programación Java, incluyendo Streams, colecciones de datos y las funciones más
relevantes que se pueden aplicar a estas.

En cuanto a la programación concurrente, el alumno desarrollará las habilidades y


conocimientos necesarios para crear tareas y procesos paralelos, aprendiendo a
controlarlos de manera efectiva. También entenderá el correcto manejo de los procesos
concurrentes, lo que le permitirá optimizar la ejecución de sus programas.

5.1. Funciones anónimas, lambdas, genéricos, opcionales e interfaces funcionales.


5.2. Consumidores, proveedores, predicados, funciones y bi-funciones,
implementación y uso.
5.3. API Stream, filtrado, mapeo, recolección y creación de funciones propias y su
implementación en Stream.
5.4. Creación de hilos a través de Thread y Runnable.
5.5. Diferencia entre proceso y tarea, sincronicidad y asincronicidad.
5.6. Fiabilidad de datos y volatilidad.
5.7. Semáforos.
5.8. Tareas periódicas e introducción a ExecutorService.
6. Programación cliente-servidor.

El objetivo de esta materia es que el alumno conceptualice e implemente los principios


fundamentales de la creación de clientes y servidores, así como su conectividad. Se
desarrollarán temas específicos sobre cómo los clientes pueden consumir recursos de un
servidor y cómo se puede crear un servidor para proporcionar esos recursos.

El alumno aprenderá las diferentes formas de conexión e intercambio de información entre


un cliente y un servidor, incluyendo la creación de sockets y el uso de distintos puertos de
comunicación, así como la cantidad de puertos disponibles y su uso específico. También
se abordará el tipo de conectividad TCP/IP, explicando el concepto de IP, su formación y su
uso.

Esto facilitará la introducción a los protocolos de intercambio de información,


profundizando en el protocolo HTTP y HTTPS, así como en sus puertos por defecto. Se
discutirán teóricamente los distintos tipos de protocolos de mensajería de información, como
FTP, y se comparará el uso de cada uno de ellos.

6.1. Teoría cliente-servidor y transferencia de información.


6.2. Creación de un servidor y uso de InputReader y BufferedReader
6.3. Hilos a la escucha de información como observadores.
6.4. Sockets y transferencia de información.
6.5. Puertos e introducción a la IP y protocolo TCP/IP.
6.6. Transferencia de información por XML (protocolo SOAP).
6.7. Protocolo HTTP y uso de SSL para HTTPS.
6.8. Teoría de métodos HTTP y transferencia de información por JSON.

7. Inteligencia artificial.

El objetivo de esta materia es que el alumno conozca la teoría de la inteligencia artificial y


explore los distintos algoritmos básicos que la componen. Se introducirá el concepto de
neurona y su implementación en software, y a partir de ahí se incrementará la dificultad de
implementación mediante la explicación y creación de algoritmos de inteligencia artificial,
especialmente aquellos relacionados con el entrenamiento supervisado, como Adaline,
Madaline y el algoritmo evolutivo. Se ampliará el tema a través del uso de otros
algoritmos, como la máquina de soporte vectorial y el recocido simulado. Además, se
abordarán conceptos de predicción de datos junto con el algoritmo Naive Bayes.

7.1. Introducción a la inteligencia artificial.


7.2. Neurona y la neurona de McCulloch-Pitts.
7.3. Adaline.
7.4. Madaline.
7.5. Algoritmo evolutivo.
7.6. Máquina de soporte vectorial.
7.7. Recocido simulado.
7.8. Naive Bayes.
8. Programación web frontend.

El objetivo de esta materia es que el alumno pueda implementar la creación de una página
web desde el frontend. Se ampliarán sus conocimientos a través del uso de HTML5, CSS3
y JavaScript (vanilla). Se abordarán temas avanzados de HTML, como el uso del DOM.

Se introducirá el uso de jQuery y se presentarán los diferentes marcos de trabajo más


populares a nivel conceptual, incluyendo VueJS y Angular. De manera práctica, se
implementará ReactJS. Además, se enseñarán a crear animaciones básicas y se
discutirán conceptos del desarrollo de software frontend que son de uso cotidiano en la
industria.

8.1. HTML5 y CSS3.


8.2. JavaScript (Vanilla) y DOM.
8.3. Animaciones con CSS3.
8.4. JQuery y AJAX.
8.5. VueJS y Angular (teoría) Introducción a ReactJS.
8.6. ReactJS avanzado.
8.7. Consumo de una API Rest con ReactJS.
8.8. Creación de una página web básica con consumo de API.

9. Bases de datos.

El objetivo de esta materia es que el alumno reconozca las diversas opciones de


manejadores de bases de datos y comprenda el uso y paradigma de cada uno. Se
explorarán bases de datos relacionales, no relacionales, orientadas a objetos y
objeto-relacionales.

Se instruirá al alumno en el lenguaje de sentencias de consulta SQL, permitiéndole


dominar la teoría y el uso de sentencias de selección, inserción, actualización y borrado
de datos. Se abordarán temas más complejos, como uniones, conjunciones, y
conjunciones internas, así como uniones por izquierda y por derecha. El alumno también
aprenderá a utilizar diagramas de Venn para representar gráficamente las sentencias.

Finalmente, se concluirá con la explicación e implementación de procedimientos


almacenados y la generación de vistas.

9.1. Introducción a las bases de datos y sus tipos.


9.2. SQL, T-SQL e introducción a JPQL.
9.3. INSERT, SELECT, UPDATE y DELETE.
9.4. Agrupadores, límites y otras sentencias funcionales.
9.5. JOIN y INNER JOIN.
9.6. LEFT JOIN y LEFT OUTER JOIN
9.7. RIGHT JOIN y RIGHT OUTER JOIN.
9.8. Procedimientos almacenados y vistas.
10. Programación web backend.

El objetivo de esta materia es que el alumno comprenda el desarrollo web backend y su


integración con el frontend. Se introducirá el concepto de modelo-vista-controlador
(MVC), utilizando marcos de trabajo para facilitar su comprensión, como Spring y el uso de
Thymeleaf.

A medida que avance el curso, se enfocará en la creación de sistemas backend basados


en APIs REST, que proporcionen recursos y datos al frontend. Se hará un uso extensivo de
Spring Boot y sus componentes, incluyendo el uso de anotaciones, la creación de beans
y seguridad.

Se finalizará con la explicación de temas importantes, como servicios y sistemas


multicapa, el uso de la API JPA en conjunto con Hibernate, y se concluirá con la
comunicación entre varios servicios.

10.1. Introducción al desarrollo backend y seguridad informática.


10.2. MVC, Spring y Thymeleaf.
10.3. Spring Boot y REST APIs.
10.4. Spring Security y JWT.
10.5. Conexión a bases de datos (MySQL y PostgreSQL).
10.6. JPA y Hibernate.
10.7. Creación de servicio multicapa y pruebas unitarias.
10.8. Creación de múltiples servicios, comunicación entre ellos y pruebas de
integración.
11. DevOps.

El objetivo de esta materia es que el alumno comprenda el concepto de desarrollo y


operaciones (DevOps) y cómo se integran para facilitar la creación de aplicaciones
eficientes. Se utilizará Docker para contenerizar una aplicación desarrollada con Spring
Boot.

El curso incluirá la oportunidad de realizar el despliegue de una aplicación backend. Para


lograr este objetivo, el alumno empleará tecnologías en la nube, centrándose en Amazon
Web Services (AWS), que es una de las plataformas más utilizadas en el mercado actual.

El alumno aprenderá a desplegar su aplicación backend utilizando ECS y ECR. Además,


podrá almacenar datos en RDS utilizando MySQL y, por último, gestionará archivos
estáticos, como imágenes y videos, en S3. También se abordará la compra de un nombre
de dominio para implementar el despliegue de su aplicación mediante Route 53.
Finalmente, se incluirán temas sobre cómo asegurar todos los servicios mencionados,
utilizando VPC y balanceadores de carga con ELB.

11.1. Introducción a AWS e instalación de AWS CLI.


11.2. Creación de base de datos en RDS.
11.3. Docker y Spring Boot.
11.4. Route53, nombre de dominio y balanceador de carga.
11.5. Despliegue de Spring Boot en ECS usando ECR.
11.6. Creación de VPC y uso de grupos de seguridad.
11.7. S3 para el almacenamiento de archivos estáticos.
11.8. Pipelines (repositorios, construcción, pruebas, y despliegue automático).
12. Ingeniería de Software.

El objetivo de esta materia es que el alumno conozca la correcta ingeniería de software,


convirtiéndose en un profesional competente. Este curso representa el punto culminante de
la carrera, donde el alumno se transforma en un verdadero ingeniero de software y no en un
simple programador.

El alumno aprenderá las buenas prácticas del desarrollo de software, apoyándose en


autores como Robert C. Martin, y se abordarán aspectos didácticos relacionados con la
correcta nomenclatura de variables, métodos, clases y objetos. Además, se discutirán los
patrones de diseño y el uso de la ingeniería pragmática para identificar, abordar y
resolver problemas en la vida profesional del ingeniero de software.

El desarrollo de habilidades blandas será fundamental para una comunicación efectiva con
equipos multifuncionales o separados. También se explorarán temas de estandarización
como CMMI, RUP, ISO-9000 e ISO-9001. Finalmente, se abordarán temas de trabajo
actual, tales como el marco de trabajo SCRUM, su fusión con Kanban, Extreme
Programming y la metodología Agile.

12.1. Buenas prácticas de desarrollo de software y patrones de diseño y los más


usados en la industria.
12.2. Ingeniería pragmática y estándares CMMI, RUP, ISO-9000 e ISO-9001.
12.3. Kanban, Extreme Programming, SCRUM y Metodología Agile.
12.4. Etapas del proceso de selección y entrevistas simuladas (exámenes de CI y
técnicos).
12.5. La entrevista técnica, no técnica y habilidades blandas.
12.6. Herramientas para la búsqueda de trabajo.
12.7. Trabajo internacional y cómo ganar dinero sin incumplir con leyes mexicanas.
12.8. Creación de tu CV.

También podría gustarte