Términos de Confidencialidad
Por razones de índole comercial, puede resultar perjudicial para Nabenik, el que las ideas, conceptos, funcionalidad, aplicaciones, precios, planes de trabajo y en general las soluciones contenidas en este documento sean conocidas por personas distintas a aquellas a quienes está dirigida.
Este documento y su contenido es el resultado de un trabajo desarrollado por Nabenik, y destinado exclusivamente a Telus. Su contenido no debe ser revelado, duplicado, usado, o publicado total o parcialmente, fuera de su organización, ni dado a conocer por ningún medio a cualquier otra empresa, sin una autorización expresa y escrita de Nabenik.
Vía 4 1-00 zona 4, edificio Campus Tecnológico torre 2, Oficina 401, Guatemala, Guatemala PBX (502) 2458-4570
RESUMEN EJECUTIVO
PRIMER AÑO
El primer año está conformado por 10 meses de capacitación
Introducción a la Programación
Programación Avanzada
Introducción a las bases de datos
4 meses
4 meses
2 meses
•
Organización de una computadora
•
Fases en la resolución de problemas
•
Paradigmas de la programación
•
Estructura general de un programa
•
Programación Orientada a Objetos
•
Métodos
•
Estructuras Selectivas
•
Estructuras Repetitivas
•
Arreglos
•
Aplicación de estructuras para la
resolución de problemas
•
Estilo y documentación
•
Depuración y estructuras básicas de
datos
•
Organización de la memoria y
recursividad
•
Objetos y constructores
•
Estructuras de datos
•
Métodos de ordenamiento
•
Complejidad algorítmica
•
Métodos de búsqueda
•
Modelo Entidad-Relación
•
Entorno PostgreSQL y MySQL
•
Tipos de datos
•
Estructuras y consultas
•
Funciones y agrupaciones
SEGUNDO AÑO
El segundo año está conformado por 6 meses de capacitación
Herramienta de versionamiento GIT
Programación en Java Enterprise
1 mes
5 meses
•
Herramientas de versionamiento
•
GIT
•
GIT Workflow
•
Introducción
•
Servlets
•
Java Server Pages
•
Bean Validation
•
Enterprise Java Beans
•
Java Database Connectivity
•
Java Persistence API
•
Java Message Services
•
Context and Dependency Injection
•
Java Managed Extensions
•
Java Architecture for XML Binding
•
Java API for XML-Based Web Services
•
Java API for RESTful Web Services
•
Java Content Repository API
INTRODUCCIÓN A LA PROGRAMACIÓN
DESCRIPCIÓN GENERAL
Este curso busca introducir a los estudiantes en las técnicas básicas de resolución de problemas,
principalmente a aquellos problemas que utilizan la computadora como herramienta de apoyo. Se
presenta una metodología basada en el uso de algoritmos y enfatizando en el estilo y la calidad de la
solución. Se utiliza un lenguaje de programación de alto nivel y orientado a objetos (Java).
OBJETIVOS
•
Resolver problemas utilizando un enfoque algorítmico para proporcionar soluciones que, paso a
paso, satisfagan de la mejor manera posible lo requerido utilizando como herramienta la
computadora
•
Realizar la implantación de algoritmos sobre una computadora, utilizando un lenguaje y una
herramienta de programación de última generación, como lo es Java
REQUERIMIENTOS
•
64 horas (4 meses) distribuidas en dos periodos de 2 horas a la semana o 4 horas en día sábado
•
Cupo mínimo: Se requieren 15 participantes como mínimo
•
Cupo máximo: El curso podrá ser impartido a 25 personas simultáneamente como máximo
Introducción a la programación
Unidad 1: Organización de una computadora • Introducción
• Hardware y Software • Lenguajes de programación
◦ Lenguaje máquina ◦ Lenguaje de bajo nivel ◦ Lenguaje de alto nivel • Traductores de lenguaje
◦ Interpretes
• La compilación y sus fases
Unidad 2: Fases en la resolución de problemas • Fases en la resolución de problemas
◦ Análisis ◦ Diseño ◦ Desarrollo
◦ Ejecución, verificación y depuración ◦ Mantenimiento
• Diseño Soluciones
◦ Concepto y Características de Algoritmos ◦ Escritura de algoritmos
◦ Representación gráfica
▪ Pseudocódigo y diagrama de flujo Unidad 3: Paradigmas de la programación
• Qué es programación
◦ Concepto de programa y su partes. • Paradigmas de programación
◦ Lenguajes imperativos (procedimentales) ◦ Lenguajes declarativos
◦ Lenguajes orientados a objetos • Metodología de la programación
◦ Programación estructurada ◦ Programación orientada a objetos Unidad 4: Estructura general de un programa
• Partes de un programa
• Instrucciones y tipos de instrucciones ◦ Tipos de instrucciones
▪ Instrucciones de asignación ▪ Instrucciones de Lectura de datos ▪ Instrucciones de Escritura de resultados ▪ Instrucciones de bifurcación
• Expresiones ◦ Aritméticas:
▪ Operadores de incremento y decremento ◦ Reglas de prioridad
◦ Lógicas
Unidad 5: Programación Orientada a Objetos • Definición de variables
• Identificadores
◦ Datos, tipos de datos y operaciones primitivas ▪ Datos numéricos
▪ Datos lógicos (booleanos) ▪ Datos tipo carácter y tipo cadena ▪ Constantes
▪ Variables • Definición de una Clase
Unidad 6: Métodos • Tipos de métodos ◦ Funciones ◦ Procedimientos • Parámetros ◦ Por valor ◦ Por referencia • Ámbito de atributos
• Métodos accesores (get y set) Unidad 7: Estructuras Selectivas
• Flujo de control • Estructura secuencial • Estructuras selectivas
◦ Simples (si-entonces)
◦ Alternativa doble (si-entonces-sino)
◦ Alternativa múltiple (según sea, en caso, casos) Unidad 8: Estructuras Repetitivas
• Estructuras repetitivas ◦ Mientras
▪ Ejecución cero veces ▪ Ejecución infinita ◦ Estructura hacer-mientras ◦ Estructura desde/para • Estructuras repetitivas anidadas Unidad 9: Arreglos
• Arreglos unidimensionales ◦ Vectores
◦ Operaciones con vectores • Arreglos de varias dimensiones
◦ Matriz • Arreglos de Clases
Unidad 10: Aplicación de estructuras para la resolución de problemas • Agregación de objetos
PROGRAMACIÓN AVANZADA
DESCRIPCIÓN GENERAL
Este curso busca profundizar en los conceptos de programación adquiridos en los cursos introductorios.
Durante este curso se presentan problemas más complejos que introducen la necesidad del uso de
estructuras de datos básicas, algoritmos de búsqueda, recursividad y uso de memoria dinámica.
Mientras estos conceptos se desarrollan se refuerzan buenas prácticas de estilo y patrones de
programación.
OBJETIVOS
•
Que los estudiantes ejerzan buenas prácticas de programación en cuanto a estilo,
documentación, resguardo de repositorios de código, convenciones de nombramiento, etc
•
Que los estudiantes comprendan el funcionamiento básico de un programa en tanto al uso de
memoria acorde a compiladores modernos
•
Que los estudiantes analicen e identifiquen algoritmos eminentemente recursivos
•
Que los estudiantes implementen algoritmos que involucren conceptos de manejo de memoria
•
Que los estudiantes implementen algoritmos de búsqueda utilizando estructuras de datos
REQUERIMIENTOS
•
Conocimientos de programación y resolución de problemas mediante algoritmos
•
64 horas (4 meses) distribuidas en dos periodos de 2 horas a la semana o 4 horas en día sábado
•
Cupo mínimo: Se requieren 15 participantes como mínimo
•
Cupo máximo: El curso podrá ser impartido a 25 personas simultáneamente como máximo
Programación avanzada
Unidad 1 – Estilo y documentación • Estilo
◦ ¿Qué es y por qué es importante? ◦ Convenciones de nombramiento ◦ Convenciones de espaciado ◦ Identación
◦ Sentencias
◦ Ejemplos (JavaScript vs. Java) ◦ Code Review and Peer Programming ◦ Owning your codebase
◦ Beautify code y herramientas de estilo • Documentación
◦ Markdown
◦ JavaDoc IntelliJ
Unidad 2 – Depuración y estructuras básicas de datos • Depuración
◦ Break Points ◦ Watches
◦ Contexto de ejecución ◦ Semántica por valor ◦ Semantica por referencia • Estructuras de Datos Básicas
◦ Arreglos (uni y multidimensionales) ◦ Listas
◦ Colas ◦ Pilas
Unidad 3 – Organización de la memoria y recursividad • Organización de memoria
◦ Stack (Pila de ejecución) ◦ Heap ◦ Datos no inicializados ◦ Datos inicializados ◦ Segmento de texto ◦ Ejercicios y Ejemplos • Recursividad ◦ Recursividad ◦ Tipos de Recursividad. ◦ Recursividad vs. Iteración
◦ Ejemplos clásicos (Factorial, Hanoi, QuickSort) Unidad 4 – Objetos y constructores
• Objetos ◦ Modificadores de Acceso ◦ Private ◦ Public ◦ Protected ◦ Static • Constructures • Herencia • Polimorfismo
• Tabla virtual de métodos • Interfaces
Unidad 5 – Estructuras de datos • Listas enlazadas
• Listas doblemente enlazadas • Colas
• Pilas
• Arboles Binarios
Unidad 6 – Métodos de ordenamiento
• Métodos de ordenamiento - Estructuras Lineales ◦ Selection Sort
◦ Shell Sort ◦ Quick Sort ◦ Stupid Sort
Unidad 7 – Complejidad algorítmica • Función O
• Funcion Ω • Funcion π
Unidad 8 – Métodos de búsqueda • Métodos de Búsqueda • Método Secuencial • Método Binario • Tablas Hash
INTRODUCCIÓN A LAS BASES DE DATOS
DESCRIPCIÓN GENERAL
En este curso aprenderás los conceptos generales de bases de datos, arquitectura Cliente-Servidor, así
como también la instalación, diseño, normalización e implementación de una base de datos.
OBJETIVOS
•
Entender cómo que es y para que sirve una Base de Batos
•
Que el estudiante sea capaz de construir un modelo de Base de Datos
•
Que el estudiante sea capaz de comprender la estructura del lenguaje SQL
•
Que el estudiante sea capaz de realizar consultas básicas (SELECT, INSERT, UPDATE,
DELETE) y modificar datos
•
Proveer al estudiante la capacidad de identificar las distintas funciones de una Base de Datos
REQUERIMIENTOS
•
32 horas (2 meses) distribuidas en dos periodos de 2 horas a la semana o 4 horas en día sábado
•
Cupo mínimo: Se requieren 15 participantes como mínimo
•
Cupo máximo: El curso podrá ser impartido a 25 personas simultáneamente como máximo
Introducción a las Bases de Datos
Unidad 1 – Modelo Entidad-Relación • Introducción a las bases de datos • Modelo de entidad - relación
◦ Entidad ◦ Relación
◦ Cardinalidad de las relaciones ◦ Atributos
◦ Consideraciones en el planeamiento del diseño lógico de la base de datos • Modelado de elementos de datos
◦ Tablas
◦ Restricciones de las tablas ◦ Columnas no descomponibles ◦ Restricciones en las columnas ◦ Clave primaria (primary key) ◦ Clave foránea (foreign key)
• Entorno PostgreSQL y MySQL ◦ Bases de datos
◦ Tablas
◦ Sistema de administración relacional de bases de datos ◦ ¿Qué es PostgreSQL?, ¿Qué es MySQL?
• PostgreSQL pgAdmin y MySQL Query Browser ◦ Dialogo de conexión
◦ La ventana central de consultas ◦ Editor de tablas
Unidad 3 – Tipos de datos • Tipos de datos
◦ Tipos numéricos ◦ Tipos fechas ◦ Tipos de cadena • Zerofill
• Tipos de datos en PostgreSQL • Tipos de datos en MySQL Unidad 4 – Estructuras y consultas
• Estructura del lenguaje ◦ ¿Qué es ddl?
◦ Creación de una tabla ◦ Qué es dml?
◦ Eliminar una tabla • Consultas basicas ◦ Select ◦ Insert ◦ Update ◦ Delete • Condiciones lógicas ◦ Operadores lógicos ◦ Sentencia between ◦ Sentencia in ◦ Sentencia like • Laboratorio ◦ Creación de tablas ◦ Comando insert ◦ Comando select ◦ Comando delete ◦ Comando update Unidad 5 – Funciones y agrupaciones
• Funciones de bases de datos ◦ Funciones matemáticas ◦ Funciones de cadenas ◦ Funciones de fecha y hora ◦ Funciones de grupo • Agrupaciones
◦ Consultas agrupadas - group by ◦ Consultas relacionadas
◦ Consultas anidadas - join ◦ Como realizar una actualización ◦ Como realizar una eliminación
HERRAMIENTA DE VERSIONAMIENTO GIT
DESCRIPCIÓN GENERAL
Git, en pocas palabras, es una herramienta para guardar versiones de tu código. Este curso le mostrará
flujo de trabajo básico y características principales, diferentes maneras de deshacer cambios o guardar
múltiples versiones de un proyecto, y cómo colaborar con otros desarrolladores.
OBJETIVOS
•
Que el estudiante sea capaz de gestionar las versiones de sus proyectos de software mediante la
herramienta GIT
•
Que el estudiante sea capaz de colaborar con otros integrantes del equipo en el mismo proyecto
de software mediante el uso de la herramienta GIT
REQUERIMIENTOS
•
16 horas (1 mes) distribuidas en dos periodos de 2 horas a la semana o 4 horas en día sábado
•
Cupo mínimo: Se requieren 15 participantes como mínimo
•
Cupo máximo: El curso podrá ser impartido a 25 personas simultáneamente como máximo
Herramienta de versionamiento GIT
Unidad 1 – GIT
• Introducción a los sistemas de control de versiones • Introducción al sistema de control de versiones - GIT • Uso de “Source Tree” como administrador de arboles de GIT • Uso de “GIT Flow” para la administración de proyectos de software • Comandos de GIT
PROGRAMACIÓN EN JAVA ENTERPRISE
DESCRIPCIÓN GENERAL
La plataforma Java Enterprise Edition (EE) se basa en Java Standard Edition (SE) para proporcionar
una potente solución informática empresarial, es la plataforma más utilizada a nivel mundial para crear
aplicaciones robustas y seguras para los negocios y la industria. Opera cientos de miles de los sitios
más dinámicos y poderosos en la web, desde su pequeña empresa favorita hasta los sistemas Fortune
500. En este curso el estudiante será capaz de diseñar y construir herramientas potentes basada en las
tecnologías que provee Java Enterprise.
OBJETIVOS
•
Construir herramientas potentes utilizando el stack de tecnología que provee Java Enterprise
REQUERIMIENTOS
•
80 horas (5 meses) distribuidas en dos periodos de 2 horas a la semana o 4 horas en día sábado
•
Cupo mínimo: Se requieren 15 participantes como mínimo
•
Cupo máximo: El curso podrá ser impartido a 25 personas simultáneamente como máximo
Programación en Java Enterprise
Unidad 1 - Introducción
• Introduction, Setup and Configuration ◦ What Is Java EE
◦ Java EE Api vs Java EE Implementations ◦ Installing Eclipse IDE for Java EE
◦ Payara Application Server/Wildfly Application Server Unidad 2 - Servlets
• Servlet 3.1
◦ Servlet lifecycle
◦ Sharing information between servlets ◦ Service methods
◦ Request and response filtering ◦ Web Resources and Context ◦ Client State
◦ Async processing ◦ Non-blocking I/O Unidad 3 – Java Server Pages
◦ Overview
◦ Include Directive And Comments ◦ Page Directive Import And Scripting ◦ Page Directive Errors, ELIgnore
◦ System-Wide Error Handling And No Scripting ◦ Declarations And Page Directive Sessions ◦ Expressions And PageContext
◦ Adding static resources ◦ Form validation ◦ Servlet Context Listener
◦ Synchronization and Thread Safety Unidad 4 – Bean Validation
• Bean Validation 1.1 ◦ Constraints
◦ Null and Empty Strings ◦ Constructors and Methods ◦ Custom constraints ◦ Bval specifics Unidad 5 - Enterprise Java Beans
• Enterprise Java Beans 3.2 ◦ Introduction
◦ Session Beans
◦ Statfull, Stateless and Singleton Session Beans ◦ EJB Injection
◦ Java Naming and Directory Interface - JNDI ◦ Annotations
Unidad 6 - Java Database Connectivity
• Java Database Connectivity – JDBC 4.0 ◦ Getting Started
◦ Processing SQL Statements ◦ Using RowSet Objects ◦ Using Advanced Data Types ◦ Using Stored Procedures ◦ Using JDBC with GUI API Unidad 7 - Java Persistence API
• Java Persistence API 2.1 ◦ Overview
◦ Setup
◦ Transactions ◦ Tables ◦ Inheritance ◦ Relationships
◦ Data Types and Converters ◦ Criteria API
◦ Sequences
Unidad 8 - Java Message Services
• Java Message Services – JMS 2.0 ◦ JMS Programming Model ◦ Message Driven Beans ◦ Session Bean to MDB ◦ Join Messages and MDB
◦ Sending and receiving async messages Unidad 9 - Context and Dependency Injection
• Context and Dependency Injection – CDI 1.1 ◦ CDI Beans
◦ CDI Qualifiers
◦ Scopes, injection points, EL for Beans ◦ Producers
◦ Alternatives
◦ Events, Interceptors, Decorators, Stereotypes Unidad 10 - Java Managed Extensions
• Java Managed Extensions – JMX 2.0 ◦ MBeans
◦ Notifications ◦ Remote management
Unidad 11 - Java Architecture for XML Binding
• Java Architecture for XML Binding – JAXB 2.2 ◦ JAXB Schemas
◦ Marshaling and Unmarshaling ◦ Binding and content trees ◦ Notifications
Unidad 12 - Java API for XML-Based Web Services
• Java API for XML-Based Web Services – JAX-WS 2.0 ◦ Web Services vs. Web Api
◦ Types of web services
◦ Creating JAX-WS Services and Clients ◦ JAX-WS and JAXB
Unidad 13 - Java API for RESTful Web Services • Java API for RESTful Web Services – JAX-RS
◦ Introduction to REST ◦ Designing RESTful Services ◦ HTTP Method and URI Matching ◦ JAX-RS Injection
◦ JAX-RS Content Handlers
◦ Response Codes, Complex Responses, and Exception Handling ◦ HTTP Content Negotiation
◦ Scaling JAX-RS Applications ◦ Deployment and Integration ◦ Securing JAX-RS
◦ RESTful Java Clients Unidad 14 - Java Content Repository API
• Java Content Repository API ◦ Introduction to JCR ◦ JEE Integration ◦ Apache Sling