Ir al contenido principal

Bitácora de aprendizaje

Bitácora de aprendizaje

Informe del curso 

Registro organizado de los temas desarrollados durante el curso, incluyendo prácticas, conceptos de Python, estructuras de datos, librerías, presentaciones grupales y herramientas aplicadas al área tecnológica.

Curso: Programación II
Área: Informática y tecnologías
Lenguaje trabajado: Python
Enfoque: lógica, código, librerías y práctica
30/03/2026 Presentación del portafolio y uso de la plataforma

En esta clase se presentó la forma en que se debía desarrollar el portafolio del curso. También se explicó el ingreso a la plataforma eCampus, la cual sería utilizada durante el semestre para revisar actividades, entregar trabajos y mantener el seguimiento de la materia.

Esta primera orientación fue importante porque permitió conocer la estructura general del curso y la manera en que se organizarían las evidencias de aprendizaje.

Aprendizaje principal: el portafolio funciona como una herramienta para demostrar el avance obtenido durante el semestre.
06/04/2026 Prueba diagnóstica e introducción a Python

Se realizó una prueba diagnóstica sobre conocimientos básicos de programación, con el objetivo de que el profesor pudiera conocer el nivel del grupo. También se introdujeron conceptos importantes sobre Python, un lenguaje interpretado, gratuito y de código abierto.

Se explicó que Python fue creado por Guido Van Rossum y que su nombre está relacionado con el programa Monty Python. Además, se mencionó que este lenguaje se utiliza en áreas como inteligencia artificial, análisis de datos, videojuegos, automatización, ciberseguridad y pruebas de software.

Entre las librerías mencionadas estuvieron NumPy, Pandas, spaCy, TensorFlow, Scapy, SciPy, Pygame, Scrapy, Matplotlib y Pytest. También se hablaron de herramientas como Visual Studio Code, Anaconda, Spyder, Jupyter Notebook, PyCharm y Thonny.

Punto clave: Python no solo sirve para crear programas simples; también se aplica en ciberseguridad, ciencia de datos, inteligencia artificial, automatización y análisis de información.
13/04/2026 Validaciones, Raspberry y estructuras condicionales

En esta clase se conectó una placa Raspberry y se trabajó con el entorno Thonny. También se reforzó el uso de estructuras condicionales, especialmente if, elif y else.

Se explicó que elif permite evaluar una condición adicional cuando la primera no se cumple. También se practicaron validaciones para transformar la información ingresada por el usuario, por ejemplo, convirtiendo texto a minúscula para evitar errores al comparar respuestas.

# Validación básica de entrada

respuesta = input("Desea continuar? ").lower()

if respuesta == "si":
    print("El usuario desea continuar")
elif respuesta == "no":
    print("El usuario no desea continuar")
else:
    print("Respuesta no válida")
17/04/2026 Match-case, métodos de texto y operador ternario

Se explicó el uso de match-case, una estructura disponible desde Python 3.10 que permite establecer casos o escenarios de manera más ordenada. Esta estructura funciona como una alternativa a varios elif, especialmente cuando se desea evaluar distintas opciones.

También se trabajaron métodos como upper() y lower(), utilizados para convertir texto a mayúsculas o minúsculas. Además, se explicó el uso del guion bajo en algunos casos para representar una opción por descarte.

# Ejemplo con match-case

opcion = input("Ingrese una opción: ").lower()

match opcion:
    case "a":
        print("Seleccionó la opción A")
    case "b":
        print("Seleccionó la opción B")
    case _:
        print("Opción no reconocida")

En esta clase también se habló sobre el operador ternario, utilizado para escribir decisiones simples en una sola línea, siempre que no complique la lectura del código.

20/04/2026 Estructuras cíclicas y control de repetición

Se estudiaron las estructuras cíclicas o bucles, principalmente while y for. El ciclo while se utiliza cuando no se conoce exactamente cuántas veces se repetirá una instrucción, mientras que el ciclo for se usa cuando sí se conoce la cantidad de repeticiones.

Se explicó que la sangría es fundamental en Python, porque determina qué instrucciones pertenecen al ciclo. Si una línea queda fuera de la sangría, también queda fuera de la estructura de repetición.

# Ciclo for con range

for i in range(1, 15, 2):
    print(i)

También se trabajaron las sentencias break y continue. La primera permite interrumpir un ciclo cuando se cumple una condición, mientras que la segunda permite saltar una iteración y continuar con la siguiente.

27/04/2026 Datos compuestos en Python

En esta clase se introdujeron los datos compuestos, que permiten almacenar varios valores dentro de una misma estructura. Se estudiaron las listas, tuplas, conjuntos, diccionarios y cadenas de caracteres.

Las listas son ordenadas y modificables; las tuplas no pueden modificarse después de ser creadas; los conjuntos no tienen orden ni permiten elementos duplicados; y los diccionarios trabajan con pares de clave y valor.

También se explicó que los strings o cadenas de caracteres pueden comportarse como listas, ya que cada carácter ocupa una posición dentro de la cadena.

# Uso de índices en una cadena

cadena = "POTTER"

print(cadena[0])   # P
print(cadena[5])   # R
print(cadena[-1])  # R
04/05/2026 Manejo de cadenas, errores y formato de salida

Se continuó trabajando con cadenas de caracteres y métodos como startswith(), que permite verificar si una cadena inicia con cierto texto, y endswith(), que permite comprobar si termina con una letra o palabra específica.

También se habló sobre bloques de gestión de errores y sobre el formato de salida con f-strings, que permiten insertar variables dentro de un texto de manera más clara y ordenada.

# Formato de salida con f-string

pelicula = "Jurassic World Rebirth"
boleto = 5.2475

print(f"{pelicula} es el estreno de la semana.")
print(f"Precio del boleto: ${boleto:.2f}")
18/05/2026 Listas multidimensionales y tablas en Python

En esta clase se trabajó el concepto de listas multidimensionales, también conocidas como listas de listas. Estas estructuras permiten organizar información como si fuera una tabla, con filas y columnas.

Se utilizó un ejemplo de postres para comprender cómo se almacenan varios datos dentro de una misma lista: nombre del postre, cantidad disponible y precio por unidad.

# Lista bidimensional de postres

postres = [
    ["Cheesecake", 12, 3.50],
    ["Tres Leches", 8, 2.75],
    ["Flan", 15, 1.50],
    ["Brownie", 20, 1.25],
    ["Tiramisú", 6, 4.00]
]

print("Lista de postres:")

for postre in postres:
    print(postre[0], "-", postre[1], "unidades a $", postre[2])

Este ejercicio permitió entender cómo acceder a datos específicos mediante índices y cómo recorrer toda la estructura usando for-in.

Observación importante: cuando se trabajan listas de listas, es recomendable que todas tengan la misma cantidad de elementos para evitar errores al acceder a sus posiciones.
Continuación del tema For-in, literables y recorrido automático

Se explicó que el ciclo for-in permite recorrer estructuras literables como listas, tuplas y cadenas sin necesidad de utilizar un contador manual. La variable ubicada después de la palabra for captura temporalmente cada elemento de la estructura.

En el caso de una lista bidimensional, cada elemento recorrido puede ser otra lista. Por eso, para acceder a datos específicos se utilizan índices internos, por ejemplo postre[0] para el nombre, postre[1] para la cantidad y postre[2] para el precio.

Este tema ayudó a comprender que recorrer datos no siempre exige conocer la posición exacta desde el inicio; Python puede hacer el recorrido automáticamente y permitir el acceso a los valores necesarios.
Tema posterior Tuplas, inmutabilidad y desempaquetado

Se estudió la tupla, una estructura parecida a la lista, pero con la diferencia de que es inmutable. Esto significa que, después de creada, no se puede modificar directamente. Si se intenta agregar un valor, realmente se genera una nueva tupla en otra posición de memoria.

También se explicó el uso de id() para observar el identificador de memoria, len() para conocer la longitud, type() para verificar el tipo de dato, y los métodos index() y count().

# Tupla e inmutabilidad

tupla = (1, 2, 3)
print(id(tupla))

tupla = tupla + (4,)
print(id(tupla))

Además, se practicó el unpacking o desempaquetado, que permite asignar los valores de una tupla a varias variables, siempre que la cantidad de variables coincida con la cantidad de elementos.

# Desempaquetado de tupla

datos = ("Jazmín", "Ciberseguridad", 2)

nombre, carrera, año = datos

print(nombre)
print(carrera)
print(año)
29/05/2026 NumPy, arreglos y análisis de datos

En esta clase se introdujo el uso de NumPy, una librería fundamental para cálculo numérico y análisis de datos. Se explicó que permite trabajar con arreglos homogéneos, es decir, estructuras donde los elementos son del mismo tipo de dato.

Se comparó el uso de estas estructuras con una tabla de Excel, ya que permiten organizar información en filas y columnas. También se mencionó que NumPy permite trabajar con arreglos unidimensionales, bidimensionales e incluso de más dimensiones.

# Ejemplo básico con NumPy

import numpy as np

numeros = np.array([10, 20, 30, 40])

print(numeros)
print("Promedio:", numeros.mean())
print("Suma:", numeros.sum())
Aprendizaje: NumPy facilita operaciones matemáticas y estadísticas, por lo que es muy útil en análisis de datos y procesamiento numérico.
01/06/2026 Práctica con funciones lambda

En esta práctica se trabajó el uso de funciones lambda, que permiten crear funciones pequeñas y rápidas en una sola línea. Este tipo de función puede utilizarse cuando se necesita realizar una operación simple sin definir una función tradicional completa.

También se relacionó el tema con el manejo de coordenadas y cálculos básicos, reforzando la idea de que una función puede recibir datos, procesarlos y devolver un resultado.

# Ejemplo de función lambda

distancia_simple = lambda x1, x2: abs(x2 - x1)

resultado = distancia_simple(5, 12)

print("La distancia es:", resultado)
19/06/2026 Presentación sobre Hashlib y criptografía

Se presentó el tema de Hashlib, una biblioteca estándar de Python que permite generar resúmenes digitales o hashes. Estos se utilizan para verificar la integridad de archivos, proteger información y comprobar si un dato fue modificado.

Se explicaron algoritmos como MD5, SHA-1, SHA-256 y SHA-512. También se aclaró que MD5 y SHA-1 ya no se recomiendan para aplicaciones de seguridad modernas, debido a vulnerabilidades y ataques por colisión.

# Ejemplo básico con Hashlib

import hashlib

texto = "mensaje de prueba"
hash_generado = hashlib.sha256(texto.encode()).hexdigest()

print(hash_generado)

Además, se habló sobre el uso de salt, pepper e iteraciones múltiples para mejorar la protección de contraseñas. También se mencionaron algoritmos especializados como bcrypt, scrypt y Argon2.

Presentaciones grupales Herramientas de Python aplicadas

Durante el curso, los grupos realizaron exposiciones sobre diferentes herramientas y librerías relacionadas con Python. Estas presentaciones permitieron conocer usos prácticos del lenguaje en áreas como ciberseguridad, criptografía, automatización, análisis de información y manipulación de datos.

Scapy

Presentado por Alfonso, Freisinet y Félix. Tema relacionado con manipulación, captura y análisis de paquetes de red.

Cryptography

Presentado por José, Carlos, Cristian y Daniel. Tema enfocado en criptografía y protección de información.

YARA-Python

Presentado por Jazmín, Margarita, Agustín y Alyasir. Tema enfocado en detección de patrones, reglas YARA y análisis de archivos sospechosos.

Requests + BeautifulSoup

Presentado por José, Yosué y Tomás. Tema relacionado con solicitudes web y extracción de información de páginas.

Hashlib

Presentado por Jesús, Alex, Gerald y Rotney. Tema enfocado en hashes, integridad de datos y seguridad de la información.

Participación del grupo propio: el grupo conformado por Jazmín, Margarita, Agustín y Alyasir presentó YARA-Python, una herramienta útil para identificar patrones dentro de archivos y apoyar procesos de análisis en ciberseguridad.
26/06/2026 Scapy, parcial y gestión de archivos

En esta clase se conversó sobre el parcial y también se abordó el tema de Scapy, una herramienta utilizada para enviar, capturar, analizar y falsificar paquetes de red dentro de entornos controlados.

Entre sus características se mencionó la capacidad de forjar paquetes, realizar sniffing avanzado, decodificar tráfico y relacionar peticiones con respuestas. También se explicó que puede utilizarse en escaneo de red, mapeo de puertos abiertos y traceroute personalizado.

Análisis: Scapy es una herramienta poderosa, pero para principiantes puede resultar compleja porque requiere comprender redes, protocolos y estructura de paquetes.

El profesor también presentó el tema de gestión de archivos, explicando ejemplos de creación de archivos nuevos, almacenamiento de información y manejo básico de datos guardados desde un programa.

29/06/2026 Clases, objetos, paquetes y librerías

En esta clase se introdujo el manejo de clases en Python. Se explicó que una clase puede tener atributos y funciones, y que se utiliza como una plantilla para crear objetos.

También se explicó el uso del método __init__, que permite inicializar los datos de un objeto, y el uso de self, que representa al propio objeto dentro de la clase. Además, se mencionó la nomenclatura CamelCase para nombrar clases de manera ordenada.

# Ejemplo básico de clase

class Estudiante:
    def __init__(self, nombre, carrera):
        self.nombre = nombre
        self.carrera = carrera

mi_estudiante = Estudiante("Jazmín", "Ciberseguridad")

print(mi_estudiante.nombre)
print(mi_estudiante.carrera)

Finalmente, se repasó el uso de paquetes y librerías. Se explicó que una librería completa puede importarse con import, mientras que también es posible traer elementos específicos desde un paquete o subpaquete.

# Formas de importar librerías

import math

from paquete1.subpaquete import matematicas
Durante el desarrollo de esta bitácora se evidencia un avance progresivo en el aprendizaje de la programación. Se inició con conceptos básicos de Python, herramientas de trabajo y estructuras condicionales; luego se avanzó hacia ciclos, datos compuestos, listas multidimensionales, tuplas, librerías, funciones, criptografía, gestión de archivos y programación orientada a objetos. Cada clase aportó una base importante para comprender mejor cómo se construyen soluciones mediante código y cómo estas pueden aplicarse en áreas tecnológicas y de ciberseguridad.
Programación II Python Bitácora Portafolio Ciberseguridad Aprendizaje

Comentarios

Entradas más populares de este blog

Caso del mes de Marzo

Nuevas tendencias tecnológicas Edición de Marzo Noticias actuales sobre tecnología, dispositivos, innovación y cambios importantes dentro del mundo digital. Mes: Marzo Portafolio de Programación II Caso N.° 1 Caso N.° 1 · Marzo Apple presenta su nueva y más económica MacBook Autor: Lisa Eadicicco, CNN. Fecha de publicación: 4 de marzo de 2026. Fecha de consulta: 31 de marzo de 2026. La noticia trata sobre la presentación de la MacBook Neo , una computadora portátil de Apple con un precio inicial más accesible que otros modelos de la marca. Lo que más llama la atención es que esta laptop utiliza un chip similar al de los iPhone, específicamente el A18 Pro , lo que representa un cambio interesante en la forma en que Apple está usando sus propios procesadores. Según lo que entendí, Apple está intentando ll...

Casos del mes de julio

Nuevas tendencias tecnológicas Edición de Julio Noticias sobre amenazas recientes, malware, repositorios maliciosos y riesgos para investigadores de seguridad. Mes: Julio Portafolio de Programación II Casos N.° 8 y N.° 9 Caso N.° 8 · Julio Nuevo RAT denominado ChocoPoC compromete a investigadores de vulnerabilidades Autor corporativo: CSIRT Asobancaria. Fecha de publicación: 1 de julio de 2026. Fecha de consulta: 4 de julio de 2026. Esta noticia habla sobre ChocoPoC , un troyano de acceso remoto dirigido a investigadores de vulnerabilidades y profesionales de pruebas de penetración. El malware se distribuye mediante repositorios falsos de pruebas de concepto en GitHub. Lo más delicado de este caso es que los atacantes se aprovechan de una costumbre común en ciberseguridad: descargar PoC o ejemplos de explotación para analizar vuln...

Caso del mes de junio

Nuevas tendencias tecnológicas Edición de Junio Noticias sobre inteligencia artificial, seguridad, privacidad digital y riesgos asociados al uso de modelos avanzados. Mes: Junio Portafolio de Programación II Casos N.° 6 y N.° 7 Caso N.° 6 · Junio Anthropic suspende acceso a Fable 5 y Mythos 5 por directiva del gobierno de EE. UU. Autor corporativo: Anthropic. Fecha de publicación: 12 de junio de 2026. Fecha de consulta: 30 de junio de 2026. Esta noticia trata sobre una directiva del gobierno de Estados Unidos que obligó a Anthropic a suspender el acceso a los modelos Fable 5 y Mythos 5 para ciudadanos extranjeros. La empresa explicó que la medida estaba relacionada con preocupaciones de seguridad nacional. Lo que entendí es que el problema giraba alrededor de la posibilidad de que ciertas protecciones...