In this lecture, we're going to specifically look at some of the aspects of designing devices that are dependent on data. Most devices that we make have a dependency on data in some way. Embedded at IoT devices in particular are usually in place because there's data that they need to provide or data that they need to process. It's important to think a little bit about what that data really brings to the design and how it impacts the design. We going to go through a number of design perspectives here. This one really, again, it's just thinking about how the data and its nature really drives the specifics of this particular device design that we're considering. In an IoT system, we almost always have data moving, whether it's from the device to a bridge or from a bridge to a network. However, that is happening the network is essentially, whether it's Cloud-based or local, a place that's receiving, processing, and potentially sending control and command back to the device based on the data that's flowing. In a Cloud-based architecture, the devices are flowing that data up to some central processing and storage. Alternatively, often times for IoT systems, we use a Fog architectural model, indicating that some of that data is being processed locally, either at the local device or at one of the network edge devices before it goes further into the Cloud. You can imagine for a complex device like a robot vacuum cleaner that there may be some data that's being collected that the device is dealing with, that there's data that it's providing to systems in the Cloud for diagnostics or for reporting, and that some behaviors may be triggered based on analyzing that data. When we're considering different types of data that we run into, it's probably good to think back a little bit to our statistics classes and consider the different types of data that we might run into. There's categorical data. Nominal data, for instance might be something that's labeling some certain identifier as a given type or ordinal data where we're looking at levels. For instance, here the example is levels of education. In this case is that data is generally qualitative. It doesn't have direct mathematical values, although we may assign some at some point to do some calculation on that data. Numerical sources on the other hand, this is quantitative data that we're going to deal with, whether it's discreet values or continuous values, intervals, ratios, etc. It's good to consider the type of data that we have in hand as we're looking at our devices to think about how we're going to use that data and interpret it. In the IoT, typically we're looking at information about things. This would be locations, the state they're in, the environment that they're in. If it's something that's connected to a person, we're going to be looking at biometric data. If we're tracking people, we may be looking at activity levels or where people are in a particular facility, etc. That data can be either static or dynamic. Static data doesn't change very often. This may be something that we use to describe some set of data and it provides context, but it doesn't change very often. Dynamic data is data that's always in flux, coming in from the sensors, may be running through different controlled ranges, may have to be filtered before we can actually use it. It may get to the point where there's so much data that we're just going to look at outliers or averages or some other way to look for exceptions rather than looking at the nature of the data itself. Another way to consider data in an IoT system is declared versus direct and inferred. Declared data is data that's provided for us. This is things like a name or an address. Of course, especially of late, there's a lot of concern about the security around data like this that might track back to an individual person, so that has to be considered. Direct data is observed data. These are things that we're measuring directly from some source or from some sensor, so power use, location, and temperature, etc. Inferred data is data that we're actually creating based on some of the other data that's available. For instance, an example would be if we had sensors that we're looking at power use within a home, we may try to create inferred data, whether the home is occupied or not, based on looking at measures and patterns of that power data. So whether your data is being drawn directly from some sensor network or you're blending it with data from other resources, these are some of the ways that we would separate and consider this data for usage. Some other data differentiation in the IoT, we'll talk a little bit more about big data in a bit. Big data usually is coming from some large distributed dataset. So this is something where perhaps networks of sensors or devices are pouring data into a large store and then some specialized analysis is done in order to draw a value for that. This as opposed to small data where we're looking at a single source or a single sensor and we're trying to provide some data analysis to act on from just that single source for a person or for a process. Data can be looked at in real time or it can be looked at historically. When we're looking at things in real time, we're quickly trying to assess whether the data is what we expect it to be or whether we need to take some action based on its changes. Historical data, this may be something that we do on occasion looking over large time periods to try to look for patterns and look for anomalies in data after we've been gathering that data for some time. Another thing that we have to consider for IoT devices is context versus actions related to data. When we think about the actions that we're performing because of a device, we have to think about what that data is being used for. Does it drive a user to take some action? Does it cause a system to react in some way? Further, what's the context of that data? Is the data about a user or is it about the environment? If we look, for instance, at a smoke detector, the smoke detector is watching environmental data, but at some point, it may decide that the data that it's found has to drive action that users or connected systems might respond to. So understanding the actions in the context around that data might help us classify both the types of devices we're working on and the role and contribution they would have in a given system. So again, good to take a step back and think about what we're really using the data for in a given application. These are some typical contexts for data, things like location, function, whether you're treating devices singularly or as a group, whether you're working with people, devise states, authorizations, optimizations. These are all fairly common ways that IoT devices, for instance, would provide context to data that they're working with and then drive some sort of action. Another common way that we work with data from more of a user experience perspective is a feedback loop. In a feedback loop, you're continuously observing some dataset and as that data changes, you may react to that data and provide some indication to the user that something has changed. The user may decide to take an action based on that, and then once they act, we would go back to observing data and then go into that same loop again. In this way, we have a continuous feedback loop that lets an IoT design focus on observed and intuitive data. We have to be careful that we're presenting things that are most important to the user or the system that's looking at that data, and then we have to support whatever reactions have to be created because of the state changes that we observe. The data has to be up to date. We have to consider the timing and the pace of both the collection in the decision process. But thinking about system as a feedback loop is a common way to structure how we might put it application together based on their data it's dealing with. Another way to think about data is in terms of progressive disclosure. Again, this is a user experience perspective because when we think about the disclosure of data to our users, we want to be careful that we focus immediately on what the most important data is that they need to know. They may, once they've seen that data, look for some supporting details to help them make decisions, and later they may look at more general information around that data, log information, timing, etc to understand more of where it came from. But again, as we're thinking about what we're going to present to a user, at what point from a device or from a system, it's good to think in terms of how important and how critical this data might be to that particular individual or system that's dependent on these data levels. So again, just a way to think about some of the things that an IoT device has to do from a data perspective, the way data flows, the types of data, the context of the data, the impact on the user experience. Data is usually a key element of a connected system and it is important to consider how you're going to deal with that data and to think about it almost independently of the device, and consider where it's going to be processed and at what point to make sure that you're going to blend that data into a successful design that meets the requirements of what your user wants out of the system. That's one perspective. Let's look at some others.