There are three recurring themes in this course: (1) building components, (2) distributing components across platform and technology boundaries, and (3) sharing code across platform boundaries.
In this course we will use both platform APIs and compiler libraries to support applications by managing files, processes, theads, inter-process communication, and network communication via sockets. Our goal is to understand how to provide platform abstractions that complement compiler libraries, support common application code across multiple platforms, and to learn details about the platforms that come only from using their resources directly.
To do this you will complete one project using the Microsoft COM technology to build a useful component on Windows driven by scripting, a console application, and a WPF application. For this project you will also build a component for Linux driven by scripts and a console application.
You will also complete a rather large technology project on which you may collaborate with one or two other students from this class. For this second project you will research some interesting technology from a list provided, develop some probing code examples to illustrate how the technology works, and then implement an interesting application using what you learned.
You will develop native code using C and C++ languages via Visual Studio and gcc, the GNU compiler suite, as well as managed code written in C# or Java. Most are distributed applications using threads, messaging, sockets, and Graphical User Interfaces.
Syllabus: CSE775 - Distributed Objects | |||
---|---|---|---|
Lecture | Topics | Read before class | Project |
Lecture #1 Tue, Jan 15 |
Syllabus, Projects, System Programming, Handouts | skim APE chp 1-2 |
hand out Pr1 |
Lecture #2 Thu, Jan 17 |
Windows and Linux Platforms | class notes | Fnl Prj |
Lecture #3 Tue, Jan 22 |
Programming with native code, system header files, library header files, VC++, g++, make, MSBuild, gdb | class notes | Fnl Prj |
Lecture #4 Thu, Jan 24 |
System Programming, Cross-Platform development | APE pg 29, chp 1 class notes |
Fnl Prj |
Lecture #5 Tue, Jan 29 |
Components: interfaces, object factories, and Dynamic Link Libraries | class notes | Fnl Prj |
Lecture #6 Thu, Jan 31 |
Introduction to COM | WVCC chp 19-20, class notes |
Pr1 |
Lecture #7 Tue, Feb 05 |
COM, Interfaces, Class Factory, dynamic linking, GUIDS, registry | class notes | Pr1 |
Lecture #8 Thu, Feb 07 |
IDL, COM clients | CATL chp 2-3 Web Notes |
Pr1 |
Lecture #9 Tue, Feb 12 |
Active Template Library (ATL), Building COM applications, ATL Helpers | CATL Chp 3-4 Web Notes |
Pr1 |
Lecture #10 Thu, Feb 14 |
Out-of-Process COM components, Service Control Manager, Activation | CATL Chps 6-9 Web Notes |
Pr1 |
Lecture #11 Tue, Feb 19 |
Apartments and COM Threading Models | CATL Chp 5 class notes |
Pr1 |
Lecture #12 Thu, Feb 21 | Student Technology Presentations | Schedule | Pr1 |
Lecture #13 Tue, Feb 26 |
Student Technology Presentations | Schedule | Pr1 |
Lecture #14 Thu, Feb 28 |
Student Technology Presentations | Schedule | Pr1 |
Lecture #15 Tue, Mar 05 |
Student Technology Presentations | Schedule | Pr1 |
Lecture #16 Thu, Mar 07 |
Student Technology Presentations | Schedule | Pr1 |
Tue, Mar 12 | Spring Break | No classes | |
Thu, Mar 14 | Spring Break | No classes | |
Lecture #17 Tue, Mar 19 |
Student Technology Presentations | Schedule | Fnl Prj |
Lecture #18 Thu, Mar 21 |
Student Technology Presentations | Schedule | Fnl Prj |
Lecture #19 Tue, Mar 26 |
Student Technology Presentations | Schedule | Fnl Prj |
Lecture #20 Thu, Mar 28 |
Student Probing Presentations | Schedule | Fnl Prj |
Lecture #21 Tue, Apr 02 |
Student Presentation of Probing Examples | Schedule | Pr1 due |
Lecture #22 Thu, Apr 04 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #23 Tue, Apr 09 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #24 Thu, Apr 11 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #25 Tue, Apr 16 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #26 Thu, Apr 18 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #27 Tue, Apr 23 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #28 Thu, Apr 25 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Lecture #29 Tue, Apr 30 |
Student Presentation of Probing Examples | Schedule | Fnl Prj |
Exam Sat, Apr 27 |
Final Projects: Student Presentations on Final Project results & conclusions |
Schedule | Fnl Prj |
Exam Sun, Apr 28 |
Final Projects: Student Presentations on Final Project results & conclusions |
Schedule | Fnl Prj |