● Desarrollar habilidades algorítmicas simples que incrementen el razonamiento lógico y conceptos que incrementen el nivel de abstracción en relación a las Ciencias de la Computación.
● Desarrollar técnicas específicas para la resolución de problemas.
● Comprender la importancia del uso de diferentes frameworks y plataformas para el desarrollo de sistemas web.
● Comprender las partes fundamentales dentro del desarrollo de sistemas web: backend y frontend.
● Comprender cómo divide el desarrollo de un sistema web la arquitectura de desarrollo Modelo Vista Controlador (MVC).
● Configurar Bases de Datos necesarias para sistemas simples.
● Desarrollar un sistema web utilizando un lenguaje actual en la industria del software basado en el paradigma orientado a objetos y diferentes frameworks utilizados en la industria.
● Identificar estructuras y conceptos comunes al momento de programar, sin importar el paradigma o framework utilizado.
⮚ Recuperar el concepto de paradigma de programación. ⮚ Profundizar el concepto de paradigma orientado a objetos. ⮚ Recuperar el concepto Clase y su funcionalidad. ⮚ Recuperar e identificar el concepto de Atributo e identificar su funcionalidad. ⮚ Definir clases simples que representen objetos cotidianos, definiendo atributos específicos que permitan caracterizar de manera correcta a estos elementos. ⮚ Utilizar nombres que se relacionen con la función de la clase. Respetar las normas correspondientes al lenguaje elegido para escoger el nombre de las clases. ⮚ Utilizar nombres y tipos de datos adecuados a su contenido al definir los atributos de las clases. ⮚ Identificar y comprender similitudes y diferencias entre métodos, procedimientos y funciones. ⮚ Crear y comprender la funcionalidad de los métodos de inicialización/constructor de clase, teniendo en cuenta qué atributos deben de ser inicializados al momento de crear un objeto. ⮚ Comprender el concepto de objeto como la instancia de una clase. ⮚ Reconocer a los objetos como elementos independientes creados a partir de una clase. Reconocer que cada objeto tiene un identificador. ⮚ Diferenciar los conceptos de Clase y Objeto. ⮚ Comprender el concepto de evento. ⮚ Reconocer la importancia de que los objetos estén encapsulados. ⮚ Comprender para qué sirven los métodos getters y setters, y su importancia para la encapsulación de los objetos. ⮚ Comprender qué significa que los métodos o atributos sean públicos o privados.Diferenciar atributos y métodos, privados y públicos. Reconocer cuándo es necesario crear atributos o métodos privados o públicos. ⮚ Reconocer getters y setters en la definición de clases. Crear métodos getters y setters que tengan sentido dentro de la definición de la clase. Crear métodos que simulan el comportamiento de los objetos que se crearán a partir de la clase definida. ⮚ Recuperar el concepto de parámetro y reconocer que los métodos pueden ser definidos con parámetros. ⮚ Comprender el concepto de Herencia. ⮚ Comprender el concepto Polimorfismo. ⮚ Comprender el concepto de Modularidad. ⮚ Recuperar y profundizar la arquitectura Modelo - Vista - Controlador (MVC). Identificar cada uno de los componentes del modelo MVC, pudiendo comprender las relaciones entre las partes.
Recuperar el concepto de Base de Datos Relacional. ⮚ Concepto de Base de Datos no Relacional. Reconocimiento de situaciones específicas en las que son utilizadas las bases de datos no relacionales. ⮚ Reconocimiento de cuándo una base de datos es relacional y cuándo es no relacional. ⮚ Comprender qué son los archivos formato JSON y cómo representan la información. Comprender cómo enviar, recibir y guardar datos utilizando JSON. ⮚ Configuración del motor de base de datos seleccionado. ⮚ Identificación diferentes formas de representar los datos que hay que guardar en la base de datos. ⮚ Creación de modelos que representan la Base de Datos a utilizar. ⮚ Comprender el concepto de Big Data y la importancia de la información en el mundo actualmente. ⮚ Identificar dónde está presente el análisis de grandes cantidades de datos. ⮚ Reconocer cuándo hemos generado información para grandes bases de datos, sin ser ser necesariamente conscientes
⮚Reconocimiento de la importancia de conocer diferentes paradigmas y lenguajes de programación. Dependiendo del problema que necesitemos resolver, dependerá el lenguaje y paradigma que decidamos utilizar. ⮚ Descomposición de los problemas complejos en subproblemas manejables que podrían resolverse con programas o procedimientos que ya existen. ⮚ Reconocimiento de la existencia de múltiples frameworks para desarrollar un sistema web. Identificar, dependiendo de nuestras necesidades, requerimientos y requisitos, el framework a utilizar. ⮚ Evaluar si una solución computacional es la más adecuada para un problema
⮚Comprender a qué se denomina desarrollo backend. ⮚ Comprender a qué se denomina desarrollo frontend. ⮚ Diferenciar el desarrollo backend y frontend comprendiendo cómo se vinculan y comunican. ⮚ Comprender qué es un framework y los beneficios y complicaciones que pueden generar sus usos. ⮚ Comprender funcionalidades básicas del framework definido para ser utilizado como backend. ⮚ Recuperar el concepto de Modelo de MVC. ⮚ Comprender el rol de las vistas dentro del Modelo MVC y cómo se relacionan con el diseño de interfaces. ⮚ Definir un primer prototipo para resolver el desarrollo del sistema planteado. ⮚ Definir los casos de usos necesarios para poder implementar el sistema web definido. ⮚ Comprender el rol de los controladores y cómo permiten que interactúen las vistas con los modelos. ⮚ Comprender el significado de que una aplicación o sistema sea responsivo. Reconocer la importancia de desarrollar sistemas responsivos para tener mayor llegada a diferentes dispositivos. ⮚ Tomar decisiones sobre qué herramientas sería mejor usar y cuándo usarlas. ⮚ Evaluar si una solución computacional es la solución más adecuada para un problema en particular. ⮚ Evaluar sistemáticamente la viabilidad de usar herramientas computacionales para resolver problemas o subproblemas dados. Identificar ventajas y desventajas de las herramientas seleccionadas. ⮚ Planificar sistemáticamente el desarrollo de un sistema y aplicar intencionalmente técnicas computacionales, como la descomposición y la abstracción.
➢ Comprender los paradigmas y lenguajes de programación como herramientas que nos permiten dar instrucciones de forma sencilla a la computadora. Comprender que su fin es el mismo, cambian sus funcionalidades. ➢ Transpolar las estructuras de control esenciales (ciclos, condicionales, variables, secuencia) del paradigma imperativo al paradigma orientado a objetos. Identificar que los conceptos esenciales son los mismos, sea paradigma imperativo u orientado a objetos. ➢ Recuperar Diagramas de Entidad Relación, relacionarlos con los Modelos. ➢ Utilizar frameworks para el desarrollo frontend y backend que permitan resolver parte de la situación problemática presentada, sin ser necesariamente consciente de cómo los frameworks han sido implementados.
➢ Identificar errores de sintaxis en diferentes programas, según lenguaje utilizado. ➢ Utilizar herramientas para desarrolladores que brindan los diferentes exploradores para verificar el correcto funcionamiento del sistema desarrollado. ➢ Variar los tamaños de las ventanas para verificar el correcto funcionamiento en diferentes dispositivos del sistema desarrollado. ➢ Verificar los casos de usos definidos para comprobar el correcto funcionamiento de las vistas y controladores. ➢ Identificar, en el proceso de desarrollo, casos de uso no definidos o que no están considerando acciones específicas. ➢ Anticipar errores y usar ese conocimiento para el desarrollo del programa. ➢ Testear los programas con entradas asociadas a todos los escenarios posibles.
➢ Utilizar nombres de clases, atributos y métodos relacionados a sus objetivos. Aplicar también a los modelos, vistas y controladores. ➢ Respetar las convenciones definidas por los lenguajes de programación para definir nombre de clases, atributos y métodos. ➢ Comprender qué es el coding style, reconociendo los beneficios que genera para la mantención y lectura del código creado. ➢ Comprender que los programas creados son ejecutados por una computadora pero los desarrollamos para personas, Comentar las clases, atributos y métodos teniendo en cuenta sus funciones. ➢ Leer la documentación específica para poder comprender cómo funcionan los elementos de las bibliotecas a utilizar. ➢ Poder plantear preguntas específicas teniendo en cuenta la lectura de la documentación. ➢ Utilizar estrategias, ante la pregunta de un compañero/a, que genere feedback que aporte para la comprensión. ➢ Usar diferentes herramientas y métodos de colaboración para solicitar comentarios no solo de los miembros del equipo y los compañeros de clase sino también de participantes en los foros en línea o las comunidades (Stackoverflow, Quora, Reddit, etc.). ➢ Reconocer que las elecciones que hacen las personas cuando crean programas, aplicaciones y sistemas se basan en intereses personales, experiencias y necesidades. ➢ Trabajar en forma colaborativa con compañeros/as. Asignar roles dentro de los equipos. Decidir en equipo cómo turnarse en diferentes roles. ➢ Organizar equipos propios de forma independiente y crear objetivos comunes, expectativas y cargas de trabajo equitativas. ➢ Gestionar el flujo de trabajo del proyecto utilizando agendas y cronogramas ➢ Evaluar el flujo de trabajo para identificar áreas de mejora. ➢ Incorporar estrategias para trabajar con compañeros/as que poseen diferentes habilidades y puntos de vista. ➢ Poder presentar una idea específica basándose en la información obtenida para la resolución del problema. ➢ Representar los datos e información obtenidos utilizando gráficos, diagramas o presentaciones. ➢ Utilizar el lenguaje específico para referirse a conceptos y dispositivos, refiriéndose con la terminología propia del campo disciplinar. ➢ Presentar de manera clara los objetivos y los productos esperados de las soluciones desarrolladas. ➢ Una vez identificadas las partes del problema, cuando se trate de un trabajo en equipo, poder definir roles para la resolución de los subproblemas. ➢ Reconocer los beneficios de utilizar sistemas de control de versiones (GIT, SVN, etc.) para el desarrollo de programas en equipo. ➢ Comprender y utilizar los comandos básicos de los del sistema de control de versiones elegido (commit, pull request, merge, etc). Utilizar mensajes relacionados a la tarea resuelta cada vez que se realice un commit