In this introductory lecture we discuss course contents and projects, the required texts, recommended study resources, and grading policy.
CSE775 - Distributed Objects is concerned with learning how to use rich computing resources provided by both the Windows and Linux computing platforms
to build libraries and applications. To do this we will examine the Operating System APIs, discuss their computing models, and see how to access their
facilities in interesting ways. A recurring theme is the creation and use of objects across thread, process, machine, network, and technology boundaries.
Note: We will be discussing Windows and Linux facilities, so you will need to install
them on the machine you use for building projects for this class. You will also need Visual Studio 2018 and Visual Studio Code (VS Code) or Eclipse or
NetBeans IDE to support those
project constructions. You may, of course, alternately use a text editor, make, and the gcc or clang tool chain.
In the next class we will discuss how to get and install them on your work machines.
Most of your project work will use C++. You are encouraged to become familar with
and use features added to the new standard C++11:
Discussion of grading procedures and policies: No midterm or final exams - projects and presentations are everything!
Notes about this course:
We will discuss and develop projects for the Linux platform as well as Windows. Linux technologies are derived from,
and nearly identical, at the API level, to Unix systems. We will look at its system APIs, scripts, and programming tools.
The amount of time we spend with this depends on the backgrounds you have with these topics.
We will develop code that runs on either Windows or Linux and has a platform specific base and common software stack that will operate without change on either Linux or Windows. Interoperability comes about
by developing a small set of packages that provide access to the platform APIs through a common interface. So the majority of an
application's code can use that base and be common to both platforms.
We will spend a significant amount of time - about three weeks - discussing the Windows COM technology. COM is a Component Technology
used throughout windows to break this large and complex system into digestible, composable, and nearly independent pieces. COM was
developed to support some interesting technologies with the Office Suite and has grown to become a major part of the Windows OS.
COM components are the building blocks for:
the Windows shell
Windows Management Instrumentation
the new WinRT technolgy used in Windows 10
throughout Microsoft Office
If you work professionally on a Windows platform you will need to understand how COM works. That is the reason for our emphasis here.
Note that there is no corresponding technology on Linux, so this part of the course will forgo interoperability.
Our interest in interoperability also focuses on interoperation of components built in different technologies, e.g., between native and
managed code. For Linux that means interoperation between Java and C++ using operating
system facilities like sockets and pipes. On Windows we will look at interoperability between C# and C++ code in several ways. You can even
inteoperate between scripts and native code on both platforms.
Scripting is an interesting topic, especially in view of the fact that Unix and Linux have a long history of emphasizing use of scripts.
But Windows now has a more powerful script mechanism in PowerShell. We will talk about both bash and Powershell. It's not clear how much
time we will have for that, but we will discuss and show some examples.
We won't have a midterm or final examination in this course. Instead, grading will be based on the projects you develop and on
presentations you make about your projects during and at the end of the course. You will get back graded project #1 and feedback
on your presentations for Project #2 so you will know how well you are doing in the course.
Syllabus describes topics to be covered,
reading material for you to digest before coming to class, and due dates
for the assigned projects.
Starting this Friday, I will hold help sessions from 9:00 amn until questions stop each Friday in CST 4-201.