Maricopa Community Colleges  CIS262AE   20062-20086 
Official Course Description: MCCCD Approval: 07/22/08
CIS262AE 20062-20086 L+L 3 Credit(s) 4 Period(s)
C Programming for Distributed Systems
Advanced level C programming with emphasis on inter-process communications in a Linux or other UNIX networking environment; subtask management, shared memory areas, shared file systems, BSD (Berkeley Software Distribution) sockets, internetworking services, performance measurement, analysis, and tuning, and debugging and monitoring techniques in a distributed system.
Prerequisites: CIS162, or permission of Instructor.
Go to Competencies    Go to Outline
 
MCCCD Official Course Competencies:
 
CIS262AE   20062-20086 C Programming for Distributed Systems
1. Write a program that creates and controls internal and external subtasks. (I)
2. Employ process management techniques such as alarm timers and signals. (II)
3. Utilize local inter-process communications techniques such as pipes and shared memory areas, and control shared data via a semaphore. (I) and (II)
4. Employ remote inter-process communications techniques such as shared file systems and BSD (Berkeley Software Distribution) sockets. (III)
5. Write a remote server program and configure XINETD (the extended internetworking daemon) to start that service automatically at the request of a client process. (IV)
6. Employ near real-time system performance monitoring for processor and memory utilization, and disk and network activity levels. (V)
7. Measure and analyze the black box (system-level) performance of a distributed system. (V)
8. Optimize white box (program-level) performance using execution-phase timing techniques. (V)
9. Utilize distributed audit trail (execution log) analysis to debug distributed system failures. (VI)
Go to Description    Go to top of Competencies
 
MCCCD Official Course Outline:
 
CIS262AE   20062-20086 C Programming for Distributed Systems
    I. Subtask Management
        A. Embedded subtasks
        B. External subtasks
        C. Recognizing and handling subtask failures
      II. Local Inter-process Communication
          A. Alarm Timers and Timeout Strategies
          B. Sending and Handling Signals
          C. Pipes and Input/Output Streams
          D. Allocating and Attaching Shared Memory
          E. Semaphore Control of Shared Global Data
          F. Communicating among your subtasks
        III. Remote Inter-process Communication
            A. Shared File Systems
            B. The User Datagram Protocol (UDP)
            C. The Tele-Communications Protocol (TCP)
            D. Lightweight, guaranteed message delivery schemes
          IV. The Internetworking Daemon Process
              A. The INETD (internetworking daemon) as super-server
              B. Recent XINETD extensions
              C. Internetworking services
            V. Performance Measurement and Analysis
                A. Near real-time performance monitoring
                B. Black box, system-level analysis and tuning
                C. White box, program-level code optimization
              VI. Distributed Systems Debugging
                  A. The absence of a global time clock
                  B. Time-stamped distributed activity logs
                  C. Approaches to reconstructing a consistent, global system state
              Go to Description    Go to top of Competencies    Go to top of Outline