L T B H P N L Lectures

CSE775 - Distributed Objects

System Programming on Windows and Linux

"We have persistant objects, they're called files."
- Ken Thompson

Resources:

Lectures, Code, Syllabus
Submitting Projects, Academic Integrity and Grading Policy

Course Scope:

In this course we focus on System Programming; that is, exploiting the resources provided by computer platforms on which programs run. We will examine the programming interfaces provided by both Windows and Linux, and explore how to use them in C++ programs with occasional forays into Java and C#.

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.

Required Texts and Notes:

  1. Class Notes, available on www.ecs.syr.edu/faculty/fawcett/handouts/CSE775
  2. Component Object Model (COM) - Wikipedia
  3. COM Clients and Servers - MSDN
  4. COM: Component Object Model Technologies - Microsoft

Prerequisites:

CSE687 - OOD, is a co-requisite. This course uses a lot of C++ technology, and will not provide that background. However, the CSE687 course is designed to provide you with the tools you will need for this course and you will get them in time if you take CSE687 concurrently with this course.

Syllabus - Spring 2019:

Final Projects
Syllabus: CSE775 - Distributed Objects
Lecture Topics Read before class Project
Lecture #1
Tue, Jan 15
Syllabus, Projects, System Programming, Handouts skim WVCC chp 1-3
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

campus at night