¿Cómo es tomar un curso de sistemas integrados en CMU?

CMU tiene una buena cantidad de cursos de pregrado que se especializan en sistemas integrados: 18348, 18349 y 18549. No he tomado 18348, así que no puedo decir mucho al respecto, pero por lo que sé, el curso se especializa en un sistema integrado de 16 bits. .

Tomé 18349 el semestre pasado y tú programas en un gumstix para todo el semestre. El gumstix se ejecuta en una arquitectura ARM de 32 bits. Los laboratorios principalmente lo llevan a diseñar un kernel pequeño donde usted es responsable del cambio de contexto, mutexes, temporizadores y algunas llamadas al sistema. El material del curso implica mucho sobre la arquitectura ARM, el ensamblaje ARM, las interrupciones, la programación y la inversión de prioridad. La mayor parte de su aprendizaje proviene de los laboratorios de la clase. Es una clase difícil ya que los laboratorios toman una cantidad de tiempo decente para trabajar. Tienes que escribir los laboratorios usando C y ensamblaje. Los laboratorios realmente prueban tus habilidades de depuración, así que asegúrate de repasar tus habilidades de depuración de gdb. Esta clase es increíble ya que te familiariza con los detalles del sistema embebido en tiempo real.

Estoy tomando 18549 este semestre y cumple con un requisito final para su título de ECE. La clase es básicamente un gran proyecto. Trabaja con otras tres personas en la clase y tiene una idea para un proyecto en las primeras dos semanas. Luego se le da todo el semestre para realizar el proyecto. Obtuvimos una buena cantidad de fondos de la clase para financiar nuestros proyectos. Puede hacer lo que quiera para el proyecto siempre que implique software embebido. Los proyectos actuales y los proyectos existentes para esta clase se pueden ver desde aquí: 18-549 Diseño de sistemas integrados (capstone)

Vea mi respuesta aquí: https://www.quora.com/Carnegie-Mellon-University/What-are-the-best-MS-courses-to-take-for-CS-and-ECE-students-at-CMU

Mis cursos ECE favoritos en CMU hasta ahora:

  • 18-648 Sistemas integrados en tiempo real: implementa la programación en tiempo real y la administración de energía en el kernel ARM de Linux. Es un curso extremadamente difícil y lento, pero si eres un experto en sistemas como yo, te encantará. Está un poco desorganizado, porque no ha existido desde siempre, por lo que todavía hay algunos problemas en el curso. Advertencia: debe ser muy competente en C para obtener buenos resultados en los laboratorios (es útil saber cómo escribir el código del núcleo).
  • 18-649 Sistemas integrados distribuidos: implementa un elevador altamente distribuido (usando un simulador). Koopman enseña esto. Se ha enseñado durante muchos años (creo que> 10 años, IIRC), por lo que es un curso muy sólido. No es particularmente difícil, pero está en el rango medio a alto para el consumo de tiempo. Hay algunos dolores de documentación por los que debe esforzarse (principalmente la primera mitad del semestre), pero si los supera, la última mitad del curso es increíblemente divertida.
  • 18-746 Sistemas de almacenamiento avanzados: implementa FSCK y escribe su propio sistema de archivos. Es un curso realmente increíble, de nuevo si te gustan los sistemas. Se requiere mucho esfuerzo, pero probablemente solo en el nivel de 649. No se hace nada en el núcleo, solo el código C de nivel de usuario.

@Tristan
¿Es aconsejable optar por uno de 18648 y 18649 o ambos? Preguntando que no quiero desperdiciar mi espacio de un curso para materias casi similares. Puedo utilizar esa ranura del curso para otro tema. ¿Qué, sugieres y en caso afirmativo cuál?