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:

  1. Unidad 1: Arquitectura del computador.

  2. Unidad 2: Del código fuente al ejecutable.

  3. Unidad 3: Programación orientada a objetos.

  4. Unidad 4: Sistema operativo.

Cronograma

  • Unidad 1: semanas 1 a 4.

  • Unidad 2-1: semanas 5 a 7.

  • Unidad 2-2: semanas 8 a 10.

  • Unidad 3: semanas 11 a 13.

  • Unidad 4: semanas 14 a 16.

Evaluación

  • Evaluación unidad 1: 25% semana 4.

  • Evaluación unidad 2: 12.5% (2-1) semana 7 y 12.5% (2-2) semana 10.

  • Evaluación unidad 3: 25% semana 13.

  • Evaluación unidad 4: 25% 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 leer el siguiente texto si te animas a profundizar dedicando un poco más de tiempo:

Noam Nisan y Shimon Schocken. The Elements of Computing Systems: Building a Modern Computer from First Principles. The MIT Press (1 de junio de 2005)

Evidencias de evaluación

En cada unidad verás el enunciado de un proyecto y las consideraciones para entregarlo solucionado. Te en 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:

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 con tu correo institucional de la UPB. Si ya tienes otra cuenta con otro correo está bien.