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 understandingpattern, pattern languages, and frameworks.
A 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 ACE, TAO, 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:
- Gamma et at., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995, ISBN 0-201-63361-2.
- Schmidt et al., Pattern-Oriented Software Architecture, Vol 2: Patterns for Concurrent and Networked Objects, Wiley and Sons, 2000, ISBN 0-471-60695-2.
- Buschmann et al., Pattern-Oriented Software Architecture:, Vol 4: A Pattern Language for Distributed Computing, Wiley and Sons, 2007, ISBN 0-470-05902-8.
- Buschmann et al., Pattern-Oriented Software Architecture, Vol 5 On Patterns and Pattern Langauges, Wiley and Sons, 2007, ISBN 0-471-48648-5.
- Schmidt et al., C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns, Addison-Wesley, 2001. ISBN 0-201-60464-7.
- Schmidt et al., C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks, Addison-Wesley, 2002, ISBN 0-201-79525-6.
- Doug Lea, Concurrent Programming in Java, Prentice Hall, 1999, ISBN 0-201-31009-0.
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