Lecture #1 - Introduction to DO

Discuss Projects, Exams, Class Mechanics

Web Resources, Supplementary Resources


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:
C++11 notes, CppReference.com, Visual Studio support for C++11, and g++ support for C++11.

Here are the projects we will work on this semester:

Discussion of grading procedures and policies: No midterm or final exams - projects and presentations are everything!

Notes about this course:

  1. 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.
  2. 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.
  3. 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: 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.
  4. 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.
  5. 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.
  6. 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.
  7. Syllabus describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  8. Starting this Friday, I will hold help sessions from 9:00 amn until questions stop each Friday in CST 4-201.

CST strip