I took both of Steve Leeb's classes: 6.115 - Microcontroller Project Lab - in Spring 2015, and 6.131 - Power Electronics Lab - in Fall 2015. These classes are (in)famous for the sheer amount of workload that they require and their open-ended final projects. Although I learned a lot from both classes, I found that I enjoyed and got a more diverse skillset out of 6.115.
6.115's class philosophy is to teach you how to approach, design and debug an embedded system rather than how to use a specific kind of microcontroller. In this vein, the main chip used in the course was an Intel 8051, and part of the first lab was to look through the datasheet and understand how to communicate via serial to it. Through tihs class, I not only learned how to write assembly, use an oscilloscope and refer to datasheets, but also how to debug a circuit, keep a good lab notebook and break down a problem into approachable pieces. Sample pages of my lab notebook and assembly code can be found here.
My final project in the course was a Nethack-inspired maze game programmed in C on a Cypress PSoC (Programmable System on a Chip). By shining a flashlight on different light sensors and stepping on a homemade presure pad to control movement, the player would control their character through a maze on an LCD screen. I did not get to add in as many features as I hoped for, which helped to teach me the importance of scoping a project's timeline.
6.115 helped crystalize my love for interdisciplinary engineering work. While 6.131 did a great job forcing strong designs via one-on-one design reviews, I found myself less interested in the material as all of the power electronics circuits seemed just like variations on a few amplifier designs to meet design specifications. I preferred the wider applications of microcontroller design in 6.115, which ended up steering me away from pure circuit design and to more embedded systems.