Ruta de Aprendizaje
Ruta de Aprendizaje
Ruta de Aprendizaje
Ciclo 2
Ruta de aprendizaje 2
MINTIC
AÑO 2022
Introducción
El presente documento se ha elaborado en el marco del proyecto MisiónTIC 2022 convenio de
asociación No. 776 del 2021 como insumo para el desarrollo de la ruta de aprendizaje No. 2. Este
documento y la información contenida en él son desarrollos exclusivos para el proyecto y la
implementación de la ruta de aprendizaje No.2 MisionTIC 2022.
Con base en los Estatutos de la Universidad Sergio Arboleda (aprobados por la Resolución 6423 del
5 de agosto de 2011 del Ministerio de Educación Nacional), dentro de los objetivos de la misma se
encuentra: “(…) d. Adelantar y fomentar programas de investigación y extensión en las áreas de su
especialidad y propender por su efectivo aprovechamiento y divulgación (…)”. Adicionalmente, de
conformidad con la naturaleza académica de la Universidad, para el cumplimiento de sus objetivos
y el desarrollo de sus funciones, “podrá crear, dirigir, o administrar en todos los niveles, modalidades
y metodologías, todas las actividades académicas, docentes, investigativas y de extensión o servicio
conducentes a la producción, desarrollo y transmisión del conocimiento y de la cultura en todos los
campos”.
De acuerdo con la Ley 30 de 1992, “La extensión comprende los programas de educación
permanente, cursos, seminarios y demás programas destinados a la difusión de los conocimientos,
al intercambio de experiencias, así ́ como las actividades de servicio tendientes a procurar el bienestar
general de la comunidad y la satisfacción de las necesidades de la sociedad”.
Así las cosas, la Extensión en la Universidad Sergio Arboleda busca, en conjunto con los otros pilares
de la Institución (Docencia, Investigación e Innovación), aportar a la proyección social a través de
servicios, tales como convenios de ciencia, tecnología e innovación.
Desde las aulas se han venido forjando individuos con profundos conocimientos en las diversas
ciencias del saber, con un bagaje cultural que les permita identificar sus raíces, velar por los valores
ancestrales y ser cultores del arte y las letras; aptos para participar en procesos de desarrollo aquí
y más allá de las fronteras, y preparados para crear, emprender e innovar, condiciones
indispensables en los profesionales actuales.
Año tras año la Universidad se ha sometido a un riguroso proceso de actualización del proyecto
educativo institucional, de manera que responda a las tendencias y necesidades del mundo
contemporáneo. Así lo evidencia su historia, las acciones presentes y las proyecciones al futuro.
ü Las comunicaciones
ü Las interacciones académicas, sincrónicas como asincrónica,
ü La publicación de los materiales y las Guías de Estudio,
ü La participación y evaluación en cada uno de los módulos de aprendizaje.
• Inspección semiautomática de código: permite verificar las reglas de buena calidad que
debe tener un programa orientado por objetos como encapsulamiento, desacoplamiento,
presencia de código duplicado y una buena estructura de los algoritmos.
Aula Virtual: El Aula Virtual contará con el apoyo de Mastertech, como LMS (Learning Management
System - sistema para la gestión del aprendizaje).
Objetivo general
Desarrollar en los estudiantes habilidades en programación mediante estudio del
paradigma de programación orientado por objetos, las bases de datos relaciones y la
arquitectura MVC como parte de su formación como desarrolladores Full Stack.
4.2. Implementa pruebas unitarias para que sean ejecutadas de forma automática
5.3. Utiliza el lenguaje SQL para realizar las consultas CRUD a una base de datos
7.2 Utiliza el Framework Spring Data - JDBC para el desarrollo de aplicaciones con
arquitectura MVC
Contenido programático
El contenido del curso está organizado en los siguientes módulos:
A continuación, se presentan los temas y contenidos para cada una de las 25 sesiones.
Módulo Sesión Retos Tema Contenido
1 Introducción a java Introducción a java, instalación NetBeans, Tipos de datos, flujos de entrada y salida.
Módulo 1: 2 Condicionales y funciones If If-Else, Switch y funciones
Introducción a 3 Estructuras de repetición For, While, Do-While
JAVA 4 Arreglos y cadenas de caracteres Operaciones entre cadenas; declaración y manipulación de arreglos; ciclo Foreach
5 1 Preparación reto 1 Preparación reto 1
6 Declaración de clases: Métodos y atributos; Instancias: creación y manipulación; Paso de mensajes;
Clases y objetos
Encapsulamiento
Módulo 2: 7 Herencia por especialización y generalización; Polimorfismo por mensaje y herencia;Clases abstractas e
Herencia y polimorfismo
Programación Interfaces
orientada por 8 Colecciones y pruebas unitaria con JUnit ArrayList, HashMap, Pruebas unitarias con JUnit
objetos 9 Diagrama casos de uso, Historias de usuario, Diagrama de clases; composición, agregación, generalización,
Lenguaje UML
definición de atributos
10 2 Preparación reto 2 Preparación reto 2
11 Introducción a Swing, Diseño de interfaces mediante Wireframes (balsamiq
Diseño de interfaz de usuario (UI)
JFrame y JPanel; propiedades generales; Layout
12 Componentes UI Botones, cuadros de dialogo, selección, campos, áreas de texto, etc.
Módulo 3:
Interfaz gráfica 13 Manejo de eventos Captura de eventos: Listeners
con Swing 14 Interfaz gráfica usando Netbeans Diseño de interfaz gráfica utilizando Drag & drop Netbeans
15 3 Refuerzo semana 3 Preparación reto 3
16 Introducción a las bases de datos relacionales Introducción BD relacionales. Bd Relacionales vs NoSQL. Instalación MySQL
17 Modelo E/R y modelo relacional Modelado: Diagrama E/R, Modelo Relacional
Módulo 4:
Bases de datos 18 Introducción a SQL - Parte 1 Creación, eliminación, modificación de tablas
Relacionales
con MySQL 19 Introducción a SQL - Parte 2 CRUD consultas simples - SQL
20 4 Preparación Reto 4 Preparación reto 4
21 Arquitectura MVC Arquitectura de software; Patrón MVC; separación de responsabilidades
22 MVC con Spring Data JDBC - Parte 1 Framework de desarrollo Spring Boot para Java. Conexión con MySQL
Módulo 5:
Arquitectura 23 MVC con Spring Data JDBC - Parte 2 Desarrollo de la vista y el controlador para una aplicación MVC
MVC 24 Preparación reto 5 - Parte 1 Preparación reto 5
25 5 Preparación reto 5 - Parte 2 Preparación reto 5
Metodología
Clase Magistral: el docente hará inducción a los temas, desarrollará ejemplos y ejercicios
complementarios para los estudiantes sobre los temas expuestos.
Recursos en plataforma: el estudiante complementará la información vista en clase,
orientándola hacia el desarrollo de ejercicios en Java disponibles en la plataforma
Mastertech y material complementario como: videos, documentos y ejercicios resueltos.
Desarrollo de tutorías: el estudiante tendrá a su disposición tutores que resolverán las
dudas en sesiones sincrónicas; estas tutorías se enfocan en el desarrollo de ejemplos y
ejercicios que ayuden a afianzar los conceptos vistos en clases magistrales.
Desarrollo de retos: cada módulo estará acompañado por un reto diseñado para probar las
habilidades adquiridas a lo largo del ciclo. Estos retos se desarrollarán de forma incremental
de acuerdo a los contenidos vistos en cada módulo.
Actividades de aprendizaje
50 horas de sesiones sincrónicas acompañadas por un formador específico, cada sesión de
dos horas de duración. Las temáticas asociadas a cada una de las sesiones se presentaron
la sección contenido programático.
120 horas de trabajo independiente de programación entre las cuales podrán solicitar el
acompañamiento de un tutor específico, realizar ejercicios propuestos extra clase y avanzar
en el desarrollo de los retos pedagógicos propuestos.
Evaluación
La evaluación del ciclo 2: programación básica en Java corresponde a la evaluación de los
cinco (5) retos académicos y a la evaluación del curso de inglés. Las evaluaciones se hacen
en la escala de 0.0 al 5.0, donde cero (0.0) es la mínima nota y cinco (5.0) la máxima nota,
la nota mínima aprobatoria del ciclo es de tres (3.0).
Reto 1: 10%
Reto 2: 10%
Reto 3: 20%
Reto 4: 20%
Reto 5: 20%
Inglés: 10%
Curso habilidades personales: 10%
Recursos
LMS Mastertech
Es una plataforma LMS (Learning Management System, sistema de gestión de aprendizaje)
que ofrece cursos con contenidos actualizados, construidos por expertos y certificados por
la Universidad Sergio Arboleda en convenio con líderes de cada sector. La plataforma ofrece
cursos 100% virtuales, de manera que el estudiante pueda ir a su ritmo y siempre contará
con el apoyo de toda la comunidad o de expertos (Formadores y tutores) para apoyar el
proceso y asegurar que los estudiantes logren sus objetivos de aprendizaje.
Referencias Bibliográficas
Head First Java, 2nd Edition
Sierra, K., & Bates, B. (2013). Head first java. O'Reilly Media, Inc.
Software Engineering
Sommerville, I. (2016). Software Engineering GE. Pearson Australia Pty Limited.
Plataforma MasterTech
Curso Java para todos. Enlace: https://mastertech.usergioarboleda.edu.co/
Retos académicos propuestos
para el ciclo No.2
Para calcular el índice de masa corporal (IMC) calculamos el cociente entre el peso del individuo
en kilos y el cuadrado de su altura en metros.
Usted es contratado por camilo para construir un programa en Java que cumpla las funcionalidades
requeridas por Camilo teniendo como referencia las historias de usuario presentadas previamente.
Entrada Cada caso de prueba estará formado por una línea formada por 3
valores separados por un espacio:
La masa de la persona en kilogramos
La altura de la persona en metros
La edad de la persona en Años
Salida El programa imprimirá una línea con dos valores:
Usted es contratado por la universidad para desarrollar el sistema de inventario con las
funcionalidades presentadas en el diagrama de casos de uso en el lenguaje de programación Java.
Debido a que esta es una etapa inicial en el desarrollo de la aplicación, la base de datos será
representada temporalmente mediante un HashMap llamado listaProductos que tendrá por
llave el código del producto y por valor una instancia de la clase Producto que tendrá como
atributos código, nombre, precio e inventario. La Tabla 1 presenta los productos
disponibles a la fecha en la cafetería.
Nota: observe que los nombres de los productos no llevan tildes. Esto se hace a propósito y tiene
que ver con el proceso de calificación automática. Evite colocar tildes en los nombres de los
productos en su código.
Adicionalmente, el dueño del almacén desea generar un informe que contenga el valor total del
inventario a la fecha. Este se obtiene multiplicando el precio de cada producto por el inventario
disponible y luego sumando todos los resultados. Este método debe llamarse generarInforme
e implementarse en la clase BaseDatosProductos.
Por ejemplo, al generar el informe con los datos disponibles en la Tabla 1 obtendríamos:
Para evitar errores a la hora de agregar, actualizar y borrar productos, se debe implementar un
método llamado verificarExistencia que permitirá comprobar si el producto existe o no en
la base de datos. Este método debe implementarse en la clase BaseDatosProductos.
Cada uno de los casos de prueba estará compuesto por dos líneas.
§ La primera línea estará formada por una cadena de texto que identifica
Entrada la operación a realizar. En este caso, las operaciones válidas son:
o ACTUALIZAR
o BORRAR
o AGREGAR
§ La segunda línea estará formada por 4 valores (código, nombre,
precio, inventario) que representan el producto sobre el cual
se quiere realizar la operación.
§ En el caso de la operación ACTUALIZAR la segunda línea debe
contener el código y los nuevos valores del producto
§ En el caso de la operación BORRAR se deben especificar todos los
atributos del producto a eliminar
La salida estará representada por una única línea formada por un único valor:
o Valor del inventario
§ Este valor debe imprimirse después de realizar las operaciones
solicitadas en la entrada de datos.
§ El valor del inventario debe imprimirse con un número decimal
Salida § En caso de solicitar ACTUALIZAR o BORRAR un producto que no
existe (es decir, que el código del producto no se encuentra en la base
de datos), se debe imprimir “ERROR”
§ En caso de solicitar AGREGAR un producto cuyo código ya existe en
la base de datos se debe imprimir “ERROR”
Una de las cafeterías de la Sergio Arboleda vende frutas, dulces y algunas bebidas. Con el propósito
de mejorar el control sobre las ventas y el inventario de la tienda. La universidad decide construir
una aplicación en Java que le permita almacenar la información de los productos y calcular algunas
estadísticas sobre el inventario. La Tabla 1 presenta los productos disponibles a la fecha en el
almacén.
Nota: observe que los nombres de los productos no llevan tildes. Esto se hace a propósito y tiene
que ver con el proceso de calificación automática. Evite colocar tildes en los nombres de los
productos en su código.
Por ejemplo, al generar el informe con los datos disponibles en la Tabla 1 obtendríamos:
Cada uno de los casos de prueba estará compuesto por dos líneas.
§ La primera línea estará formada por una cadena de texto que identifica
la operación a realizar. En este caso, las operaciones válidas son:
o ACTUALIZAR
o BORRAR
o AGREGAR
Entrada § La segunda línea estará formada por 4 valores (código,
nombre, precio, inventario) que representan el producto
sobre el cual se quiere realizar la operación.
§ En el caso de la operación ACTUALIZAR la segunda línea debe
contener el código y los nuevos valores del producto
§ En el caso de la operación BORRAR se deben especificar todos los
atributos del producto a eliminar
La salida estará representada por una única línea formada por tres valores
separados por un espacio:
o Nombre del producto con el precio mayor
Salida o Nombre del producto con el precio menor
o Promedio de precios
§ Estos 3 valores deben imprimirse después de realizar las operaciones
solicitadas en la primera línea
§ Los valores numéricos deben imprimirse con un número decimal
§ En caso de solicitar ACTUALIZAR o BORRAR un producto que no
existe (es decir, que el código del producto no se encuentra en la base
de datos), se debe imprimir “ERROR”. En caso de solicitar
AGREGAR un producto cuyo código ya existe en la base de datos se
debe imprimir “ERROR”
Una de las cafeterías de la Sergio Arboleda vende frutas, dulces y algunas bebidas. Con el propósito
de mejorar el control sobre las ventas y el inventario de la tienda, la universidad decide construir
una aplicación en Java que le permita almacenar la información de los productos y calcular algunas
estadísticas sobre el inventario. En este momento la aplicación tiene una base de datos que cuenta
con una tabla llamada Productos. La información disponible en la tabla se presenta a continuación.
Tabla: Productos
Con el fin de verificar el correcto funcionamiento de la base de datos, usted debe construir consultas
SQL para obtener la siguiente información. (NOTA: Para este caso solo se utilizará consultas de tipo
SELECT)
1. Obtener el nombre y el inventario de los productos con un precio mayor o igual a 9000 en
orden ascendente por nombre
2. Obtener el promedio de precios de todos los productos en la tabla. Utilice el alias
“promedio” para la respuesta obtenida
3. Obtener el nombre y el precio de todos los productos que comienzan con “A” o con “P” en
orden ascendente
4. Obtener el numero total de productos cuyos precios están entre 3000 y 10000. Utilice el
alias “total” para la respuesta obtenida
5. Obtener valor total del inventario. Este valor se obtiene multiplicando el precio de cada
producto por el inventario disponible y luego sumando todos los resultados. Utilice el alias
“total_inventario” para la respuesta obtenida
Una de las cafeterías de la Sergio Arboleda vende frutas, dulces y algunas bebidas. Con el propósito
de mejorar el control sobre las ventas y el inventario de la tienda, la universidad decide construir
una aplicación en Java que le permita almacenar la información de los productos y calcular algunas
estadísticas sobre el inventario. Con el propósito detener una especificación más clara sobre lo que
debería hacer la aplicación, el administrador de la tienda construyen el siguiente diagrama de casos
de uso:
Parte 1: Creando una base de datos en MySQL
En la primera parte del reto se debe utilizar MySQL para construir una base de datos que almacene
la información de los productos disponibles en la tienda. La base de datos estará formada por una
única tabla llamada Productos que almacenará: el código, el nombre, el precio y el inventario
disponible. La Tabla 1 presenta los productos disponibles a la fecha.
Luego de implementar el modelo y el controlador con la ayuda de Spring Data JDBC, el dueño del
almacén le entrega el siguiente diseño de la interfaz gráfica (ver figura 2). En el diseño se incluyen
las ventanas emergentes que surgen como resultado de realizar algunas validaciones. Esta interfaz
el la misma construida en el reto 3. El código debe alojarse en el paquete vista declarado
anteriormente (Esta interfaz es la misma desarrollada en el reto 3).
Figura 1: Diseño inicial interfaz gráfica
Por ejemplo, si se trata de agregar un producto y existe algún campo vacío, se deberá generar una
ventana emergente que informe que todos los campos son obligatorios. Cundo se agrega, se borra
o se actualiza un producto se debe generar una ventana informando que el proceso fue exitoso. Al
presionar el botón “Actualizar Producto” se generará una ventana emergente con los
campos a actualizar y presentando la información del producto que se encuentra seleccionado en
la tabla. Cada que se realice una operación sobre los datos de la tabla, esta debe actualizarse
nuevamente de manera automática.
Por otro lado, el botón llamado “Informes” genera una ventana emergente con los datos
obtenidos al evaluar el método generar informe. Para cumplir con el patrón MVC debemos
garantizar que los eventos sean capturados por el controlador y no directamente por la vista.
Finalmente, para facilitar el desarrollo de la aplicación, el dueño del almacén le entrega una lista de
verificación con todas las funcionalidades que se espera desarrollar.
A continuación, se explica de forma general la estructura de las dos fases de evaluación automática.
A continuación, se describen las diferentes consideraciones con el fin que el motor de pruebas
pueda funcionar correctamente.
1. Cada curso define una serie de retos que deben desarrollar los estudiantes.
2. Cada Reto tiene definido un enunciado y unas instrucciones en los cuales se definen los
requerimientos funcionales, que incluyen diferentes casos de prueba.
3. Cada Reto tiene configurado un conjunto de intentos determinados que puede ser
ejecutado por los estudiantes.
4. En un reto se puede evaluar algoritmos basado en estructuras de control tales como:
secuencia, decisión, repetición. Incluyendo la definición de lectura de datos vía argumentos
del programa (Entradas a un algoritmo) o en su defecto parámetros definidos a una función.
También, el motor de pruebas de MasterTech soporta la evaluación de diferentes funciones
con sus respectivos parámetros en un único reto. Y de acuerdo, a la definición de plantillas
de código se puede evaluar principios de Programación Orientada a objetos.
5. Para el desarrollo del reto. MasterTech presenta al estudiante un editor de código fuente.
Dicho editor es una versión simplificada del editor Monaco provisto por Microsoft
(https://github.com/microsoft/monaco-editor).
6. Para cada reto el estudiante debe especificar el código fuente en el editor, así mismo debe
cargar un archivo de soporte.
7. El motor de pruebas realiza la evaluación y muestra los resultados, indicando las fuentes de
error. Sí la solución del reto cumple con todos los casos de pruebas se presenta los
resultados y la calificación obtenida.
Definido lo anterior y con el fin de hacer el proceso de integración con Jobe Engine desde
MasterTech se construyó una librería de integración alineado con los fundamentos del motor.
Específicamente:
1. Para cada reto y casos de prueba, el motor de plantillas de MasterTech fusiona la respuesta
enviada por el estudiante con una plantilla de pregunta definida que incluye la invocación
de los casos de prueba. El resultado es un programa ejecutable.
2. El programa ejecutable se envía al servicio de Jobe Server (Un servicio desplegado sobre la
infraestructura de Google Cloud con la posibilidad de escalar horizontalmente)
3. La salida de ejecución del programa ejecutable es tomada y comparada con los resultados
esperados en cada caso de prueba. Tomando en consideración criterios de coincidencia
exacta.
4. A partir de los resultados obtenidos se realiza el proceso de calificación.
5. Se presenta la respuesta al estudiante indicando los parámetros, la salida esperada y la
salida obtenida. Indicando con color verde los casos exitosos y con rojo los casos no
aprobados.
Parámetros:
Jscpd permite a partir de un análisis de código detectar similitudes, a partir de la configuración del
mínimo número de token, máximo número de tokens, mínimo número de líneas y número máximo
número de líneas.
● Min Tokens: Tamaño de bloque mínimo de código en tokens a considerar para considerar
copia de código.
● Min Lines: Tamaño mínimo de líneas para considerar copia de código.
PMD permite analizar el código fuente estático, principalmente de lenguaje java y Apex pero admite
seis lenguajes más, encontrando malas prácticas de programación comunes; PMD presenta
comprobaciones integradas (reglas) bien documentadas y es flexible para configurar, eliminar y
agregar nuevas reglas de verificación.
<rule ref="category/java/bestpractices.xml/AvoidMessageDigestField"/>
<rule ref="category/java/bestpractices.xml/AvoidStringBufferField"/>
<rule ref="category/java/bestpractices.xml/AvoidUsingHardCodedIP"/>
<rule ref="category/java/bestpractices.xml/CheckResultSet"/>
<rule ref="category/java/bestpractices.xml/ConstantsInInterface"/>
<rule ref="category/java/bestpractices.xml/DefaultLabelNotLastInSwitchStmt"/>
<rule ref="category/java/bestpractices.xml/DoubleBraceInitialization"/>
<rule ref="category/java/bestpractices.xml/ForLoopCanBeForeach"/>
Anexos
Anexo No.1: Presentaciones soporte del Ciclo No.2
En este anexo se adjuntan las presentaciones de soporte para cada una de las sesiones sincrónicas.
En este anexo se incluyen ejercicios adicionales extra-clase que el estudiante podrá realizar
adicionales a los retos académicos y que permiten afianzar sus habilidades y competencias en
programación.
En este anexo se incluyen los recursos adicionales de consulta para el proceso de desarrollo
curricular del ciclo No. 1