Introducción al curso
¿Para qué sirve este curso?
Este curso sirve para ejercitar esta poderosa idea:
You need to understand your code. You need to understand your tools. You need to understand your platform. When we give up on understanding what we are actually doing when you write code, it just leads to bad software.
Brian Will.
Descripción del curso
El objeto de este curso es el estudio de los fundamentos de los sistemas de cómputo modernos desde la
perspectiva del programador. Por tanto, se estudiará cómo funciona un computador moderno pasando por el hardware
que lo compone, los lenguajes de programación, las herramientas y el sistema operativo. Se busca entonces
abordar aquellos conceptos que permitirán sacar provecho al sistemas de cómputo a la hora de construir aplicaciones.
Propósito del curso
El entendimiento de los fundamentos y las abstracciones de los sistemas computacionales desde la perspectiva del programador con el fin de construir aplicaciones que usen apropiadamente y saquen el mayor provecho de la plataforma de cómputo en la cual se ejecutan.
Competencia
Construye aplicaciones que posibilitan la interacción entre personas, mediada por tecnologías digitales, utilizando lenguajes y metodologías apropiadas según el contexto.
Criterios de competencia
Aplico los conceptos necesarios para el correcto diseño, implementación, funcionamiento y diagnóstico del software en la producción de sistemas de entretenimiento digital utilizando los procedimientos y herramientas adecuadas según el contexto.
Carta Descriptiva
En este enlace puedes consultar la carta descriptiva del curso.
Estructura y metodología del curso
El curso está divido en 4 unidades:
Unidad 1: Arquitectura del computador.
Unidad 2: Del código fuente al ejecutable.
Unidad 3: Programación orientada a objetos.
Unidad 4: Sistema operativo.
Cronograma
Introducción y control de versión. semana 1 y 3
Unidad 1: semanas 4 a 6.
Unidad 2: semanas 7 a 10.
Unidad 3: semanas 11 a 13.
Unidad 4: semanas 14 a 16.
Evaluación
Evaluación control de versión: 10% sesión 2 de la semana 3.
Evaluación unidad 1: 20% semana 6.
Evaluación unidad 2: 25% semana 10.
Evaluación unidad 3: 25% semana 13.
Evaluación unidad 4: 20% semana 16.
Dedicación
Este curso es de 2 créditos y se desarrolla en 16 semanas. Cada semana tendrás 3 horas 20 minutos de trabajo presencial y 2 hora 40 minutos de trabajo autónomo.
Bibliografía
Todo el material que necesitarás estará en este sitio web; sin embargo, te recomiendo mucho estos textos:
The Elements of Computing Systems: Building a Modern Computer from First Principles. Este libro es un recorrido por el funcionamiento de un sistema de cómputo desde las compuertas que componen el computador hasta un videojuegos conocido como tetris. Este texto soporta un curso muy popular llamado from nand to tetris.
Computer Systems: A Programmer’s Perspective. Una verdadera joya que aborda la arquitectura y organización de los sistema de cómputo desde la perspectiva del programador.
Operating Systems: Three Easy Pieces. Este excelente libro gratuito de sistemas operativos hace un recorrido por las abstracciones más importantes que este software ofrece.
Dive into Systems. Este texto gratuito captura la esencia de nuestro curso. El material que está allí te permitirá complementar y profundizar todo lo que vas a estudiar.
Evidencias de evaluación
En cada unidad verás el enunciado de un proyecto y las consideraciones para entregarlo solucionado. Ten cuenta SIEMPRE el siguiente código honor:
Código de honor
Para realizar el trabajo de cada unidad se espera que hagas lo siguiente:
Colabora con tus compañeros cuando así se indique.
Trabaja de manera individual cuando la actividad así te lo proponga.
No busques la solución a los proyectos porque DAÑARÍAS tu proceso de aprendizaje. Recuerda, se trata de seguir un camino y aprender en el recorrido.
¿Entonces qué hacer si no me funciona algo? Te propongo que experimentes, crea hipótesis, experimenta de nuevo, observa y concluye.
NO OLVIDES, este curso se trata de PENSAR y experimentar NO de BUSCAR soluciones en Internet.
Bitácora
Te recomiendo utilizar dos herramientas para que documentes y organices tu trabajo:
GitHub
En GitHub mantendrás todo tu código bajo control de versión.
En Notion llevarás tu bitácora electrónica (opcional)
Control de versión
Crea una cuenta en GitHub.