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 objetivo del curso es comprender los fundamentos de los sistemas de cómputo para poder seleccionar y programar dichos sistemas con el fin de implementar experiencias interactivas u otro tipo de aplicaciones.

Propósito del curso

El entendimiento de los fundamentos de los sistemas de cómputo que constituyen la base de los sistemas interactivos.

Competencia

Analiza, diseña, evalúa e implementa soluciones interactivas de acuerdo a requerimientos condicionados por el contexto.

Estructura y metodología del curso

El curso está divido en 5 unidades:

  1. Unidad 1: Lógica combinacional y secuencial.
  2. Unidad 2: Arquitectura del computador.
  3. Unidad 3: Del código fuente al ejecutable: compiladores, máquinas virtuales, C, C++, C#.
  4. Unidad 4: Programación orientada a objetos.
  5. Unidad 5: Sistema operativo: procesos, hilos, memoria virtual, sincronización, comunicación, entrada salida.

Cada unidad estará constituida por tres fases:

  1. Fase 1: fundamentación. En esta fase se estudiarán los conceptos teóricos más relevantes de cada unidad. Así mismo se complementarán con lecturas. En esta fase, el estudiante debe repasar los conceptos olvidados de los semestres anteriores.
  2. Fase 2: proyecto. En esta fase se realizarán uno o más proyecto.
  3. Fase 3: evaluación. En esta fase se discute el resultado de los proyectos de la unidad.

Cronograma

Te sugiero completar cada unidad en los siguientes tiempos:

  • Unidad 1: semanas 1 a 3
  • Unidad 2: semanas 4 a 6
  • Unidad 3: semanas 7 a 10
  • Unidad 4: semanas 11 a 13
  • Unidad 5: semanas 14 a 16

Evaluación

Cada unidad tiene un peso del 20% en la nota final. Notarás que algunas unidades tienen un proyecto, pero otras tiene más de uno.

La Unidad solo se considera terminada cuando termines todos los ejercicio y todos los proyectos que están en ella al 100%. Por tanto, la nota de cada unidad, una vez la termines, será 5.

Puedes entregar cada unidad cuando quieras, pero considera lo siguiente:

En la semana 8 se hará un primer corte del 50% y se reportarán al sistema las unidades terminadas y evaluadas. Ten presente que la evaluación se realiza mediante una entrevista con el profesor en la cual discutirán los resultados de tu trabajo y recibirás retroalimentación personalizada. Para la semana 8 deberías tener terminadas las unidades 1 y 2. Si no alcanzas, cuando las termines se actualizará tu nota.

En la semana 17 se reportarán al sistema todas las unidades terminadas. ES MUY IMPORTANTE que tengas en cuenta que una unidad se considera terminada SI y SOLO si todos los ejercicios y proyectos están al 100% y realizaste el proceso de evaluación con el docente.

Dedicación

Este curso es de 4 créditos repartidos en 2 horas de trabajo sincrónico mediado por TIC y 10 horas de trabajo autónomo.

Bibliografía

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)

Actividades de cada unidad

Actividad 1: encuentros sincrónicos

  • Fechas: martes a las 2 p.m..
  • Descripción: asesorías en tiempo real y evaluación.
  • Recursos: ingresa a Discord
  • Duración de la actividad: sesiones de 1:40.
  • Forma de trabajo: individual-colaborativo/sincrónico

Actividad 2: fundamentación

  • Descripción: realiza los ejercicios, retos y preguntas propuestas.
  • Recursos: trayecto de actividades en cada unidad.
  • Duración de la actividad: depende de ti.
  • Forma de trabajo: individual-colaborativo

Actividad 3: proyecto y sustentación

  • Descripción: realiza el proyecto, usa las herramientas de control de versión y productividad y actualiza tu portafolio.
  • Duración de la actividad: depende de ti.
  • Forma de trabajo: individual.

Evidencias de evaluación

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.

Detalle de las evidencias

Vamos a utilizar dos herramientas para la presentación de evidencias, tanto para los ejercicios de fundamentación como para el proyecto.

En GitHub mantendrás todo tu código bajo control de versión y debe reflejar un flujo de trabajo. Debes evidenciar el flujo de trabajo.

En Notion vas a presentar la documentación de la fundamentación y del proyecto de cada unidad. El formato de tu portafolio es libre, pero deberás incluir al menos lo siguiente:

  • ¿De qué se trataba el proyecto? ¿Cuál era el problema a resolver?
  • Presenta tus resultados: muestra un video del proyecto funcionando.
  • Explica cómo resolviste el problema.
  • No olvides dejar un enlace a tu repositorio público en GitHub.

¿Cómo inicio con Notion? Te dejo aquí un enlace.

Control de versión

  • Crea una cuenta en GitHub con tu correo institucional de la UPB. Si tienes la cuenta, tanto mejor.
  • Explora este sitio y solicita, por medio de tu cuenta de GitHub, el paquete de herramientas para estudiantes. Este proceso requiere aprobación, así que te recomiendo que lo hagas YA.
  • Ingresa a este sitio y realiza el curso corto sobre Git.
  • Finalmente, observa el siguiente video para que analices un posible flujo de trabajo típico con una herramienta de control de versión y de productividad (puedes emplear notion para la creación de tus boards de tareas)