Introducción a la Ciencia de la Computación

Jul 17, 2024

Introducción a la Ciencia de la Computación

Conceptos Básicos

  • Error en el código: No hacer nada y ejecutar nuevamente. Si persiste, se necesita un conocimiento más profundo.
  • Software Engineering: Se puede aprender a programar y conseguir un trabajo bien pagado sin saber cómo funciona todo.

Fundamentos del Computador

  • Turing Machine: Puede computar cualquier cosa en teoría.
  • CPU: Unidad Central de Procesamiento.
    • Contiene miles de millones de transistores (interruptores microscópicos).
    • Bit: El valor de uno de estos interruptores.
    • Byte: Conjunto de 8 bits.
    • Codificación de caracteres: ASCII, UTF-8.
  • Sistema Binario: Base de conteo usada por los computadores (0 y 1).
    • Representación en Hexadecimal (base 16).
  • RAM: Memoria de Acceso Aleatorio, función de almacenamiento temporal de datos.
  • Dispositivos de Entrada y Salida: Teclado, mouse y monitor.
  • Sistemas Operativos: Linux, Mac, Windows.

Shell y Programación

  • Shell: Programa que expone el sistema operativo al usuario.
  • Secure Shell (SSH): Conecta computadoras remotamente.
  • Lenguajes de Programación: Herramientas que abstraen la complejidad del hardware.
    • Python: Interpretado.
    • C++: Compilado.
  • Tipos de Datos: Enteros (int), punto flotante (float), caracteres (char), cadenas de texto (string).
  • Variables: Almacenan datos bajo un nombre específico.
  • Gestión de Memoria: Garbage Collector (recolección de basura).

Estructuras de Datos

  • Array/List: Lista ordenada de elementos con un índice.
  • Linked List: Lista donde cada elemento apunta al siguiente.
  • Stack: Último en entrar, primero en salir (LIFO).
  • Queue: Primero en entrar, primero en salir (FIFO).
  • Hash/Map/Dictionary: Colección de pares clave-valor.
  • Trees: Nodos organizados en una jerarquía.
  • Graphs: Nodos conectados de forma arbitraria.

Algoritmos y Funciones

  • Algoritmos: Código que resuelve un problema.
  • Funciones: Bloques de código con nombre, input y output.
    • Comparaciones usando operadores.
    • Booleanos: true/false.
  • Condicionales: if, else.
  • Loops: while, for.
  • Recursión: Función que se llama a sí misma.
  • Big-O Notation: Mide complejidad temporal/espacial de un algoritmo.
  • Tipos de Algoritmos: Fuerza bruta, divide y vencerás, programación dinámica, greedy, backtracking.

Paradigmas de Programación

  • Declarativo: Describe qué hace el programa sin preocuparse por el control de flujo.
  • Imperativo: Usa statements explícitos sobre cómo producir un resultado.
  • Programación Orientada a Objetos (OOP): Uso de clases y objetos.
    • Clases: Plantillas para datos y funciones.
    • Instanciación: Creación de objetos.
    • Heap Memory: Memoria de larga duración.
    • Herencia: Compartir comportamientos entre clases.

Concurrencia y Computación en la Nube

  • Hilos: Ejecución paralela en CPU.
  • Modelos de Concurrencia: Event loop, co-rutinas.
  • Máquina Virtual: Software que simula hardware.
    • IP y DNS: Direcciones y servicios de nombres de dominio.
  • TCP Handshake y SSL: Seguridad y comunicación en la red.
  • HTTP y APIs: Protocolo de transferencia de hipertexto y interfaces de programación de aplicaciones.
  • Carga Útil: Implementación práctica y uso de impresoras.

Conclusión

  • Impresoras: Comprender su funcionamiento para resolver problemas comunes.

¡Gracias por ver y nos vemos en el próximo video!