Week #11 - Asynchronous Systems

Web Resourses:

Content:

This lecture is concerned with Asynchronous Systems.
  1. The Syllabus describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  2. Midterm:

    The Midterm Makeup Exam for last year is posted here. If you do both parts A and B for this years makeup very well, your grade will be raised to 85, but no higher. So no one who receives higher than 85 need do the makeup.

    I'm providing my solutions to the midterms, along with supporting code, below. We will go over these when I return your graded midterm exams.

    If you are curious and want to look at them now, you should remember that I give a lot of partial credit so you may do better than you expect after looking at these solutions (your mileage may very of course).

    MT1F15-InstrSol, docx, MT2F15-InstrSol, docx, MT3F15-InstrSol, docx, MT4F15-InstrSol, docx
    There may be a few changes to these as I grade midterms, mostly to illustrate correct solutions that are different than those shown here now, occasionally to incorporate a student's solution that is in some way better than mine, e.g., clearer, or briefer, or smarter.

    MTF15-Code
    This code contains solutions to the "write all the code that ..." questions and also to develop code from which I use fragments to complete a question.

    Project2_Instr_Sol-11-08-2015
    I've extended my Project #2 solution to provide children(key) and descendents(key) methods for QueryEngine and VirtualDB, both because with them we can use Linq to do interesting queries. I'll illustrate that in class soon. Also, the descendents function provides the answer to MT4Q1. Questions MT3Q1, MT4Q1, MT4Q4, and MT4Q6 all explore required functionality in Project #2.

    CommPrototype-08-Nov-2015
    I've included CommPrototype because questions MT1Q1, MT1Q4, MT2Q4, MT3Q3, MT3Q5, and MT3Q6 inquire about that functionality (either for your design or my prototype).

  3. Projects:

  4. Asynchronous Communication

    Asynchronous Systems Presentation, pptx,

    BasicNetThreadDemos

    Queued Messages
    Deposit messages in a queue for later retrieval by another thread.

    WPF Thread Demos
    Illustrates use of (1) threads, and (2) asynch awaits to implement long running activities and displaying results in a WPF window.

    Abstract Task Model
    Illustrates basic use of C# Tasks.

    Basic Tasks
    Explores asynchronous processing, using Tasks, with combinations of inputs and outputs, and also use of continuations.

    async await Pattern
    Shows how to use asynch await emphasizing the affect of await's continuation.

    Asynchronous Calls Demo
    Use delegates asynchronous BeginInvoke and EndInvoke methods.

    Form with BeginInvoke
    Use the same asynchronous delegate, but now dequeue with a UI thread.

    ThreadPool Demo
    Dispatch work items to members of a thread pool.

    Form's BackgroundWorker
    The Form provided BackgroundWorker wraps the use of a ThreadPool to simplify a developer's implementation.

    You can use the BackgroundWorker with WPF, accorting to this blog post

  5. Another interesting way of implementing message passing:

    Cell-based message passing, Blog Discussion
    This demo grew out of the prototype linked below.

    ADAM-Wrapper-Prototype, updated with Comm component
    All message handlers, e.g., virtually all parts, inherit from AWrapper, except for UIs that already inherit implementation from Form. UIs need to create a message handler that does inherit from AWrapper.

  6. Peer-to-Peer Prototype
    Illustrates use of bilateral remoting with SingleCall activation to establish Peer-To-Peer communication.
  7. Program Structure
  8. Software Design
  9. Software Structure Research - motivation for Pr #5