0% encontró este documento útil (0 votos)
43 vistas47 páginas

Introducción a la Ingeniería Informática

Cargado por

perisgaming026
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas47 páginas

Introducción a la Ingeniería Informática

Cargado por

perisgaming026
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 DOCX, PDF, TXT o lee en línea desde Scribd

Capítulo 1: Fundamentos de Ingeniería Informática

1.1. ¿Qué es la Ingeniería Informática?

La ingeniería informática es la disciplina encargada de diseñar, construir y mantener


sistemas tecnológicos que combinan hardware (la parte física de los ordenadores) y
software (los programas que los hacen funcionar).

Los ingenieros informáticos trabajan en áreas como:

• Desarrollo de aplicaciones y sistemas operativos.

• Diseño de hardware eficiente.

• Creación de redes de comunicación.

• Solución de problemas tecnológicos en diferentes industrias.

Ejemplo:

Piensa en un ordenador personal. Cada parte, desde su diseño físico hasta los programas
que usamos en él, es el resultado del trabajo de ingenieros informáticos.

Actividad:

Reflexiona sobre los dispositivos tecnológicos que usas a diario (móviles, ordenadores,
consolas de videojuegos). ¿Cómo crees que la ingeniería informática influye en su diseño y
funcionamiento?

1.2. Historia y Evolución de los Ordenadores

Los ordenadores no siempre fueron como los conocemos hoy. Han evolucionado durante
décadas.

1. Primera Generación (1940-1950):

• Usaban válvulas de vacío para procesar datos.

• Eran enormes y muy lentos.

• Ejemplo: ENIAC, uno de los primeros ordenadores.

2. Segunda Generación (1950-1960):

• Sustituyeron las válvulas por transistores, que eran más pequeños y


eficientes.

• Se hicieron más rápidos y confiables.

3. Tercera Generación (1960-1970):

• Se introdujeron los circuitos integrados (chips).

• Redujeron aún más el tamaño y aumentaron la velocidad.


4. Cuarta Generación (1970-Actualidad):

• Se desarrollaron los microprocesadores, como los que usamos hoy.

• Nació la computación personal (PC).

5. Futuro:

• Inteligencia artificial, computación cuántica, y dispositivos aún más


compactos.

Actividad:

Investiga sobre un ordenador de cada generación (puedes buscar fotos y descripciones) y


compáralos con un ordenador moderno.

1.3. Componentes Básicos del Hardware

Un ordenador está compuesto por diferentes piezas que trabajan juntas. Estos son sus
componentes principales:

1. Procesador (CPU):

• Es el cerebro del ordenador.

• Realiza cálculos y ejecuta instrucciones.

2. Memoria RAM:

• Memoria temporal que almacena datos mientras trabajas en el ordenador.

• Cuando apagas el ordenador, los datos en RAM desaparecen.

3. Almacenamiento (HDD/SSD):

• Disco Duro (HDD): Más lento, pero con más capacidad.

• Unidad de Estado Sólido (SSD): Más rápido y eficiente.

4. Placa Base:

• Conecta todos los componentes y permite que trabajen juntos.

5. GPU (Unidad de Procesamiento Gráfico):

• Procesa gráficos y mejora el rendimiento en juegos y diseño.

Actividad:

Si tienes acceso a un ordenador viejo o descompuesto, abre su carcasa (con supervisión de


un adulto si es necesario) y observa cada componente. Intenta identificar las piezas
mencionadas.

1.4. Sistemas Operativos: ¿Qué son y cómo funcionan?


El sistema operativo es el software principal que gestiona el hardware y otros programas. Es
el puente entre el usuario y el ordenador.

1. Funciones principales:

• Gestión de procesos: Controla qué tareas realiza el ordenador.

• Administración de memoria: Asigna espacio a los programas en ejecución.

• Gestión de dispositivos: Conecta el hardware (impresoras, ratones) con el


software.

• Interfaz de usuario: Permite que interactúes con el ordenador de forma visual


o mediante comandos.

2. Tipos de sistemas operativos:

• Windows: Muy usado en hogares y empresas.

• Linux: Gratuito y personalizable, ideal para programadores.

• macOS: Exclusivo de ordenadores Apple.

Actividad Práctica:

1. Investiga qué sistema operativo usas en tu ordenador.

2. Busca capturas de pantalla o ejemplos de Linux y compáralos con tu sistema


operativo actual.

Capítulo 2: Introducción a la Programación

2.1. Primeros Pasos con Python

¿Qué es Python?

Python es un lenguaje de programación fácil de aprender, usado para crear aplicaciones,


sitios web, análisis de datos, inteligencia artificial, entre otros.

• Fue creado por Guido van Rossum en 1991.

• Es conocido por su sintaxis simple y legible.

Instalación de Python:

1. Descarga Python desde [Link].

2. Durante la instalación, activa la opción “Add Python to PATH”.

3. Usa un editor de texto como Visual Studio Code o directamente la terminal.

Primer Programa:

El programa más básico es imprimir un mensaje en pantalla:

print("Hola, Mundo")
Actividad:

Escribe el programa anterior en tu editor de texto y ejecútalo. ¿Qué sucede?

2.2. Variables, Operadores y Tipos de Datos

Variables:

Son espacios de memoria donde almacenamos datos.

• Ejemplo:

nombre = "Juan"

edad = 14

pi = 3.14

Operadores:

Sirven para realizar cálculos o comparaciones.

• Aritméticos: +, -, *, /

• Comparativos: >, <, ==, !=

Tipos de Datos:

1. Enteros: Números sin decimales.

2. Flotantes: Números con decimales.

3. Cadenas (Strings): Texto entre comillas.

4. Booleanos: True o False.

Actividad:

Crea un programa que defina variables para tu nombre, edad y altura, y luego imprima un
mensaje como:

print(f"Hola, soy {nombre}, tengo {edad} años y mido {altura} metros.")

2.3. Condicionales y Estructuras de Control

Condicionales (if/else):

Permiten tomar decisiones en función de una condición.

• Ejemplo:

edad = 14

if edad >= 18:

print("Eres mayor de edad")


else:

print("Eres menor de edad")

Bucles:

1. Bucle for: Repite un bloque de código un número específico de veces.

• Ejemplo:

for i in range(5):

print(f"Número: {i}")

2. Bucle while: Repite un bloque de código mientras se cumpla una condición.

• Ejemplo:

contador = 0

while contador < 5:

print(f"Contador: {contador}")

contador += 1

Actividad:

1. Crea un programa que imprima los números del 1 al 10 usando un bucle for.

2. Haz otro programa que sume los números del 1 al 100 usando un bucle
while.

2.4. Funciones y Estructuras de Datos

Funciones:

Permiten organizar el código en bloques reutilizables.

• Ejemplo:

def saludar(nombre):

print(f"Hola, {nombre}")

saludar("Juan")

Listas:

Son colecciones ordenadas de datos.

• Ejemplo:

numeros = [1, 2, 3, 4]

print(numeros[0]) # Imprime el primer elemento


Diccionarios:

Colección de pares clave-valor.

• Ejemplo:

persona = {"nombre": "Juan", "edad": 14}

print(persona["nombre"]) # Imprime "Juan"

Actividad:

1. Escribe una función que calcule la suma de dos números.

2. Crea una lista de tus 5 películas favoritas y un diccionario con tus datos
personales (nombre, edad, ciudad).

2.5. Introducción a la Programación Orientada a Objetos (POO)

¿Qué es POO?

Es un paradigma de programación basado en objetos que tienen atributos (propiedades) y


métodos (acciones).

Ejemplo Básico:

class Persona:

def __init__(self, nombre, edad):

[Link] = nombre

[Link] = edad

def saludar(self):

print(f"Hola, soy {[Link]} y tengo {[Link]} años.")

p = Persona("Juan", 14)

[Link]()

Actividad:

Crea una clase llamada “Animal” con atributos como nombre y especie, y un método que
imprima un mensaje como:

"Este es un perro llamado Fido.

Capítulo 3: Redes Informáticas

3.1. Conceptos Básicos de Redes

Una red informática es un conjunto de dispositivos conectados entre sí para compartir


información, recursos o servicios.
Elementos principales de una red:

1. Dispositivos finales: Ordenadores, móviles, impresoras.

2. Medios de transmisión: Cables, ondas de radio (Wi-Fi).

3. Dispositivos intermediarios: Routers, switches, puntos de acceso.

4. Protocolos: Reglas que permiten la comunicación (como el idioma que usan


los dispositivos).

Tipos de redes:

• LAN (Red de Área Local): Conecta dispositivos en una ubicación pequeña


(como una casa o escuela).

• WAN (Red de Área Amplia): Conecta dispositivos en grandes distancias,


como internet.

3.2. Modelo OSI y TCP/IP

Modelo OSI:

Es una guía teórica para entender cómo los datos viajan por una red. Tiene 7 capas:

1. Capa Física: Transmite señales eléctricas o inalámbricas.

2. Capa de Enlace de Datos: Asegura que los datos viajen sin errores.

3. Capa de Red: Encargada de enviar datos de un dispositivo a otro (usa


direcciones IP).

4. Capa de Transporte: Divide los datos en paquetes y asegura que lleguen


completos.

5. Capa de Sesión: Gestiona la comunicación entre dispositivos.

6. Capa de Presentación: Transforma los datos para que sean legibles.

7. Capa de Aplicación: Interactúa con el usuario (navegadores, apps).

Modelo TCP/IP:

Es una versión práctica del modelo OSI con 4 capas:

1. Acceso a Red: Equivale a las capas física y de enlace del modelo OSI.

2. Internet: Maneja las direcciones IP.

3. Transporte: Asegura que los datos lleguen correctamente.

4. Aplicación: Interactúa directamente con el usuario.

3.3. Direcciones IP, DNS y Protocolos Comunes

Direcciones IP:
Son como la dirección de tu casa, pero para dispositivos en internet.

• IPv4: Formato más común (ejemplo: [Link]).

• IPv6: Nuevo formato, más largo, para resolver la falta de direcciones IPv4.

DNS (Sistema de Nombres de Dominio):

Traduce nombres fáciles de recordar (como [Link]) a direcciones IP.

Protocolos comunes:

• HTTP/HTTPS: Usados para navegar en la web.

• FTP: Transferencia de archivos.

• SMTP/IMAP: Envío y recepción de correos electrónicos.

3.4. Configuración de Redes Locales

Configurar una red básica:

1. Conecta los dispositivos con un router o switch.

2. Asigna direcciones IP únicas a cada dispositivo (manual o automáticamente


con DHCP).

3. Prueba la conexión usando el comando ping en la terminal.

Ejemplo práctico:

1. Abre la terminal y escribe:

ping [Link]

Esto envía un mensaje de prueba al servidor de Google para verificar la conexión.

2. Si la conexión funciona, verás los tiempos de respuesta.

Actividad:

1. Dibuja un esquema de una red doméstica (incluye ordenador, router y otros


dispositivos).

2. Usa el comando ipconfig (Windows) o ifconfig (Linux) para ver tu dirección IP


y gateway.

Capítulo 4: Ciberseguridad

4.1. Introducción a la Ciberseguridad

La ciberseguridad es el conjunto de prácticas diseñadas para proteger sistemas, redes y


datos de ataques maliciosos.

Objetivos principales de la ciberseguridad:


1. Confidencialidad: Solo las personas autorizadas pueden acceder a la
información.

2. Integridad: Los datos no deben ser alterados sin permiso.

3. Disponibilidad: Los sistemas y datos deben estar accesibles cuando se


necesiten.

Importancia de la ciberseguridad:

En un mundo digital, proteger información personal, financiera y empresarial es esencial.


Sin ella, estamos expuestos a robos, fraudes y pérdida de datos.

4.2. Tipos de Amenazas Digitales

1. Malware:

Programas diseñados para dañar sistemas.

• Virus: Se replican y dañan archivos.

• Troyanos: Parecen útiles, pero contienen código malicioso.

• Ransomware: Bloquean el acceso a tus datos y piden un rescate.

2. Phishing:

Técnicas para engañar a los usuarios y robar información confidencial (como contraseñas)
mediante correos o páginas falsas.

3. Ataques de Fuerza Bruta:

Método para descifrar contraseñas probando todas las combinaciones posibles.

4. Ataques DDoS:

Saturan un servidor enviando grandes cantidades de tráfico, haciéndolo inaccesible.

4.3. Criptografía Básica: Cifrado y Descifrado

¿Qué es la criptografía?

Es la ciencia de proteger información mediante el uso de códigos.

Tipos de cifrado:

1. Simétrico: Usa la misma clave para cifrar y descifrar.

• Ejemplo: Cifrado César (desplazar letras del abecedario).

def cifrar_cesar(texto, desplazamiento):

resultado = ""

for char in texto:


if [Link]():

desplazado = ord(char) + desplazamiento

if [Link]():

resultado += chr((desplazado - 97) % 26 + 97)

else:

resultado += chr((desplazado - 65) % 26 + 65)

else:

resultado += char

return resultado

print(cifrar_cesar("Hola", 3)) # Resultado: "Krod"

2. Asimétrico: Usa dos claves: una pública y una privada (ejemplo: RSA).

Actividad:

Crea un programa en Python que descifre un mensaje cifrado con el método César.

4.4. Herramientas Esenciales de Análisis de Seguridad

1. Escáneres de puertos:

Detectan qué servicios están abiertos en un sistema.

• Herramienta: nmap

• Comando básico:

nmap [Link]

Esto analiza los servicios activos en la dirección IP proporcionada.

2. Análisis de vulnerabilidades:

Busca debilidades en sistemas o aplicaciones.

• Herramienta: OpenVAS o Nessus.

3. Criptografía:

Cifra y descifra datos para proteger la comunicación.

• Herramienta: gpg

• Comando básico:

gpg --encrypt --recipient "nombre@[Link]" [Link]


4. Monitoreo de tráfico de red:

Permite observar qué datos viajan por la red.

• Herramienta: Wireshark

• Abre Wireshark y selecciona una interfaz para capturar tráfico.

Actividad:

Instala nmap en tu sistema y escanea tu red doméstica para identificar dispositivos


conectados. Haz una lista de sus direcciones IP y puertos abiertos.

Capítulo 5: Sistemas Operativos

5.1. ¿Qué es un Sistema Operativo?

Un sistema operativo (SO) es el software principal que administra los recursos del hardware
y proporciona servicios a otros programas.

Funciones principales:

1. Gestión de Procesos: Controla la ejecución de aplicaciones y asigna


recursos.

2. Gestión de Memoria: Asigna espacio en la memoria RAM a los programas en


ejecución.

3. Gestión de Almacenamiento: Coordina el acceso al disco duro o SSD.

4. Interfaz de Usuario: Ofrece un entorno visual o basado en comandos para


interactuar con el sistema.

Tipos de sistemas operativos:

• Monotarea: Solo ejecutan un programa a la vez (como MS-DOS).

• Multitarea: Permiten ejecutar varios programas simultáneamente (Windows,


Linux).

5.2. Estructura de un Sistema Operativo

Un sistema operativo tiene varias capas que interactúan entre sí:

1. Núcleo (Kernel):

• Es la parte central del sistema operativo.

• Se comunica directamente con el hardware.

• Gestiona memoria, procesos y dispositivos.

2. Shell:

• Interfaz que permite a los usuarios interactuar con el sistema operativo.


• Puede ser gráfica (GUI) o basada en texto (CLI).

3. Aplicaciones:

• Programas que los usuarios ejecutan, como navegadores o editores de texto.

Actividad:

Investiga qué tipo de kernel utiliza tu sistema operativo (Linux usa un kernel monolítico;
Windows, un híbrido).

5.3. Comandos Básicos de Linux

¿Por qué usar Linux?

Linux es un sistema operativo de código abierto, ideal para aprender sobre informática y
personalizar sistemas.

Comandos esenciales:

1. Navegación por directorios:

• ls: Lista los archivos y carpetas.

• cd [carpeta]: Cambia al directorio especificado.

• pwd: Muestra la ubicación actual.

2. Gestión de archivos:

• touch [archivo]: Crea un archivo vacío.

• mkdir [carpeta]: Crea un directorio.

• rm [archivo]: Elimina un archivo.

• rm -r [carpeta]: Elimina una carpeta y su contenido.

3. Información del sistema:

• uname -a: Muestra información del sistema operativo.

• df -h: Muestra el espacio en disco disponible.

• top: Muestra los procesos en ejecución.

4. Gestión de paquetes (en sistemas Debian):

• sudo apt update: Actualiza la lista de paquetes.

• sudo apt install [paquete]: Instala un programa.

Actividad:

1. Abre una terminal en Linux y prueba los comandos ls, pwd y cd.
2. Crea una carpeta llamada prueba, dentro de ella un archivo llamado
[Link], y luego elimínalos.

5.4. Virtualización y Máquinas Virtuales

¿Qué es la virtualización?

Es la creación de un entorno simulado (virtual) dentro de un sistema físico.

• Permite ejecutar múltiples sistemas operativos en un mismo ordenador.

• Se usa para pruebas, desarrollo y aprendizaje.

Herramientas de virtualización:

1. VirtualBox: Gratuito y fácil de usar.

2. VMware: Amplio soporte empresarial.

Cómo crear una máquina virtual con VirtualBox:

1. Descarga e instala VirtualBox.

2. Crea una nueva máquina virtual y elige el sistema operativo (por ejemplo,
Linux).

3. Asigna recursos como memoria RAM y espacio en disco.

4. Inicia la máquina y carga una imagen ISO del sistema operativo.

Actividad:

Instala VirtualBox, descarga una ISO de Ubuntu y crea una máquina virtual para explorar
Linux.

5.5. Automatización con Scripts

¿Qué es un script?

Un script es un conjunto de comandos que se ejecutan automáticamente para realizar


tareas específicas.

Ejemplo básico en Bash:

#!/bin/bash

echo "Hola, este es un script básico"

mkdir mi_carpeta

touch mi_carpeta/[Link]

echo "Archivo creado en mi_carpeta"

Cómo ejecutarlo:
1. Guarda el script como mi_script.sh.

2. Dale permisos de ejecución:

chmod +x mi_script.sh

3. Ejecútalo:

./mi_script.sh

Actividad:

Crea un script que automatice la creación de 5 carpetas numeradas (carpeta1, carpeta2,


etc.) y que dentro de cada una cree un archivo llamado [Link].

Capítulo 6: Desarrollo de Software

6.1. Introducción al Desarrollo de Software

El desarrollo de software es el proceso de diseñar, crear y mantener aplicaciones o


sistemas informáticos. Existen distintas etapas en el ciclo de vida del software:

1. Análisis de requisitos: Entender lo que se necesita desarrollar.

2. Diseño: Crear un plan de cómo será el software.

3. Codificación: Escribir el código fuente del software.

4. Pruebas: Asegurar que el software funcione correctamente.

5. Mantenimiento: Corregir errores y realizar mejoras tras el lanzamiento.

Metodologías de desarrollo:

• Ágil (Agile): Desarrollar el software en ciclos cortos con mejoras frecuentes.

• Cascada (Waterfall): Un proceso secuencial, donde cada fase depende de la


anterior.

6.2. Lenguajes de Programación para el Desarrollo de Software

Existen múltiples lenguajes de programación, cada uno con características y usos


específicos. Algunos de los más populares son:

• Python: Ideal para principiantes y ampliamente usado en ciencia de datos,


desarrollo web, automatización, etc.

• Java: Usado en aplicaciones de gran escala, como sistemas empresariales.

• C++: Se usa para aplicaciones que requieren alto rendimiento, como


videojuegos.

• JavaScript: Lenguaje clave para el desarrollo web, tanto en el front-end como


en el back-end (con [Link]).
• Swift: Usado para el desarrollo de aplicaciones en dispositivos Apple (iOS,
macOS).

Actividad:

Escribe un breve programa en JavaScript que imprima “¡Hola, mundo!” en la consola del
navegador.

6.3. Herramientas de Desarrollo y Entornos de Desarrollo Integrado (IDE)

¿Qué es un IDE?

Un IDE (Entorno de Desarrollo Integrado) es un conjunto de herramientas que facilita la


programación. Generalmente incluye un editor de código, un depurador y un compilador.

Algunos IDE populares:

• Visual Studio Code (VSCode): Ligero y con soporte para múltiples lenguajes.

• PyCharm: Ideal para desarrollo en Python.

• Eclipse: Usado principalmente para Java.

• IntelliJ IDEA: Excelente para Java y otros lenguajes como Kotlin.

• Xcode: Usado para desarrollar en Swift y crear aplicaciones para dispositivos


Apple.

Actividad:

Instala Visual Studio Code y crea un archivo de Python donde imprimas “Bienvenidos al
curso de Desarrollo de Software”.

6.4. Control de Versiones con Git y GitHub

¿Qué es Git?

Git es un sistema de control de versiones distribuido que permite a los desarrolladores


rastrear cambios en su código, colaborar con otros y gestionar diferentes versiones de un
proyecto.

¿Qué es GitHub?

GitHub es una plataforma de desarrollo colaborativo donde puedes almacenar y compartir


proyectos de Git.

Comandos básicos de Git:

1. Inicializar un repositorio:

git init

2. Añadir archivos al repositorio:

git add [archivo]


3. Hacer un commit (guardar cambios):

git commit -m "Mensaje de cambio"

4. Subir cambios a GitHub (push):

git push origin main

Actividad:

1. Crea una cuenta en GitHub.

2. Inicializa un repositorio Git en tu ordenador, haz algunos cambios en tus


archivos y sube el repositorio a GitHub.

6.5. Diseño de Interfaces de Usuario (UI)

¿Qué es el diseño de interfaces de usuario (UI)?

Es el proceso de crear la parte visual y funcional de las aplicaciones para que los usuarios
puedan interactuar fácilmente con ellas.

Principios básicos del diseño de interfaces:

1. Simplicidad: La interfaz debe ser clara y fácil de usar.

2. Consistencia: Usa los mismos elementos de diseño en todo el sistema.

3. Retroalimentación: Informa al usuario sobre lo que está sucediendo (por


ejemplo, un mensaje cuando se guarda un archivo).

4. Accesibilidad: La interfaz debe ser accesible para personas con


discapacidades.

Herramientas para diseñar UI:

• Figma: Herramienta de diseño colaborativa basada en la web.

• Adobe XD: Usado para diseñar prototipos interactivos.

• Sketch: Software para diseño de interfaces en macOS.

Actividad:

Usa Figma para diseñar una interfaz simple para una aplicación de lista de tareas.

6.6. Pruebas de Software

Las pruebas de software son esenciales para asegurarse de que el software funcione
correctamente y no tenga errores. Existen varios tipos de pruebas:

1. Pruebas unitarias: Se prueban funciones o componentes individuales del


código.

2. Pruebas de integración: Se prueban combinaciones de componentes para


verificar que trabajen juntos.
3. Pruebas funcionales: Se prueba que el software cumpla con los requisitos
especificados.

4. Pruebas de rendimiento: Se verifica que el software funcione bien bajo


diferentes cargas.

5. Pruebas de seguridad: Se revisa si existen vulnerabilidades que puedan ser


explotadas.

Herramientas para pruebas:

• JUnit: Usada para pruebas unitarias en Java.

• PyTest: Usada para pruebas en Python.

• Selenium: Usada para pruebas automatizadas de interfaces web.

Actividad:

Escribe una prueba unitaria simple en Python para una función que sume dos números.

6.7. Despliegue y Mantenimiento de Software

El despliegue es el proceso de poner el software en producción, donde los usuarios pueden


acceder a él.

Pasos para el despliegue:

1. Preparar el entorno de producción: Configura el sistema donde se ejecutará


el software.

2. Compilar el software: Si es necesario, convierte el código fuente en un


programa ejecutable.

3. Subir el software al servidor: Usualmente se utiliza FTP o plataformas como


Heroku para aplicaciones web.

4. Monitoreo: Verifica que el software funcione correctamente en producción y


realiza ajustes según sea necesario.

Actividad:

Despliega una simple aplicación web de “Hola, Mundo” usando un servicio de alojamiento
como Heroku.

Fin del Capítulo 6

Capítulo 7: Bases de Datos

7.1. Introducción a las Bases de Datos

Las bases de datos son sistemas organizados para almacenar, gestionar y recuperar
grandes cantidades de datos de manera eficiente. Los datos pueden ser de diferentes tipos:
texto, números, imágenes, entre otros.

¿Por qué usar bases de datos?


• Permiten organizar grandes volúmenes de información.

• Facilitan la búsqueda rápida y eficiente de datos.

• Permiten realizar consultas complejas y generar informes.

Tipos de Bases de Datos:

1. Relacional (RDBMS): Organiza los datos en tablas relacionadas entre sí.


Ejemplos: MySQL, PostgreSQL, SQLite.

2. NoSQL: No utiliza tablas y está diseñada para manejar datos no


estructurados o semi-estructurados. Ejemplos: MongoDB, CouchDB.

3. Jerárquica: Los datos se organizan en una estructura tipo árbol. Ejemplo:


XML, LDAP.

4. De grafos: Utiliza nodos y relaciones para almacenar datos, ideal para redes
sociales o análisis de relaciones. Ejemplo: Neo4j.

7.2. Modelo Relacional

El modelo relacional es uno de los más utilizados. En este modelo, los datos se organizan
en tablas, donde cada tabla tiene filas (registros) y columnas (campos).

Conceptos clave:

• Tabla: Un conjunto de datos relacionados organizados en filas y columnas.

• Campo: Cada columna en una tabla, que define el tipo de dato que
almacenará.

• Registro: Cada fila de la tabla, que representa una entrada única de datos.

• Clave primaria (Primary Key): Un campo o conjunto de campos que identifica


de forma única cada registro de una tabla.

• Clave foránea (Foreign Key): Un campo en una tabla que se refiere a la clave
primaria de otra tabla, creando una relación entre ambas.

Ejemplo de tabla de estudiantes:

ID Estudiante Nombre Edad Carrera

1 Juan 20 Informática

2 María 22 Matemáticas

3 Carlos 19 Biología

Actividad:

Crea una tabla en una base de datos de ejemplo que almacene información sobre tus
amigos (nombre, edad, ciudad).

7.3. Lenguaje SQL (Structured Query Language)


SQL es el lenguaje estándar para interactuar con bases de datos relacionales. A través de
SQL, puedes insertar, actualizar, eliminar y consultar datos.

Comandos básicos de SQL:

1. Crear una tabla:

CREATE TABLE estudiantes (

id INT PRIMARY KEY,

nombre VARCHAR(100),

edad INT,

carrera VARCHAR(100)

);

2. Insertar datos en la tabla:

INSERT INTO estudiantes (id, nombre, edad, carrera)

VALUES (1, 'Juan', 20, 'Informática');

3. Consultar datos:

SELECT * FROM estudiantes;

Este comando obtiene todos los registros de la tabla estudiantes.

4. Actualizar datos:

UPDATE estudiantes

SET edad = 21

WHERE id = 1;

5. Eliminar datos:

DELETE FROM estudiantes

WHERE id = 1;

Actividad:

Crea una base de datos para almacenar información sobre libros (título, autor, género) y
realiza consultas básicas utilizando SQL.

7.4. Relaciones entre Tablas

En bases de datos relacionales, las tablas pueden estar relacionadas entre sí. Esto se logra
mediante claves foráneas que vinculan registros de diferentes tablas.

Ejemplo:
Supongamos que tenemos dos tablas: Estudiantes y Cursos. Un estudiante puede estar
inscrito en varios cursos, y un curso puede tener varios estudiantes.

• Tabla Estudiantes:

ID Estudiante Nombre Edad

1 Juan 20

2 María 22

• Tabla Cursos:

ID Curso Nombre del Curso ID Estudiante

101 Matemáticas 1

102 Biología 2

Relación:

• La columna ID Estudiante en la tabla Cursos es una clave foránea que se


refiere a la clave primaria ID Estudiante en la tabla Estudiantes.

Actividad:

Crea una relación entre las tablas Empleados y Proyectos, donde un empleado puede estar
asignado a varios proyectos.

7.5. Bases de Datos NoSQL

A diferencia de las bases de datos relacionales, las bases de datos NoSQL están diseñadas
para manejar grandes cantidades de datos no estructurados o semi-estructurados. Estas
bases de datos no utilizan tablas ni esquemas rígidos, lo que las hace más flexibles y
escalables.

Tipos de bases de datos NoSQL:

1. Documentos: Almacenan datos en formato de documentos (generalmente


JSON o BSON). Ejemplo: MongoDB.

2. Clave-valor: Almacenan datos como pares de clave y valor. Ejemplo: Redis.

3. Columnas: Organizan los datos en columnas en lugar de filas. Ejemplo:


Cassandra.

4. Grafos: Utilizan nodos y relaciones, ideales para datos de redes sociales o


conexiones. Ejemplo: Neo4j.

Actividad:

Instala MongoDB y crea una base de datos donde almacenes información sobre películas
(título, director, año). Usa operaciones de inserción, consulta y actualización.

7.6. Optimización de Consultas y Mantenimiento de Bases de Datos


Optimización de consultas:

A medida que las bases de datos crecen, las consultas pueden volverse lentas. Algunas
estrategias para optimizar el rendimiento son:

• Índices: Aceleran la búsqueda de registros en una tabla.

• Normalización: Organiza los datos en tablas para evitar redundancia y


mejorar la consistencia.

• Denormalización: A veces es necesario combinar datos de varias tablas para


mejorar la velocidad de las consultas.

Mantenimiento de bases de datos:

• Respaldos: Realizar copias de seguridad regulares para evitar la pérdida de


datos.

• Actualizaciones: Mantener el software de base de datos actualizado para


garantizar la seguridad y el rendimiento.

• Monitorización: Supervisar el rendimiento de la base de datos para detectar


posibles problemas.

Actividad:

Crea un índice para la columna nombre en la tabla estudiantes y evalúa cómo afecta al
rendimiento de las consultas.

Capítulo 8: Redes de Computadoras

8.1. Introducción a las Redes de Computadoras

Una red de computadoras es un conjunto de dispositivos interconectados entre sí para


compartir recursos e información. Estas redes pueden ser locales (LAN) o globales (WAN),
y permiten que las computadoras se comuniquen entre sí para intercambiar datos y
recursos, como impresoras o almacenamiento.

Elementos básicos de una red:

• Dispositivos: Computadoras, servidores, routers, switches, etc.

• Medios de transmisión: Cableado (como cables Ethernet) o tecnologías


inalámbricas (Wi-Fi, Bluetooth).

• Protocolos: Reglas que permiten la comunicación entre dispositivos. El


protocolo más común es TCP/IP.

• Redes: Conjunto de dispositivos interconectados, como LAN (Red de Área


Local) y WAN (Red de Área Amplia).

8.2. Tipos de Redes

1. LAN (Local Area Network):

• Es una red de área local, generalmente en un solo edificio o campus.


• Ejemplo: Red de una oficina o de una casa con múltiples dispositivos
conectados.

2. WAN (Wide Area Network):

• Es una red de área amplia, que cubre grandes distancias, como países o
continentes.

• Ejemplo: Internet, que conecta millones de dispositivos en todo el mundo.

3. MAN (Metropolitan Area Network):

• Es una red que cubre un área geográfica más grande que una LAN pero más
pequeña que una WAN, como una ciudad o un campus universitario.

4. PAN (Personal Area Network):

• Es una red para dispositivos personales, como una conexión Bluetooth entre
un teléfono y unos auriculares.

8.3. Protocolo TCP/IP

TCP/IP (Transmission Control Protocol / Internet Protocol) es el conjunto de protocolos de


comunicación que se utilizan para interconectar dispositivos en una red, como Internet.

Componentes del TCP/IP:

1. Capa de aplicación: Interactúa con el usuario final. Ejemplos: HTTP (para


páginas web), SMTP (para correo electrónico).

2. Capa de transporte: Controla el flujo de datos. Ejemplo: TCP (Protocolo de


Control de Transmisión) y UDP (Protocolo de Datagramas de Usuario).

3. Capa de Internet: Dirige los datos hacia su destino. Ejemplo: IP (Protocolo de


Internet).

4. Capa de enlace de datos: Controla la transmisión de datos en una red local.

Funcionamiento de TCP/IP:

Cuando un usuario solicita una página web, los datos se dividen en paquetes que viajan a
través de diferentes rutas en la red, y el protocolo TCP asegura que los paquetes lleguen
correctamente y se ensamblen nuevamente.

Actividad:

Investiga el comando ping en la terminal de tu sistema operativo y prueba realizar un ping a


una dirección IP o dominio. Observa cómo el comando mide la latencia entre tu dispositivo e
Internet.

8.4. Direcciones IP y Subredes

Dirección IP:

Cada dispositivo conectado a una red tiene una dirección única llamada Dirección IP. Esta
dirección se utiliza para identificar y comunicarse con otros dispositivos en la red.
• IPv4: Es la versión más común de las direcciones IP. Se representa en
cuatro grupos de números separados por puntos (por ejemplo, [Link]).

• IPv6: Es la versión más nueva, creada para solucionar la escasez de


direcciones IPv4. Se representa en ocho grupos de caracteres hexadecimales separados
por dos puntos.

Máscara de subred:

La máscara de subred divide la dirección IP en dos partes: una parte para identificar la red y
otra para identificar el dispositivo dentro de la red.

• Ejemplo de máscara de subred en IPv4: [Link].

• La máscara [Link] indica que los primeros tres octetos (192.168.0)


representan la red, y el último octeto (1) representa el dispositivo.

Actividad:

Crea una subred para una red de oficina con 100 dispositivos. Calcula la cantidad de
direcciones disponibles utilizando una máscara de subred adecuada.

8.5. Dispositivos de Red

Los dispositivos de red permiten la interconexión de diferentes equipos y facilitan la


comunicación de los mismos. Algunos de los dispositivos de red más comunes son:

1. Router:

• Enruta los datos entre diferentes redes, como entre una red local (LAN) y una
red externa (WAN).

• Asigna direcciones IP a los dispositivos dentro de una red local.

2. Switch:

• Conecta varios dispositivos dentro de una misma red local y permite que se
comuniquen entre sí.

• A diferencia de un hub, un switch dirige el tráfico solo al dispositivo que lo


necesita, lo que mejora la eficiencia.

3. Hub:

• Similar a un switch, pero no tiene la capacidad de dirigir el tráfico. Envía los


datos a todos los dispositivos de la red, lo que puede causar congestión.

4. Access Point (Punto de Acceso):

• Permite la conexión de dispositivos inalámbricos a una red local.

• Utiliza Wi-Fi para comunicar dispositivos con el resto de la red.

5. Firewall:
• Dispositivo o software que controla el acceso a una red, bloqueando o
permitiendo el tráfico según las reglas establecidas.

• Protege las redes de accesos no autorizados y ataques cibernéticos.

Actividad:

Crea un esquema de red para tu hogar o escuela, incluyendo todos los dispositivos y cómo
se conectan entre sí. Describe qué tipo de dispositivo utilizarías en cada parte de la red.

8.6. Seguridad en Redes

La seguridad de las redes es crucial para proteger la información y los dispositivos de


accesos no autorizados. Algunas prácticas de seguridad esenciales incluyen:

1. Contraseñas seguras:

Utiliza contraseñas largas y complejas para acceder a routers, redes Wi-Fi y otros
dispositivos de la red.

2. Cifrado de datos:

El cifrado convierte los datos en información ilegible para los que no tienen la clave.
Ejemplo: HTTPS en sitios web, WPA2 en redes Wi-Fi.

3. Firewall y antivirus:

Utiliza firewalls para bloquear accesos no deseados y programas antivirus para proteger los
dispositivos de malware.

4. VPN (Virtual Private Network):

Una VPN crea una conexión segura entre tu dispositivo y la red, protegiendo tu información
mientras navegas por Internet, especialmente en redes públicas.

Actividad:

Configura una red Wi-Fi con cifrado WPA2 y asegúrate de establecer una contraseña fuerte.
También, investiga cómo configurar un firewall básico en tu router.

8.7. Redes Inalámbricas (Wi-Fi)

Las redes Wi-Fi permiten la conexión de dispositivos sin cables, utilizando ondas de radio
para transmitir y recibir datos. Para configurar una red Wi-Fi, es necesario contar con un
router inalámbrico y configurar un SSID (nombre de la red) y una clave de acceso.

Características clave de Wi-Fi:

1. Estándares de Wi-Fi:

• 802.11a/b/g/n/ac: Estos estándares definen las velocidades y frecuencias de


las redes Wi-Fi.

• Wi-Fi 6 (802.11ax): Es la última versión, que ofrece mayor velocidad y


eficiencia en redes saturadas.
2. Rangos de frecuencia:

Las redes Wi-Fi operan principalmente en dos frecuencias: 2.4 GHz y 5 GHz.

• 2.4 GHz: Tiene mayor alcance pero menor velocidad.

• 5 GHz: Ofrece mayor velocidad pero menor alcance.

Actividad:

Crea una red Wi-Fi en tu hogar o escuela y prueba la velocidad utilizando una herramienta
como Speedtest. Luego, evalúa cómo varía la velocidad según la distancia al router y la
frecuencia utilizada.

Fin del Capítulo 8

Capítulo 9: Programación en Redes y Comunicación

9.1. Introducción a la Programación en Redes

La programación en redes es el proceso de desarrollar aplicaciones y herramientas que


permiten la comunicación y el intercambio de datos entre dispositivos a través de una red.
Las aplicaciones de red incluyen desde navegadores web hasta aplicaciones de mensajería
instantánea.

Las redes de computadoras pueden programarse mediante el uso de sockets, que permiten
que los dispositivos se comuniquen a través de la red, enviando y recibiendo datos.

Objetivos de este capítulo:

• Comprender los conceptos básicos de la programación en redes.

• Aprender a crear aplicaciones simples que se comuniquen entre sí a través


de la red.

9.2. Conceptos Clave de Programación en Redes

Sockets:

Un socket es un punto final de comunicación en una red. Permite la comunicación entre dos
programas que están en la misma red o en diferentes redes.

• Socket del cliente: El dispositivo o programa que solicita la conexión o los


datos.

• Socket del servidor: El dispositivo o programa que responde a las solicitudes


del cliente.

Modelo Cliente-Servidor:

El modelo cliente-servidor es la base de la mayoría de las aplicaciones de red. Un servidor


escucha solicitudes en un puerto específico, y un cliente envía esas solicitudes para obtener
respuestas.

Dirección IP y Puerto:
Cuando un dispositivo desea comunicarse con otro, necesita la dirección IP del dispositivo
destino y el número de puerto a través del cual se realizará la comunicación.

• Puerto: Un identificador que distingue diferentes servicios en el mismo


dispositivo. Ejemplo: el puerto 80 se utiliza para HTTP, el puerto 443 para HTTPS.

9.3. Programación de Sockets en Python

Python es un lenguaje de programación que facilita la creación de aplicaciones de red


gracias a su biblioteca estándar llamada socket.

Crear un servidor simple en Python:

Un servidor espera a que el cliente se conecte y luego responde con un mensaje.

import socket

# Configuración del servidor

servidor = [Link](socket.AF_INET, socket.SOCK_STREAM)

[Link](('localhost', 8080)) # Dirección y puerto

[Link](1)

print("Servidor esperando conexiones...")

conexion, direccion = [Link]() # Aceptar una conexión

print(f"Conexión establecida con {direccion}")

# Enviar un mensaje al cliente

mensaje = "¡Hola desde el servidor!"

[Link]([Link]()) # Codificar mensaje a bytes

[Link]() # Cerrar la conexión

Crear un cliente simple en Python:

El cliente se conecta al servidor y recibe el mensaje.

import socket

# Configuración del cliente

cliente = [Link](socket.AF_INET, socket.SOCK_STREAM)

[Link](('localhost', 8080)) # Dirección y puerto del servidor

# Recibir el mensaje del servidor

mensaje = [Link](1024).decode() # Decodificar los datos

print(f"Mensaje del servidor: {mensaje}")


[Link]() # Cerrar la conexión

Actividad:

Escribe y prueba un programa de cliente y servidor que intercambien mensajes en una red
local utilizando Python.

9.4. Protocolos de Comunicación

Los protocolos son las reglas que los dispositivos siguen para comunicarse en una red.
Algunos de los protocolos más importantes incluyen:

1. HTTP (Hypertext Transfer Protocol):

Utilizado para la transferencia de páginas web. Los navegadores web y servidores web
utilizan este protocolo para solicitar y entregar páginas HTML.

2. FTP (File Transfer Protocol):

Usado para la transferencia de archivos entre dispositivos en una red. FTP permite que los
usuarios suban y descarguen archivos de un servidor.

3. SMTP (Simple Mail Transfer Protocol):

Utilizado para el envío de correos electrónicos entre servidores.

4. DNS (Domain Name System):

Traduce los nombres de dominio de sitios web (como [Link]) a direcciones IP,
para que los dispositivos puedan encontrar esos sitios en la red.

Actividad:

Crea un script en Python que implemente un servidor FTP básico para cargar y descargar
archivos entre el servidor y un cliente.

9.5. Seguridad en la Programación de Redes

La seguridad en las redes es esencial para proteger los datos que se transmiten entre los
dispositivos. Aquí se presentan algunas prácticas clave para asegurar las comunicaciones
en red:

1. Cifrado de Datos:

El cifrado convierte los datos en un formato ilegible para quienes no tengan la clave para
descifrarla. Protocolos como SSL/TLS son utilizados para cifrar la comunicación web
(HTTPS).

2. Autenticación:

Asegura que los dispositivos o usuarios sean quienes dicen ser. Un ejemplo es el uso de
contraseñas o certificados digitales para verificar identidades.

3. Autorización:
Una vez autenticado un usuario, la autorización determina qué recursos o servicios puede
acceder. Ejemplo: un sistema de permisos en un servidor de archivos.

4. Firewall:

Un firewall es un dispositivo o software que filtra el tráfico de la red según reglas de


seguridad predefinidas. Ayuda a proteger los sistemas de accesos no autorizados.

5. Uso de VPNs:

Las VPNs (Virtual Private Networks) permiten que los datos se transmitan de manera
segura a través de redes públicas, como Internet, cifrando el tráfico para protegerlo de
escuchas no autorizadas.

Actividad:

Escribe un script que permita cifrar los mensajes enviados entre un cliente y un servidor
utilizando el módulo ssl de Python.

9.6. Comunicación Asíncrona y Multihilo en Redes

En aplicaciones de red, a menudo se necesitan manejar múltiples conexiones


simultáneamente, lo que puede requerir programación asíncrona o el uso de hilos.

1. Programación Asíncrona:

Permite que un programa maneje tareas múltiples sin bloquear la ejecución. Ideal para
aplicaciones que necesitan esperar respuestas de red, como solicitudes HTTP.

Ejemplo: Usando la librería asyncio en Python, se puede gestionar múltiples conexiones de


forma eficiente sin crear múltiples hilos.

2. Programación Multihilo:

Utiliza múltiples hilos para realizar varias tareas en paralelo. Ideal para servidores que
manejan múltiples conexiones de clientes al mismo tiempo.

Ejemplo: Utilizando la librería threading de Python, un servidor puede aceptar nuevas


conexiones en un hilo independiente para cada cliente.

Actividad:

Escribe un servidor que utilice programación multihilo para manejar múltiples conexiones de
clientes de manera simultánea.

9.7. Monitoreo y Diagnóstico de Redes

El monitoreo de redes es crucial para asegurar el rendimiento, la disponibilidad y la


seguridad de las redes. Algunas herramientas y técnicas comunes incluyen:

1. Ping:

Herramienta que permite verificar la conectividad entre dos dispositivos. Si un dispositivo


responde, significa que está activo y accesible.

2. Traceroute:
Permite rastrear la ruta de los paquetes a través de la red, identificando todos los routers
por los que pasa la información hasta llegar al destino.

3. Wireshark:

Herramienta de análisis de paquetes que permite capturar y examinar los datos que circulan
en una red. Ideal para diagnosticar problemas de red o analizar protocolos de
comunicación.

4. Nmap:

Herramienta utilizada para explorar redes y obtener información sobre los dispositivos y
servicios activos en ellas. Es útil para la administración de redes y la seguridad.

Actividad:

Usa ping y traceroute para diagnosticar la conexión entre tu dispositivo y un servidor de


Internet. Luego, utiliza Wireshark para capturar el tráfico generado por una de tus
aplicaciones de red.

Fin del Capítulo 9

Capítulo 10: Bases de Datos y su Integración en Redes

10.1. Introducción a las Bases de Datos

Una base de datos es un sistema organizado para almacenar, gestionar y recuperar


información de manera eficiente. Las bases de datos se utilizan en una variedad de
aplicaciones, desde sitios web hasta sistemas de gestión empresarial.

Objetivos de este capítulo:

• Comprender el papel de las bases de datos en las aplicaciones en red.

• Aprender los conceptos clave de bases de datos relacionales.

• Conocer cómo interactúan las bases de datos con aplicaciones en redes.

10.2. Tipos de Bases de Datos

1. Bases de Datos Relacionales (RDBMS):

• Utilizan tablas para almacenar datos. Cada tabla tiene filas (registros) y
columnas (campos).

• Ejemplos: MySQL, PostgreSQL, SQLite.

2. Bases de Datos No Relacionales (NoSQL):

• Almacenan datos de manera flexible, utilizando modelos como documentos,


clave-valor o grafos.

• Ejemplos: MongoDB, Cassandra, Redis.

Relación entre Bases de Datos y Redes:


Las bases de datos se utilizan comúnmente en aplicaciones web y móviles, donde se
almacenan y gestionan grandes cantidades de información. Estas bases de datos suelen
estar alojadas en servidores remotos y accesibles a través de redes, utilizando protocolos
como HTTP o SQL.

10.3. Introducción a SQL (Structured Query Language)

SQL es el lenguaje estándar utilizado para interactuar con bases de datos relacionales.
Permite a los usuarios realizar consultas, insertar, actualizar y eliminar datos.

Operaciones Básicas en SQL:

1. SELECT: Recupera datos de una base de datos.

2. INSERT: Inserta datos en una tabla.

3. UPDATE: Actualiza registros existentes.

4. DELETE: Elimina registros de una tabla.

Ejemplo de consulta SQL:

SELECT nombre, edad FROM estudiantes WHERE edad > 18;

Esta consulta obtiene los nombres y edades de los estudiantes cuya edad es mayor a 18.

10.4. Creación de una Base de Datos Relacional

Supongamos que queremos crear una base de datos para gestionar información de
estudiantes. Primero, creamos la base de datos y las tablas correspondientes.

1. Crear una base de datos:

CREATE DATABASE escuela;

2. Crear una tabla:

CREATE TABLE estudiantes (

id INT PRIMARY KEY,

nombre VARCHAR(100),

edad INT,

curso VARCHAR(50)

);

3. Insertar datos en la tabla:

INSERT INTO estudiantes (id, nombre, edad, curso)

VALUES (1, 'Juan Pérez', 20, 'Matemáticas');

Actividad:
Crea una base de datos para gestionar un sistema de libros de una biblioteca, con tablas
para “libros” y “autores”, e inserta algunos registros.

10.5. Conexión de una Aplicación a una Base de Datos en una Red

Las aplicaciones que utilizan bases de datos suelen estar distribuidas, con la base de datos
en un servidor remoto al que los clientes acceden a través de una red. Para conectar una
aplicación a una base de datos, es necesario usar un controlador o biblioteca que permita la
comunicación entre ambos.

Conexión a una base de datos en Python (usando MySQL):

import [Link]

# Conectar a la base de datos

conexion = [Link](

host="localhost",

user="root",

password="mi_contraseña",

database="escuela"

cursor = [Link]()

# Realizar una consulta

[Link]("SELECT * FROM estudiantes")

resultado = [Link]()

# Mostrar los resultados

for estudiante in resultado:

print(estudiante)

# Cerrar la conexión

[Link]()

Actividad:

Desarrolla un pequeño programa que permita a un cliente consultar y añadir nuevos


estudiantes a la base de datos de “escuela” utilizando Python.

10.6. Bases de Datos en la Web y Servicios RESTful

Las aplicaciones web modernas suelen usar servicios RESTful para interactuar con bases
de datos. Un servicio RESTful utiliza el protocolo HTTP y las operaciones CRUD (Crear,
Leer, Actualizar, Eliminar) para interactuar con los datos.
Endpoints RESTful comunes:

• GET: Recupera datos.

• POST: Crea nuevos registros.

• PUT: Actualiza registros existentes.

• DELETE: Elimina registros.

Ejemplo de un servicio RESTful en Python (usando Flask):

from flask import Flask, request, jsonify

import [Link]

app = Flask(__name__)

@[Link]('/estudiantes', methods=['GET'])

def obtener_estudiantes():

conexion = [Link](

host="localhost",

user="root",

password="mi_contraseña",

database="escuela"

cursor = [Link]()

[Link]("SELECT * FROM estudiantes")

estudiantes = [Link]()

[Link]()

return jsonify(estudiantes)

@[Link]('/estudiantes', methods=['POST'])

def agregar_estudiante():

nuevo_estudiante = [Link]

nombre = nuevo_estudiante['nombre']

edad = nuevo_estudiante['edad']
curso = nuevo_estudiante['curso']

conexion = [Link](

host="localhost",

user="root",

password="mi_contraseña",

database="escuela"

cursor = [Link]()

[Link]("INSERT INTO estudiantes (nombre, edad, curso) VALUES (%s, %s,


%s)",

(nombre, edad, curso))

[Link]()

[Link]()

return 'Estudiante agregado', 201

if __name__ == '__main__':

[Link](debug=True)

Actividad:

Crea una API RESTful con Flask que permita realizar operaciones CRUD sobre una base
de datos de estudiantes.

10.7. Optimización y Escalabilidad de Bases de Datos en Redes

A medida que las aplicaciones crecen y más usuarios acceden a la base de datos, es
fundamental optimizar el rendimiento de la base de datos para manejar la carga. Algunas
técnicas incluyen:

1. Índices:

Los índices mejoran la velocidad de las consultas, especialmente cuando se busca


información específica en tablas grandes.

2. Sharding:

Se divide la base de datos en varias partes (shards), cada una almacenada en un servidor
diferente. Esto ayuda a distribuir la carga de trabajo.
3. Caché:

Almacenar temporalmente los datos en una memoria más rápida (como Redis o
Memcached) para evitar consultas repetitivas a la base de datos.

4. Replicación:

Mantener copias de la base de datos en varios servidores para garantizar la disponibilidad y


mejorar el rendimiento.

Actividad:

Investiga y explica cómo se implementa la replicación en bases de datos como MySQL o


PostgreSQL y cómo mejora la disponibilidad.

Fin del Capítulo 10

Capítulo 11: Desarrollo de Aplicaciones Web con Backend y Frontend

11.1. Introducción al Desarrollo Web

El desarrollo web se divide en dos partes principales: Frontend y Backend.

• Frontend: Se refiere a todo lo que los usuarios ven e interactúan en su


navegador web. Incluye diseño, estructura y comportamiento de la interfaz de usuario.

• Backend: Es el “motor” detrás de la aplicación. Maneja las bases de datos, la


lógica del servidor y la interacción entre el cliente y el servidor.

Objetivos de este capítulo:

• Comprender las diferencias entre el frontend y el backend.

• Aprender a desarrollar aplicaciones web usando herramientas y tecnologías


modernas.

11.2. Frontend: Tecnologías y Herramientas

El frontend se desarrolla utilizando HTML, CSS y JavaScript.

HTML (HyperText Markup Language):

HTML es el lenguaje de marcado utilizado para estructurar las páginas web. Permite crear
encabezados, párrafos, enlaces, imágenes y otros elementos.

Ejemplo básico de HTML:

<!DOCTYPE html>

<html lang="es">

<head>

<meta charset="UTF-8">

<title>Mi Página Web</title>


</head>

<body>

<h1>Bienvenido a mi página web</h1>

<p>Este es un párrafo de texto en mi página.</p>

</body>

</html>

CSS (Cascading Style Sheets):

CSS se utiliza para definir el estilo visual de los elementos HTML. Permite cambiar colores,
fuentes, márgenes y otros aspectos visuales.

Ejemplo básico de CSS:

body {

font-family: Arial, sans-serif;

background-color: #f0f0f0;

h1 {

color: blue;

JavaScript:

JavaScript es un lenguaje de programación que se utiliza para hacer que las páginas web
sean interactivas. Permite crear formularios, animaciones y responder a eventos del
usuario.

Ejemplo básico de JavaScript:

<!DOCTYPE html>

<html lang="es">

<head>

<meta charset="UTF-8">

<title>Interactividad con JavaScript</title>

<script>

function saludar() {

alert("¡Hola, bienvenido a mi página!");


}

</script>

</head>

<body>

<h1>Bienvenido a mi página</h1>

<button onclick="saludar()">Haz clic para saludar</button>

</body>

</html>

Actividad:

Crea una página web sencilla que muestre tu nombre, edad, y un botón que, al hacer clic,
muestre un mensaje con tu nombre.

11.3. Backend: Lenguajes y Frameworks

El backend se refiere a la parte de la aplicación que maneja la lógica, la base de datos y la


interacción con el frontend. Algunos lenguajes de programación populares para el backend
son Python, [Link], Ruby y PHP.

Python (Flask):

Flask es un micro-framework de Python que facilita la creación de aplicaciones web.


Permite crear aplicaciones backend sencillas y eficientes.

Ejemplo básico con Flask (Python):

from flask import Flask

app = Flask(__name__)

@[Link]('/')

def hello_world():

return '¡Hola, mundo desde el backend!'

if __name__ == '__main__':

[Link](debug=True)

Este servidor básico responde con “¡Hola, mundo desde el backend!” cuando se accede a la
raíz (/) de la aplicación.

[Link] (Express):

Express es un framework minimalista para [Link], que facilita la creación de aplicaciones


web.
Ejemplo básico con Express ([Link]):

const express = require('express');

const app = express();

[Link]('/', (req, res) => {

[Link]('¡Hola, mundo desde el backend!');

});

[Link](3000, () => {

[Link]('Servidor escuchando en el puerto 3000');

});

Actividad:

Escribe un servidor en Flask o Express que devuelva un mensaje personalizado cuando se


acceda a una URL específica.

11.4. Bases de Datos en el Backend

El backend interactúa con bases de datos para almacenar y recuperar información. Las
aplicaciones web a menudo utilizan bases de datos relacionales (SQL) o no relacionales
(NoSQL).

Ejemplo de conexión con MySQL en Python (Flask):

import [Link]

from flask import Flask

app = Flask(__name__)

@[Link]('/')

def obtener_datos():

conexion = [Link](

host="localhost",

user="root",

password="mi_contraseña",

database="escuela"

cursor = [Link]()

[Link]("SELECT * FROM estudiantes")


resultado = [Link]()

[Link]()

return str(resultado)

if __name__ == '__main__':

[Link](debug=True)

Este código conecta una aplicación Flask a una base de datos MySQL y devuelve todos los
estudiantes registrados en la base de datos.

Actividad:

Desarrolla una pequeña aplicación web que permita a los usuarios agregar y mostrar
estudiantes desde una base de datos.

11.5. Integración de Frontend y Backend

Una vez que el frontend y el backend están listos, es necesario integrar ambos para que la
aplicación funcione como una unidad coherente.

API RESTful para la integración:

Una forma común de integrar frontend y backend es mediante APIs RESTful. El frontend
puede hacer solicitudes HTTP a la API del backend y mostrar los datos que recibe.

Ejemplo de integración con Fetch (JavaScript):

fetch('[Link]

.then(response => [Link]())

.then(data => {

[Link](data);

});

En este ejemplo, el frontend (usando JavaScript) realiza una solicitud GET a un servidor
backend que devuelve una lista de estudiantes en formato JSON.

Actividad:

Crea un formulario en HTML que permita agregar un nuevo estudiante, y al enviar el


formulario, haga una solicitud POST al backend para guardar los datos en la base de datos.

11.6. Despliegue de Aplicaciones Web

El despliegue es el proceso de hacer que una aplicación esté disponible para los usuarios
en Internet. Para ello, las aplicaciones se suben a un servidor web y se asigna un dominio.

Pasos básicos para desplegar una aplicación web:


1. Seleccionar un servidor: Puede ser un servidor dedicado, un VPS o servicios
en la nube como Heroku, AWS o Google Cloud.

2. Configurar el servidor: Instalar las dependencias necesarias (como Python,


[Link], bases de datos, etc.).

3. Subir el código y los archivos: Usar FTP o herramientas como Git para
transferir el código.

4. Asignar un dominio: Utilizar servicios como GoDaddy o Namecheap para


registrar un dominio y apuntarlo al servidor.

Actividad:

Investiga cómo desplegar una aplicación web en Heroku o GitHub Pages, y despliega tu
aplicación de ejemplo.

Fin del Capítulo 11

Capítulo 12: Seguridad en Aplicaciones y Redes

12.1. Introducción a la Seguridad Informática

La seguridad informática se refiere a las prácticas, tecnologías y conceptos utilizados para


proteger la integridad, confidencialidad y disponibilidad de la información y los sistemas
informáticos. La seguridad es fundamental en todas las aplicaciones y redes, ya que las
amenazas externas e internas pueden poner en riesgo datos valiosos y la privacidad de los
usuarios.

Objetivos de este capítulo:

• Comprender la importancia de la seguridad en el desarrollo de aplicaciones y


redes.

• Aprender los conceptos clave de seguridad informática.

• Aplicar prácticas de seguridad en aplicaciones web y redes.

12.2. Principios Básicos de la Seguridad

1. Confidencialidad:

Asegurar que la información solo sea accesible por personas o sistemas autorizados.

2. Integridad:

Garantizar que los datos no sean alterados de manera no autorizada.

3. Disponibilidad:

Asegurar que los datos y servicios estén disponibles para los usuarios cuando los
necesiten.

4. Autenticación y Autorización:

• Autenticación: Proceso de verificar la identidad de un usuario o sistema.


• Autorización: Determinar los privilegios y permisos que tiene un usuario o
sistema.

5. No Repudio:

Asegurar que una acción realizada no pueda ser negada por la persona o sistema que la
realizó.

12.3. Amenazas Comunes en la Seguridad Informática

1. Ataques de Phishing:

Son intentos fraudulentos para obtener información sensible, como contraseñas y datos
bancarios, haciéndose pasar por una entidad confiable.

2. Malware (software malicioso):

Programas diseñados para dañar, interrumpir o robar datos. Los tipos comunes incluyen
virus, troyanos, ransomware y spyware.

3. Ataques de Denegación de Servicio (DoS/DDoS):

Consisten en sobrecargar un servidor o red con tráfico falso para hacer que el sistema
quede inoperativo.

4. Inyección SQL:

Es un tipo de ataque que explota vulnerabilidades en las aplicaciones web que interactúan
con bases de datos. El atacante puede ejecutar comandos SQL maliciosos.

5. Man-in-the-Middle (MitM):

En este ataque, un tercero intercepta y puede alterar la comunicación entre dos partes.

Actividad:

Investiga qué medidas preventivas se pueden tomar para evitar ataques de phishing y
malware en una red empresarial.

12.4. Seguridad en el Desarrollo de Aplicaciones Web

Las aplicaciones web están expuestas a diversos riesgos de seguridad debido a su


accesibilidad a través de Internet. Existen varios enfoques para proteger estas aplicaciones.

1. Validación de Entradas:

Asegurarse de que los datos ingresados por los usuarios sean seguros y estén
correctamente formateados antes de ser procesados por la aplicación.

2. Uso de HTTPS:

El protocolo HTTPS asegura que los datos entre el cliente y el servidor se transmitan de
forma cifrada, protegiendo la confidencialidad de la información.

3. Autenticación Segura:
Utilizar técnicas como el hash de contraseñas y autenticación de dos factores (2FA) para
aumentar la seguridad de las aplicaciones.

4. Protección contra Inyecciones SQL:

Usar consultas preparadas y ORM (Object-Relational Mapping) para prevenir inyecciones


SQL.

Ejemplo de autenticación segura en Python (Flask):

from flask import Flask, request, redirect, url_for, session

from [Link] import generate_password_hash, check_password_hash

app = Flask(__name__)

app.secret_key = 'mi_clave_secreta'

usuarios = {'usuario1': generate_password_hash('mi_contraseña_segura')}

@[Link]('/login', methods=['GET', 'POST'])

def login():

if [Link] == 'POST':

username = [Link]['username']

password = [Link]['password']

if username in usuarios and check_password_hash(usuarios[username], password):

session['usuario'] = username

return redirect(url_for('bienvenida'))

else:

return 'Usuario o contraseña incorrectos'

return '''

<form method="post">

Usuario: <input type="text" name="username"><br>

Contraseña: <input type="password" name="password"><br>

<input type="submit" value="Iniciar sesión">

</form>

'''
@[Link]('/bienvenida')

def bienvenida():

if 'usuario' in session:

return f'¡Bienvenido {session["usuario"]}!'

return redirect(url_for('login'))

if __name__ == '__main__':

[Link](debug=True)

Actividad:

Desarrolla una aplicación web simple en Flask que permita a los usuarios registrarse y
hacer login de manera segura usando un sistema de contraseñas encriptadas.

12.5. Seguridad en Redes

La seguridad en redes se refiere a las medidas tomadas para proteger la infraestructura y


los datos que circulan por la red. Algunas de las mejores prácticas incluyen:

1. Firewall:

Un firewall actúa como una barrera entre una red interna confiable y redes externas no
confiables, como Internet. Filtra el tráfico entrante y saliente para bloquear accesos no
autorizados.

2. Cifrado de Datos:

El cifrado asegura que los datos transmitidos por la red estén protegidos. Protocolos como
SSL/TLS se utilizan para cifrar la comunicación entre clientes y servidores.

3. VPN (Red Privada Virtual):

Las VPNs permiten a los usuarios conectarse a redes privadas de manera segura a través
de Internet, asegurando la confidencialidad y la integridad de los datos.

4. Segmentación de Redes:

Dividir una red en segmentos más pequeños (subredes) puede ayudar a contener los daños
de un ataque, limitando el acceso no autorizado.

Actividad:

Configura un firewall básico utilizando iptables en Linux para bloquear el acceso no


autorizado a ciertos puertos.

12.6. Pruebas de Seguridad: PenTesting y Auditoría

El Penetration Testing (PenTesting) o prueba de penetración es una técnica utilizada para


evaluar la seguridad de un sistema o red mediante simulaciones de ataques.

1. Escaneo de Vulnerabilidades:
Herramientas como Nmap o OpenVAS se utilizan para identificar vulnerabilidades en
sistemas y redes.

2. Explotación de Vulnerabilidades:

Una vez identificadas las vulnerabilidades, los pentesters intentan explotarlas para
determinar el nivel de acceso que pueden obtener.

3. Informe de Seguridad:

Después de realizar las pruebas, los pentesters elaboran un informe detallado sobre las
vulnerabilidades encontradas y las recomendaciones para solucionarlas.

Actividad:

Realiza un escaneo de vulnerabilidades utilizando Nmap y analiza los resultados para


identificar posibles riesgos de seguridad.

12.7. Buenas Prácticas de Seguridad

1. Mantener el software actualizado:

Los parches de seguridad deben instalarse tan pronto como estén disponibles para evitar
que las vulnerabilidades sean explotadas.

2. Controlar el acceso a los sistemas:

Asignar permisos de usuario mínimos y usar autenticación multifactor (MFA) para aumentar
la seguridad.

3. Monitorear y responder ante incidentes:

Implementar sistemas de monitoreo de seguridad para detectar comportamientos


sospechosos y tener planes de respuesta a incidentes.

Actividad:

Elabora un plan de respuesta a incidentes de seguridad para una pequeña red doméstica o
empresa.

Fin del Capítulo 12

Este es el último capítulo del curso de Ingeniería Informática:

Capítulo 13: Proyecto Final: Desarrollo de una Aplicación Completa

13.1. Introducción al Proyecto Final

En este capítulo, los estudiantes aplicarán los conocimientos adquiridos en el curso para
desarrollar una aplicación completa. Este proyecto final les permitirá consolidar sus
habilidades en programación, desarrollo web, bases de datos, seguridad y redes.

El proyecto consistirá en la creación de una aplicación web interactiva que incluya tanto un
frontend como un backend, con funcionalidades de usuario, autenticación y conexión a
bases de datos.
Objetivos de este capítulo:

• Planificar y desarrollar una aplicación web desde cero.

• Aplicar los principios de desarrollo web y seguridad en una solución real.

• Implementar buenas prácticas en programación y documentación.

13.2. Planificación del Proyecto

Antes de comenzar a escribir código, es importante planificar la aplicación:

1. Definir el propósito de la aplicación:

Decide qué tipo de aplicación vas a desarrollar. Algunas ideas de proyectos podrían ser:

• Una aplicación de gestión de tareas.

• Una aplicación de registro de estudiantes.

• Una red social simple para mensajes.

2. Decidir las funcionalidades clave:

Algunas funcionalidades que podrías incluir son:

• Autenticación de usuarios (registro e inicio de sesión).

• CRUD de datos (crear, leer, actualizar y eliminar).

• Interacción en tiempo real (por ejemplo, un chat en vivo).

3. Diseñar la base de datos:

Planifica las tablas y relaciones de la base de datos. Por ejemplo, si estás creando una
aplicación de gestión de estudiantes, tu base de datos podría tener las siguientes tablas:

• Estudiantes: nombre, edad, curso.

• Profesores: nombre, asignaturas.

• Clases: clase, hora, profesor.

Actividad:

Haz un esquema básico de tu aplicación. Piensa en las funcionalidades que quieres incluir,
el diseño y las tecnologías que usarás.

13.3. Desarrollo del Frontend

El frontend será responsable de la interfaz de usuario. En este paso, deberás crear las
páginas que permitirán a los usuarios interactuar con la aplicación.

1. Estructura HTML:
Diseña las páginas necesarias, como la página de inicio, la página de login y la página de
registro.

2. Estilos con CSS:

Aplica estilos para que tu aplicación sea visualmente atractiva y fácil de usar.

3. Interactividad con JavaScript:

Usa JavaScript para crear interacciones en la página, como formularios dinámicos y


validación de entradas.

Actividad:

Desarrolla la página de inicio y la página de inicio de sesión para tu aplicación.

13.4. Desarrollo del Backend

El backend gestionará la lógica del servidor, la autenticación de usuarios y la interacción


con la base de datos.

1. Configurar el servidor:

Si estás usando Python con Flask o [Link] con Express, crea un servidor que pueda
manejar solicitudes HTTP.

2. Conexión a la base de datos:

Crea las conexiones necesarias a la base de datos para almacenar los datos de los
usuarios, productos, o cualquier entidad relevante para tu aplicación.

3. Desarrollar API RESTful:

Crea rutas para permitir que el frontend interactúe con el backend. Por ejemplo, las rutas
podrían incluir:

• POST /login: Autenticación de usuario.

• GET /estudiantes: Obtener todos los estudiantes.

• POST /estudiantes: Crear un nuevo estudiante.

Actividad:

Desarrolla el backend para manejar el registro y el inicio de sesión de los usuarios.

13.5. Integración del Frontend y Backend

El siguiente paso es integrar el frontend y el backend para que trabajen juntos de forma
fluida.

1. Realizar solicitudes AJAX:

El frontend debe hacer solicitudes al backend utilizando AJAX o fetch para obtener y enviar
datos sin recargar la página.
2. Manejo de respuestas del servidor:

Asegúrate de que el frontend maneje adecuadamente las respuestas del servidor, como la
confirmación de que un usuario se ha autenticado correctamente.

3. Validación del lado del cliente y del servidor:

Asegúrate de validar las entradas del usuario tanto en el frontend (para una mejor
experiencia) como en el backend (para la seguridad).

Actividad:

Integra las funcionalidades de inicio de sesión y registro con el frontend y el backend,


asegurando que el usuario pueda interactuar correctamente con la aplicación.

13.6. Seguridad en el Proyecto

A lo largo del proyecto, es importante aplicar principios de seguridad para proteger la


información de los usuarios y prevenir vulnerabilidades.

1. Cifrado de contraseñas:

Asegúrate de que las contraseñas de los usuarios estén cifradas utilizando algoritmos como
bcrypt.

2. Validación de entradas:

Asegúrate de que los datos enviados por los usuarios sean válidos y no contengan código
malicioso (como en las inyecciones SQL).

3. Protección contra ataques comunes:

Aplica medidas de seguridad para proteger la aplicación de ataques como XSS (Cross-Site
Scripting) y CSRF (Cross-Site Request Forgery).

Actividad:

Revisa las vulnerabilidades comunes de seguridad en tu aplicación y aplica las mejores


prácticas para protegerla.

13.7. Despliegue de la Aplicación

Una vez que la aplicación esté completa, es hora de desplegarla para que los usuarios
puedan acceder a ella en Internet.

1. Seleccionar un servicio de despliegue:

Algunos servicios populares para desplegar aplicaciones web son Heroku, Netlify, AWS y
DigitalOcean.

2. Configurar el servidor:

Si usas un servidor propio, asegúrate de configurar el entorno de producción (como base de


datos, servidor web, etc.).

3. Subir el código y poner en marcha la aplicación:


Usa herramientas como Git para cargar el código en el servidor y poner la aplicación en
producción.

Actividad:

Despliega tu aplicación web en un servicio en la nube y verifica que funcione correctamente.

13.8. Documentación del Proyecto

Una parte importante de cualquier proyecto es la documentación. La documentación ayuda


a otros (y a ti mismo) a entender cómo funciona el proyecto y cómo usarlo.

1. Descripción del proyecto:

Escribe una breve descripción de lo que hace tu aplicación.

2. Guía de instalación:

Proporciona instrucciones claras sobre cómo instalar y ejecutar tu proyecto localmente.

3. Guía de uso:

Explica cómo utilizar las principales funcionalidades de la aplicación.

Actividad:

Escribe la documentación para tu proyecto, incluyendo la descripción, la guía de instalación


y la guía de uso.

Fin del Capítulo 13 y Finalización del Curso

Este capítulo marca el cierre del curso de Ingeniería Informática. Ahora, con todos los
conocimientos adquiridos, deberías ser capaz de desarrollar aplicaciones web completas,
implementar prácticas de seguridad y comprender los fundamentos de redes y
programación. ¡Enhorabuena por haber completado el curso!

También podría gustarte