Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
San Pedro, Montes de Oca

Grupo 02: L 16-17:50, J 16-18:50 205-IF
Prof. Jeisson Hidalgo-Céspedes
Asistente: Emilia Víquez Mora

Recurso Peso Descripción

Carta al estudiante

 — 

Programa del curso y acuerdos

Aula virtual

 — 

En Mediación Virtual

Material del curso

 — 

Material de referencia

Ejemplos

 — 

Ejemplos hechos en clase

Ejercicios

30%

Lista de ejercicios a entregar en control de versiones

Quices

20%

En papel durante las lecciones presenciales

Proyecto

15%

Convertir números a palabras [29-jul 12 m.n]

Examen01

15%

Examen de cátedra coordinado [29-jun 11am]

Examen02

20%

Examen parcial [28-jul 4 p.m]

Otros recursos

 — 

Presentación paradigmas de computación
Línea de tiempo historia de la computación

Filosofía de la computación

L28-mar Gr02

Carta al estudiante

📹

Filosofía de la computación (incompleto)

📹

Resolución de problemas

L04-abr Gr02

Resolución de problemas

📹

Solución al problema de misioneros y caníbales

📹

Métodos y proceso de resolución de problemas

L18-abr Gr02

Métodos de resolución de problemas

📹

Problema de los números enemistados

📹

Solución al problema de los números enemistados

📹

Proceso de resolución de problemas

📹

Control de versiones con interfaz gráfica

M20-abr Gr02

Clientes gráficos de Git (TortoiseGit). Clonar repositorio (clone)

📹

Hiperenlaces en Markdown

📹

Estado del repositorio (status) y comparar archivos en forma gráfica (diff)

📹

Agregar cambios (add) y hacer un commit con interfaz gráfica

📹

Enviar cambios (push) al repositorio remoto/origen

📹

Hacer un commit desde el cliente web de GitLab

📹

Actualizar el repositorio local respecto al remoto/origen (fetch y pull)

📹

Educación de la computación

J21-abr Gr02

Educación de la computación

📹

Énfasis de la computación: EE, CE, CS, SE, IT

📹

Recursos de la computadora: procesamiento, almacenamiento, comunicación

📹

Paradigmas de computación

L25-abr Gr02

Paradigmas de computación/programación

📹

Problema de los apretones de mano

📹

Problema del ejército que cruza el río. Modelo funcional vs procedimental

📹

Algoritmos para seres humanos

J28-abr Gr02

Paradigma procedimental. Algoritmos

📹

Algoritmos para seres humanos. Algoritmo para bañarse. Modelo cognitivo

📹

Algoritmos para computadoras

L02-may Gr02

Los ocho tipos de instrucciones. Problema del índice de masa corporal. Análisis. Pseudocódigo. Diagramas de flujo

📹

J05-may Gr02

Repaso: algoritmos para máquinas, problema de índice de masa corporal (IMC)

📹

Pseudocódigo de la subrutina principal del IMC

📹

Diagrama de flujo de la subrutina principal

📹

Procesar todas las personas en la entrada. Repetir la ejecución de instrucciones

📹

Caricatura: informáticos y usuarios. Colores en el diagrama de flujo

📹

Corregir el diseño vs corregir la implementación. Funciones. Valores de retorno

📹

Procedimientos vs funciones

📹

Diagrama de flujo de una función

📹

Función para clasificar el IMC por estado nutricional

📹

Probar el algoritmo. Rastreo del programa

📹

Exportar el diagrama de flujo a SVG

📹

PseInt: Intérprete de pseudocódigo

L09-may Gr02

Repaso de la solución al índice de masa corporal en pseudocódigo y diagrama de flujo

📹

PSeInt. Identificadores. snake_case. CamelCase. Algoritmo vs proceso

📹

Programa en lote vs interactivo. Repetir mientras vs repetir hasta

📹

Los programas interactivos conversan con los usuarios. Hacer preguntas al usuario

📹

Condicionar la ejecución de instrucciones

📹

Funciones. Argumentos. Parámetros. Variables locales. Valor de retorno

📹

Generar un diagrama de flujo con PSeInt

📹

Invocar o llamar una función

📹

Diferencia entre definir una variable y asignar una variable (cambiarle el valor)

📹

Clasificar por estado nutricional. Cadenas de if-else

📹

Exportar a código fuente con PSeInt

📹

Acumuladores. Calculadoras mecánicas

J12-may Gr02

Las computadoras heredan de las calculadoras

📹

El ábaco: el procesador es la persona

📹

La calculadora de Schickard

📹

La Pascalina: un acumulador en base 10 mecánico con ruedas dentadas

📹

La calculadora de Leibniz

📹

El aritmómetro

📹

Diferencias entre la aritmética de computadoras y personas

📹

Problema del sumador de n dígitos en base 10

📹

Representar un acumulador como un arreglo de números

📹

Leer un número y separar sus dígitos en PSeInt

📹

Almacenar los dígitos en acumuladores de tamaño arbitrario en PSeInt

📹

Algoritmo de la suma para acumuladores de n-bits

📹

Aritmética de precisión arbitraria

📹

Arimética de precisión fija

📹

Aritmética de precisión fija

L23-may Gr02

Aritmética sin signo, signo/magnitud, complemento a dos, y en exceso-k

📹

Aritmética de precisión flotante

J26-may Gr02

Conversión de reales en decimal a punto flotante en IEEE 574

📹

Conversión de punto flotante en IEEE 754 a real en base 10

📹

Compuertas lógicas

L30-may Gr02

Lógica booleana. Diseño digital. Compuertas lógicas. Circuitos digitales.

📹

Circuito comparador. Sumador

J02-jun Gr02

Circuito comparador de 1, 2, y n-bits

📹

Circuito sumador de 1, 2, y 4 bits

📹

LogiSim

📹

Multiplexor. Expresiones en Python

J09-jun Gr02

Multiplexores (parte 1)

📹

Multiplexores (parte 2)

📹

Expresiones en Python

📹

Octal. Hexadecimal. f-string

L13-jun Gr02

Solución Quiz06. Octal. Hexadecimal. Textos con formato en Python3 (f-strings)

📹

Decodificador. Memoria. HackerRank

J16-jun Gr02

Decodificador. Almacenar un bit (flip-flop). Memoria RAM

📹

Juez en línea: HackerRank

📹

Arquitectura de von Neumann

L20-jun Gr02

Registro de CPU. RAM. Prefijos binarios

📹

La unidad de control de CPU (CU)

📹

La unidad aritmético-lógica (ALU)

📹

Ciclo de instrucción

J23-jun Gr02

Ciclo de instrucción. Carga de instrucción (fetch)

📹

Decodificación y ejecución de la instrucción

📹

Lenguaje ensamblador. Lenguaje de alto nivel

📹

Código máquina hexadecimal

J30-jun Gr02

Repaso de la arquitectura de von Neumann (en binario)

📹

Repaso de ejecución de una instrucción (en binario)

📹

Concepto de software

📹

RISC vs CISC, el ejemplo de Apple

📹

Una arquitectura más realista, con instrucciones de 32 bits, direcciones de 20 bits (en hexadecimal)

📹

Establercer el contador de programa y ejecución de la primera instrucción

📹

SET: Asignarle un valor a un registro

📹

INPUT: Leer un valor de un dispositivo de entrada

📹

Entrada textual. ASCII. Conversión de texto a números

📹

CMP: Instrucción de comparación. Interpretación de la memoria

📹

JUMP: Instrucción de salto

📹

ADD: Instrucción de suma (en punto flotante)

📹

INC: Instrucción de incremento (más rápido que la suma)

📹

Ciclos: saltos hacia atrás. Ejecución completa de una iteración

📹

Inicio de una nueva iteración. Rompimiento del ciclo

📹

MOVE: Copiar valores

📹

DIV: división (fija/flotante). Conversiones de tipos de datos

📹

STORE: copiar un registro a la memoria principal

📹

OUTPUT: escritura en un dispositvo de salida. Salida con formato. HALT: finalización del programa

📹

Tratar de decompilar el programa en ensamblador a Python

📹

Propósito del programa. Recomendaciones e ideas finales.

📹

Modelos de computación: Máquina de Turing

J21-jul Gr02

Modelos de computación. Máquina de Turing. Máquina de estados (autómata de estados finitos). Parte 1

📹

Modelos de computación. Máquina de Turing. Máquina de estados (autómata de estados finitos). Parte 2

📹