University of Colorado at Boulder
University of Colorado at Boulder Search A to Z Campus Map CU Search Links
ECE Home

ECEE Courses

Undergraduate
Graduate
Course List
Research
Contact Us

ECEN 4643 - Software Engineering of Concurrent Systems


Catalog Data ECEN 4643 (3). Software Engineering of Concurrent Systems. Addresses engineering of applications requiring multiple software processes running concurrently, sharing data, and communicating as a system in a single environment. Topics include performance analysis of architecture design; analysis of requirements, design and testing of synchronization and communication; the interplay of system design and performance with the impact of memory management, input/output, and file system support. Restricted to seniors.
(Meets with ECEN 5643.)
Credits and Design 3 credit hours. Elective course.
Prerequisite(s) ECEN 4583, Software System Development, or ECEN 5543, Software Engineering of Standalone Programs
Textbook Hassan, Gomaa, Designing Concurrent, Distributed and Real-Time Applications with UML, Addison Wesley, 2000.

Smith, L. and C. Williams, Performance Solutions, Obj. Tech. Series, Addison-Wesley, 2001.

  
Course Objectives
Topics Covered
  1. Introduction to Multiprogramming Issues and Concurrency in particular
  2. Concurrency, Mutual Exclusion, Deadlock, Liveness
  3. Multithreaded programming
    • Communication via shared variables
    • Processes and synchronization
    • Locks and barriers
    • Semaphores and monitors
  4. Requirements Engineering, Specification & Analysis
  5. Design Methodology for Concurrent software
  6. Scheduling algorithms for concurrent processes
    • Real time scheduling
    • Common scheduling algorithms' impact on process management
  7. Other multiprogramming/concurrency issues
    • Impact of memory management on concurrent processes
    • Impact of Input/Output mechanisms on concurrent processes
    • Impact of File System implementations on concurrent processes
  8. Security fundamentals and implications for concurrent systems
  9. Software Performance Engineering among competing concurrent processes
    • Performance modeling at design time
    • Performance-oriented design, patterns, and anti-patterns
    • Performance tuning at the local (not architectural) level
  10. Testing concurrency issues in components and component interactions

Last revised: 08-02-11, PM, ARP.