Skip to content

About

Teaching materials for Algorithms & Data Structures tutoring (Universidad Tecnológica Nacional). Python exercises covering: recursion, sorting (QuickSort/MergeSort), binary search, matrices, CSV mapping, serialization (pickle), and Big O analysis.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clases-Particulares

Esto son algunos de los ejercicios y trabajos practicos y parciales realizados en mi Etapa de dictado de clases particulares de materias de programación de la Universidad Tecnologica Nacional en la materia Algoritmo y Estructura de Datos, Paradigmas de la Programación

Los ejercicios estos eran con los que hacíamos y con los cuales explicaba directamente a mis distintos estudiantes que tenía a cargo Algunos de los conceptos que realizamo fueron:

Buenas prácticas en el uso de condicionales simples y compuestos:

Optimización de flujo de control: Uso adecuado de if, elif, y else para maximizar la eficiencia y legibilidad del código. Evitar la anidación excesiva: Preferencia por la utilización de operadores lógicos (and, or) para combinar condiciones, y reducir la complejidad. Priorizar el uso de guard clauses: Implementación de condiciones de salida temprana para evitar ramas anidadas innecesarias.

Comprensión completa de los bucles for y while:

Selección adecuada del bucle: Uso de for cuando el número de iteraciones es conocido, y while cuando la iteración depende de una condición que puede cambiar en cada ciclo. Evitar bucles infinitos: Implementación cuidadosa de condiciones de terminación para evitar que los bucles while se ejecuten indefinidamente. Uso de break y continue: Control preciso del flujo dentro de los bucles para mejorar la eficiencia y claridad.

Buenas prácticas de modularización:

Descomposición del problema: División del código en funciones y módulos pequeños y cohesivos que realizan tareas específicas. Reutilización de código: Creación de funciones reutilizables y de propósito general, evitando la duplicación de código. Manejo de dependencias: Reducción de acoplamiento entre módulos para facilitar el mantenimiento y las pruebas del código.

Entendimiento lógico de la estructura de los programas:

Flujo de ejecución: Comprensión de cómo la máquina interpreta y ejecuta el código, desde la carga de variables en la memoria hasta la finalización del programa. Jerarquía de operadores: Dominio de la precedencia de operadores para evitar errores lógicos en las expresiones complejas.

Recursividad y uso de funciones:

Diseño de funciones recursivas: Creación de funciones que se llaman a sí mismas con un caso base claro para evitar bucles infinitos. Análisis de la complejidad recursiva: Evaluación de la eficiencia de las soluciones recursivas en comparación con las iterativas. Paso de parámetros y retorno de valores: Implementación efectiva de funciones que reciben entradas y retornan resultados, maximizando la reutilización.

Optimización de código y comprensión de la Notación Big O:

Análisis de la complejidad temporal y espacial: Evaluación del rendimiento de algoritmos en términos de tiempo de ejecución y uso de memoria. Mejora de la eficiencia: Refinamiento de algoritmos para reducir su complejidad a través de técnicas como la eliminación de bucles innecesarios o el uso de estructuras de datos más adecuadas.

Uso de matrices y su funcionalidad:

Manipulación y acceso a datos en matrices: Creación, acceso y modificación de elementos dentro de matrices unidimensionales y multidimensionales. Optimización del espacio en matrices: Uso de técnicas como la matriz dispersa para reducir el uso de memoria cuando hay muchos valores nulos.

Mapeo de objetos a partir de tablas de datos CSV:

Conversión de datos tabulares en objetos: Creación de instancias de clases a partir de datos CSV, mapeando cada fila a un objeto con atributos específicos. Sin uso de pandas: Implementación manual de este mapeo para demostrar comprensión profunda de la lógica detrás del manejo de datos y objetos.

Mapeo de objetos a partir de enunciados:

Modelado de datos: Interpretación de requisitos y reglas de negocio para diseñar clases y objetos que reflejen estructuras lógicas derivadas de enunciados de problemas. Aplicación de patrones de diseño: Uso de patrones como Factory Method o Builder para instanciar objetos de manera flexible y escalable.

Uso del módulo pickle para guardar y leer archivos binarios:

Serialización y deserialización de objetos: Uso de pickle para convertir objetos en un formato binario que puede ser almacenado y recuperado desde archivos. Consideraciones de seguridad: Comprensión de los riesgos asociados con la deserialización de datos no confiables y cómo mitigarlos.

Uso y creación de arrays cuando corresponda:

Creación eficiente de arrays: Elección de arrays sobre otras estructuras de datos cuando el acceso por índice constante es necesario. Operaciones avanzadas en arrays: Implementación de operaciones como búsqueda, ordenamiento y manipulación de arrays en aplicaciones de alto rendimiento.

Edición de objetos dentro de los arrays:

Acceso y modificación de elementos: Técnicas para acceder, actualizar y manipular objetos almacenados en arrays. Optimización del rendimiento: Minimización del tiempo de ejecución en operaciones de edición a través del uso de arrays y métodos eficientes.

Búsquedas binarias y secuenciales:

Búsqueda secuencial: Implementación y análisis de la búsqueda en arrays no ordenados. Búsqueda binaria: Aplicación de la búsqueda binaria en arrays ordenados para obtener un rendimiento logarítmico.

Métodos de ordenamiento avanzados: QuickSort, MergeSort:

Implementación de algoritmos de ordenamiento: Escritura de algoritmos eficientes de ordenamiento, entendiendo sus ventajas y desventajas en diferentes escenarios. Análisis de complejidad: Comparación de la eficiencia de estos métodos en términos de Big O para diferentes tamaños y tipos de datos.

Análisis de cadenas carácter a carácter:

Procesamiento de cadenas: Implementación de algoritmos que analizan y manipulan cadenas de texto en función de requisitos específicos. Patrones y expresiones regulares: Uso de expresiones regulares para realizar coincidencias y reemplazos complejos dentro de cadenas de texto.

Mirar Clases on YouTube

Ver el video

About

Teaching materials for Algorithms & Data Structures tutoring (Universidad Tecnológica Nacional). Python exercises covering: recursion, sorting (QuickSort/MergeSort), binary search, matrices, CSV mapping, serialization (pickle), and Big O analysis.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages