Hi, this is Bruce Montgomery. For this module, we're going to go through an introduction to the overall embedded interface design class. We'll talk about what the class focuses on, what some of the elements are, and why it might be relevant to you. My goal here is really just to clarify the focus and relevance. And to give you an opportunity to look at the class content to make sure that your experience, your skills, and what you're trying to learn fits what we're going to be going through. So welcome to the class. I'm looking forward to working with you. This isn't really a typical class for the embedded systems classes at CU Boulder. It's not as technically difficult. Some of the lower level e-classes, we go through a lot of different content from a lot of different topic areas. It's very broad. In some places, it's not very deep. This is definitely a class where you'll get out of it what you put in. And if you identify topics that are of interest to you, you're going to want to spend some time digging into them. Let's talk a little bit about the prerequisites for the class. You definitely want to be able to program. I don't spend too much time in the class going through the specifics of Python or Node.js, except for examples of where they're used. I am expecting that you've probably done some programming in C or other languages and you'll be able to pick up the scripting languages, Python, Node.js fairly quickly. You do need some basic understandings of computer architecture and of IP networks. I'm not going to spend a lot of time talking about how IP works, the difference between TCP and UDP. But small gaps in these areas probably won't hurt you too much as we go through a lot of examples of applying the different tools and approaches fairly completely. So that you'll be able to use them and fill in gaps later as you identify them. This diagram kind of goes through the focus areas for the class, and as you can see, there is in yellow really the ones that we're looking at. They're coming off the board, we're not down at the board level of non-volatile memory or power management. We're really moving off into the interfaces out to people, to the environment, and the Internet, and to clouds. We spend a good amount of time looking at these interfaces, how to design them. What protocols are used. And how you can create systems out of your embedded devices. The first part of this examination is around user experience and interface design. So we'll spend a good amount of time on user experience, what it is, how the design methods help you develop interfaces for your systems. And we'll do that by looking at some standard tools that have been around for a while, that help you understand what your users need, what tasks they're trying to perform. And make sure that what you're putting together is both useful and usable. Some of them specifics include looking at different usability and user experience processes. Looking at different phases of development like analysis and planning, research, design, verification, validation. Looking at the different methods in each of these areas, and then considering these in terms of creating embedded systems. Then we get into a little more detail on different types of interfaces. We'll look at the ways that people interact with devices. We'll look at the way devices communicate with each other, machine to machine communication. And then we'll start to look at protocols and communication methods for the Internet of Things when we're moving out to the net and to clouds. We'll also look at some of the supporting technologies like message queuing and API design. Interfaces and protocols, we'll look at range from the lowest level protocols like SPI, and I2C, out to low power protocols like cellular LTE-M and wireless LoRa. We'll also spend a good amount of time on using the cloud. Amazon Web Services support for the IoT, some other cloud systems that also have IoT architectures and support. And then again, some supporting tools as well. Remember, I'm largely assuming in this that you do have knowledge of IP networking. Most of these protocols have some connection to IP technologies. But we won't get down into that detail level very often. The final part is rapid prototyping of devices. Where we look at putting together prototypes of embedded devices and systems, proofs of concept, using single board computers, using the cloud. And trying to demonstrate systems as quickly as possible to hone in on what the minimum viable product is, and whether or not it's what your customers want. To do this, we're going to look at a number of different tools. Language wise reading is Python and Node.js, we're not going to use C. If you are a C programmer, there's nothing wrong with that for your own projects, but I'd like to introduce you to some alternatives that might be a little faster and a little easier to build systems from. We'll also look at some standard UI tools, QT, HTML. We'll look at the support for systems around databases and source control. We'll look at leveraging single board computers in the cloud to pull systems together. We'll look at some lean design methods to help you hone your designs to what absolutely needs to be done for a given product. And then we'll look at some best practices around some specific designs, wearables, voice user interfaces, RF, and data on embedded devices. So why is all this relevant? Well, every embedded device has an interface to something. It's hard to imagine a device that you could sit on a tabletop or in a closet or wherever and just turn it on and never speak to it. Generally speaking, there has to be some sort of interface, whether it's to people or to other devices or out to the cloud. It's also a skill set that helps you become a better embedded device engineer. Being able to create useful and usable devices, knowing how to select communication protocols, being able to demonstrate functionality as quickly as possible. And get to the point where what you're going to make and you're confident that you can make it. The other part of the relevance, of course, is just the growth of connected devices and the Internet of Things. If you consider the number of companies out there that are involved in IoT at some level, whether it's components or the cloud or the devices themselves. Billions of dollars are going into investments in these technologies and even more billions are being spent on buying them. So having these skill sets being able to develop embedded devices with solid interfaces becomes even more important. Later in the class, we'll look a little bit more at some of the IoT markets and trends to kind of support why we're doing this. So welcome to the class. Don't hesitate to ask any questions that you have. Hope you enjoy the material. Thanks a lot.