So we have done building our operating system and we are at the very last unit of the very last module of. Our perspective unit on operating systems. So let'S see what is our first question. What are the major differences between the jack operating system and regular systems? Well, obviously, the jack operating system provides very limited functionality compared to industrial strength systems. For example, our OS supports neither multithreading nor multi-processing and at the same time the very kernel of typical operating systems Is design to do exactly debt. Also, we somehow managed to get away without building the file system. Thanks to the very simple tech that the heck platform has no disk. Obviously, if you have to managed mass storage, a file system is an absolute necessarily obstruction, and typically, the operating system support the subtraction. What else? Let's see. Most users expect to interact with computers via either command-line shells and interfaces or some Window in system and yet non of these goodies Is featured by our operating system, there are numerous other services that we don't support like obviously, security and communications. Having said all this, I think that our OS still closes some significance gaps between the underlying hardware, and application programs and in doing so, it hides numerous gory details, technical details and low-level details from the application programmer. And overall, it does this humble job in a rather elegant and clean way. And in that respect I think that our OS provides a very good point of departure or starting point for anyone who wants to get a feeling of what it takes to design and implement a simple operating system. Let's see what is the next question. How come the Jack OS is so wide open? Programmers can do whatever they want. Well, first of all this is very much in the spirit of nonprotectors in which everything is wide open and users are expected to treat both the hardware and the software systems as open laboratories. And yet in reality, in most computers, the OS code indeed is considered privileged and accessing OS services and OS functions requires a permission mechanism that is more elaborate than just issuing a simple function call, as we do in our system. Also, in most system they always function execute in a special protected mode that also allocates for them some additional harbor resources like clock cycles for example. And yet in our platform, the user level code and the OS code run in exactly the same execution level. And this, I guess, is quite unheard of, compared to real computer systems. But once again it encourages a sense of experimentation and engagement. Let's move on to the next question. How does the Jack OS rate in terms of efficiency? That's a very important question. And I think that the two areas that are most relevant to this question are mathematical operations and graphics. I also think that in both of these areas we did a reasonably decent job efficiency-wise. First of all, the algorithms that we presented for multiplication and division were efficient. The big difference between the way we did it and the way other computers do it is that in other computers these algorithms are typically implemented in hardware rather than in software. Yet both implementation approaches are based on exactly the same algorithmic ideas and insights. In particular, the running time of the multiplication and division algorithms that we presented is o of n proportional to n. Where N is the number of bits that we have to process. Or to say it more precisely, the running time is o of n addition operations. And since adding up two N-bit binary numbers also requires O of N-bit operations. It turns out that the total running time of any of these algorithms ends up being N square or O of N square bit operations. And, as it turns out, O of N square is not bad at all. Now, there exist multiplication and division algorithms whose running time is a syntactically faster than O of N squared. But these algorithms begin to carry their weight only when you have to multiply and divide very large numbers of bits. Which in our case is not really a problem. And what about graphics? Well, the line drawing algorithms that you represented are quite efficient. And yet in most systems this graphic primitives are typically implemented by combination of software and special graphic acceleration hardware. These so called GPUs serve to offload the central processing unit from carrying out a complex high performance graphics like drawing 3D images and rendering smooth surfaces, something that requires a lot of computation power. In the hack check platform, there is no such separation of responsibilities between the CPU and other dedicated processes. Everything is being done by the poor CPU. So to make a long story short, operating systems is a huge area of research and practice. Specially in a world in which computation is increasingly becoming more redistributed, open, portable and at the same time exposed to many hazards. And therefore, we should expect to see dramatic improvements in the state of the art of operating systems. And I do hope that some of you guys will play a major role in these developments.