Thursday, January 24, 2013

Pattern-Oriented Software Architectures for Concurrent and Networked Software

apply

 Session:
Mar 4th 2013 (8 weeks long)
Workload: 4-6 hours/week 
Next

About the Course

The advent of multi-core and distributed-core processors, coupled with ubiquitous wireless and wired connectivity, is driving the need for software engineers and programmers who understand how to develop concurrent and networked software. Despite many improvements in processors and networks, however, developing concurrent and networked software remains hard and developing high quality reusable concurrent and networked software is even harder.  The principles, methods, and skills required to develop such software are best learned by understandingpatternpattern languages, and frameworks.
pattern is general reusable solution to a commonly occurring problem within a given context in software design. When related patterns are woven together they form a pattern language that provides a process for the orderly resolution of software development problems. Frameworks can be viewed as concrete realizations of pattern languages that facilitate direct reuse of design and code.
This course describes how to apply patterns, pattern languages, and frameworks to alleviate the complexity of developing concurrent and networked software via the use of object-oriented design techniques and programming language features, distribution middleware, and advanced operating system mechanisms.  Case studies from the domains of mobile apps, web servers, and avionics systems will be used to showcase pattern-oriented software architecture design and programming techniques for concurrent and networked software.

About the Instructor(s)


Douglas C. Schmidt is a Professor of Computer Science, Associate Chair of the Computer Science and Engineering program, and a Senior Researcher at the Institute for Software Integrated Systems, all atVanderbilt University. He has also been the Chief Technology Officer for the Software Engineering Instituteat Carnegie Mellon University, where he was responsible for directing the technical vision and strategic R&D investments.
Dr. Schmidt has published 10 books and more than 500 technical papers on software-related topics, including patterns, optimization techniques, and empirical analyses of object-oriented frameworks and domain-specific modeling environments that facilitate the development of distributed real-time and embedded (DRE) middleware and mission-critical applications running over data networks and embedded system interconnects. Dr. Schmidt has also led the development of ACETAO, and CIAO for the past two decades. These technologies are pattern-oriented DRE middleware frameworks used successfully by thousands of companies and agencies worldwide in many domains, including national defense and security, datacom/telecom, financial services, medical engineering, and massively multiplayer online gaming.

Recommended Background

Ideally, students who take this course will be familiar with general object-oriented design and programming concepts (such as encapsulation, abstraction, polymorphism, extensibility, and the Unified Modeling Language (UML) ), fundamental object-oriented programming language features (such as classes, inheritance, dynamic binding, and parameterized types available in Java, C++, and C#), basic systems programming concepts (such as event handling, processes/threads, synchronization, interprocess communication, and dynamic linking), and networking terminology (such as client/server and peer-to-peer architectures, TCP/IP, and layering).  We will review object-oriented design, systems programming, and networking concepts and techniques, so as long as you understand how to read C++ and Java code examples you should be fine.

Suggested Readings

Although the lectures are designed to be largely self-contained, it's recommended (but not required) that students refer to the following books:
Much of this material is available online.

Course Format

The class will consist of lecture videos and integrated quiz questions.  There will also be standalone programming assignments that are not part of the lectures and optional reading material.  The programming assignments will involve writing concurrent and networked software in popular pattern-oriented software architecture frameworks written in Java ( such as Android) and C++ (such as ACE and Boost).  There will also be an optional final exam.

No comments:

Post a Comment