John Hugo Marcoux III - Systems Engineer
 

Courses

    Major Design Experience Courses (MDE)

  • EECS 498 (Special Topics) - Advanced Embedded Systems:
    Advanced Embedded Systems was a very lab centered class which focused on the process and issues associated with embedded system design. As a major design course, it gave valuable experience working in a group through the entire end-to-end process of designing, implementing, and testing a complex embedded application. The course gave experience developing on multiple embedded platforms, ranging from simple prototyping platforms like Arduino or TI's MSP430 to using embedded Linux which ran a RTOS (real-time operating system). The end goal of the class was to be prepared for real-world design (i.e. be able to take specifications and requirements from a customer and produce a finished product which met all of their needs).

    One of the only necessary components of the project was that each group had to design a custom printed circuit board (PCB) to be used in their project. This involved learning the CadSoft program EAGLE, and applying circuit and system architecture concepts to create a PCB capable of controlling your embedded system.

    Aside from the heavy hands-on aspect of the course, another point stressed was the ability to read, understand, and explain complex documents and concepts. Very often we would be given documentation on anything ranging from different types of batteries, new embedded platforms, or various sensors and be asked to interpret this information and apply it towards a goal: such as optimization of a system, implementation of an application for a specific task, or overall comprehension and understanding of various aspects of embedded technologies.

    I believe the most valuable skill learned in this course was overall system integration. Seeing a project go from an idea on paper to a full scale running application is extremely rewarding, and does not come without dedicated time management, constructive teamwork, and strong understandings of how numerous aspects of embedded technology work.

    The project my group and I constructed was the Autonomous Robot Line Painter.
  • EECS 452 - Digital Signal Processing Laboratory:
    I am currently enrolled in my second MDE course, which is the DSP Laboratory. After learning the theory and techniques of digital signal processing, I have been very anxious to combine this with my extensive knowledge of embedded systems. This course shows how to combine FPGA's and DSP's together by providing a lab based environment which teaches about real-time signal processing, using A/D and D/A conversion, and how to implement different FIR and IIR filters.

    This course also helps teach the use of Verilog HDL, used to program our FPGA and create powerful and optimized hardware. It also gives great experience working with state-of-the-art fixed-point processors.

    The project my group and I constructed was Television Commercial Detection.
  • Other Relevant Courses

  • EECS 461 - Embedded Control Systems:
    After learning Control Systems theory, much like DSP, I had a strong desire to apply it to my growing knowledge base of embedded systems. This course introduces how control systems can be utilized in embedded design, and gives experience in lab using sensors and actuators, quadrature decoding, pulse width modulation (PWM), and DC motors. It also gives plenty of theory and implementation background for real-time operating systems and scheduling algorithms.

    This is a course which utilizes MATLAB and its various toolboxes (i.e. FDATool, Simulink, StateFlow) often.
  • EECS 373 - Design of Microprocessor Based Systems:
    Design of Microprocessor Based Systems was an incredibly useful class; Not only did it provide background on numerous aspects of FPGA programming, but it also revolved around lab based experiences which proved extremely vital in our final group project (which consisted of making a prototyped embedded system application). These seven labs focused on memory-mapped I/O, application binary interface issues, interrupts, and interfacing with multiple peripherals which all involved using our Actel SmartFusion FPGA. The class moved very quickly and covered a huge amount of material, which served as fantastic background information for my first MDE , Advanced Embedded Systems.

    Verilog HDL was used exclusively to generate the hardware used on our FPGA, but we also got a taste of embedded programming using assembly.

    As mentioned, this class also involved a final group project, in which my group designed a Rubik's Cube Solver.
  • EECS 451 - Digital Signal Processing and Analysis:
    This was a Digital Signal Processing theory course, which taught numerous aspects about digitally processing continuous and discrete time signals. It provided strong insight into using signal processing algorithms, such as the Fast Fourier Transform and the Discrete Fourier Transform, to solve complex problems like signal sampling and reconstruction.

    Along with a very strong conceptual understanding of digital signal processing theory, I also left the course knowing how to use MATLAB's various toolboxes to aid in digital filter design. Very often we were asked to build filters using FDATools, a progam which I am now very familiar with.
  • EECS 460 - Control Systems Analysis and Design:
    This class focused on the theory behind Control Systems, and gave insight on how to not only analyze the behaviour of closed-loop feedback systems, but also how to design them using various techniques. We learned how to design controllers in the time and frequency domains and theoretically test these controllers using root locus, as well as using MATLAB's Simulink to run simulations on P, PI, PID controllers. There was also one laboratory where we got to design a controller for a magnetic levitation device, and test its effectiveness on a real life application.