0% encontró este documento útil (0 votos)
11 vistas18 páginas

Programación Avanzada: Git y Algoritmos

El documento detalla un curso de programación avanzada que se imparte los miércoles, abordando temas como algoritmos, Git y estructuras de datos. La metodología incluye teoría, talleres prácticos y retroalimentación, con una evaluación basada en asistencia, actividades y un examen. Se enfatiza la importancia de Git para el control de versiones y se explican conceptos de complejidad algorítmica.

Cargado por

wilson100734
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)
11 vistas18 páginas

Programación Avanzada: Git y Algoritmos

El documento detalla un curso de programación avanzada que se imparte los miércoles, abordando temas como algoritmos, Git y estructuras de datos. La metodología incluye teoría, talleres prácticos y retroalimentación, con una evaluación basada en asistencia, actividades y un examen. Se enfatiza la importancia de Git para el control de versiones y se explican conceptos de complejidad algorítmica.

Cargado por

wilson100734
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

Programación

avanzada
Miércoles 1 pm – 4 pm
Miércoles 6 pm – 9 pm
Temas

01 02
Introduccion Git
Presentación de la Control de versiones en
materia. local

03
Algoritmos y su
complejidad
Entendiendo los
algoritmos
01
Introducción
Metodología
En teoría 3 créditos corresponden a 3 horas de trabajo presencial y a 8 horas de trabajo autónomo, según las
modificaciones que se le hicieron al horario. Bajo esta idea la clase se desarrollará en tres momentos que irán
variando dependiendo del tema:

1. El primer segmento de la clase estará dedicada a brindar los conceptos teóricos.


2. El segundo segmento estará dedicado a un taller donde pondrán en práctica la teoría.
3. El tercer segmento estará dedicado a la retroalimentación y/o discusión acerca del tema.

Notas
• 15% apreciativa por cumplimiento / asistencia
• 40% Actividades
• 45% Examen de corte (Proyecto grupo Noche)
Comencemos!
Programacíon avanzada
A menudo la el termino programación implica un conocimiento profundo del desarrollo de software el cual no
necesariamente tiene que ver con la codificación en sí, sino más bien técnicas y conceptos para la construcción de
soluciones más sofisticadas y eficientes.

1. Estructuras de Datos y Algoritmos Avanzados


2. Programación Orientada a Objetos.
3. Patrones de Diseño. En este curso nos
4. Desarrollo de Software en Capas. centraremos en los
5. Programación Concurrente y Paralela. puntos 1,3,4,5,6
6. Pruebas y Depuración Avanzadas.
7. Gestión de Proyectos y Metodologías de Desarrollo.
8. Seguridad en Desarrollo.
9. Sistemas operativos.
Topics

Estructuras Patrones Capas


Formas organizadas y Organización y
Soluciones generalizadas
eficientes de almacenar, estructuración del software
para problemas comunes
gestionar y organizar datos en diferentes niveles

Sincronia Depuración
Proceso de identificar,
Computación simultanea
analizar y corregir errores
02
Git
Controlemos las versiones de
nuestro proyecto
Es un sistema de control de versiones
distribuido (no es el único), el cual además
de facilitar el rastreo de cambios en el
código fuente y gestionar las versiones
(vital en proyectos de software), mejora el
trabajo en equipo.

Git gestiona y almacena los cambios


● Snapshots
utilizando un modelo de datos
● Árbol de
basado en instantáneas (snapshots)
Directorios
en lugar de un modelo basado en
● Objetos Git
diferencias. Este enfoque contribuye
● Punteros
a la eficiencia y rapidez del sistema.
● Staging Area
Conceptos importantes
Ocurre cuando dos ramas
Almacén de datos que tienen cambios en las mismas
Repositorio contiene la información sobre Conflict líneas de código y Git no puede
la versión de un proyecto y su determinar automáticamente
historial de cambios. cuál debería conservarse.

Representa una versión Puntero especial que apunta a


Commit específica de los archivos en el HEAD la última confirmación en la
proyecto. rama actual.

Una línea de desarrollo


Branch independiente

La acción de combinar los


Merge cambios de una rama con otra
Principales comandos
• git init: Inicia un nuevo repositorio Git en el directorio • git checkout <nombre_rama>: Cambia a la rama
actual. especificada.
• git clone <url>: Clona un repositorio remoto en tu • git merge <nombre_rama>: Fusiona los cambios de la
máquina local. rama especificada con la rama actual.
• git add <archivo>: Añade cambios al área de • git log: Muestra el historial de commits.
preparación (staging area) para ser incluidos en el • git remote -v: Muestra las URLs de los repositorios
próximo commit. remotos asociados.
• git commit -m "Mensaje del commit": Realiza un • git diff: Muestra las diferencias entre los cambios
commit con los cambios añadidos, y agrega un realizados y el último commit.
mensaje descriptivo. • git fetch: Descarga los cambios desde un repositorio
• git status: Muestra el estado actual del repositorio, remoto pero no realiza la fusión.
incluyendo archivos sin rastrear, cambios en el área de • git remote add <nombre> <url>: Añade un nuevo
preparación, etc. repositorio remoto.
• git pull: Obtiene los cambios más recientes desde un • git rm <archivo>: Elimina un archivo del repositorio y
repositorio remoto y los fusiona con tu copia local. prepara los cambios para ser commitados.
• git push: Envía tus cambios locales a un repositorio • git tag -a <nombre> -m "Mensaje": Crea un nuevo tag
remoto. (etiqueta) para un punto específico en el historial.
• git branch: Lista las ramas existentes en el repositorio.
03
Algoritmos y
complejidad
Complejidad
Se refiere a la cantidad de recursos computacionales, como tiempo y espacio, que un
algoritmo necesita para resolver un problema en función del tamaño de la entrada.
Hay dos tipos principales de complejidad: la complejidad temporal (o de tiempo) y la
complejidad espacial

O(n) significa que el tiempo de


Complejidad Se utiliza la notación Big O (O) el
ejecución del algoritmo crece
cual representa el peor de los
Temporal casos
linealmente con el tamaño de la
entrada.

Se refiere a la cantidad de espacio Similar a la complejidad temporal,


Complejidad en memoria que un algoritmo se utiliza la notación Big O para
Espacial utiliza en función del tamaño de la describir el peor de los casos en
entrada. términos de espacio.
O(1) — notación constante
Esta expresión indica tiempo constante, lo que significa que el
algoritmo se ejecutará con el mismo rendimiento sin importar el
tamaño del input. Esto no quiere decir que sólo tendrá un input,
más bien no se verá afectado por la cantidad de datos que estemos
manejando.
O(n) — notación lineal
Esta es la expresión de crecimiento lineal, la complejidad del
algoritmo aumenta de manera proporcional al tamaño del input.
O(n2) — notación cuadrática
Indica que el crecimiento en complejidad es proporcional al cuadrado
del tamaño del input. Estos algoritmos suelen ser los menos
eficientes, no se recomiendan para datos grandes y normalmente se
dan cuando usamos ciclos for o iteraciones anidadas.
O(log n) — notación logarítmica
Indica que el tiempo aumenta linealmente, mientras que n sube
exponencialmente. Entonces, si se tarda 1 segundo en calcular 10
elementos, se necesitarán 2 para 100, 3 para 1000 y así
sucesivamente.
Gracias!
¿Alguna pregunta?

CREDITS: This presentation template was created by


Slidesgo, including icons by Flaticon, infographics & images
by Freepik

También podría gustarte