Challenging students with hands-on learning and practical experience in wide of software engineering topics
OO Software Development


Dr. Clyde's undergraduate OO Software Development Classes provide students with a foundation in orient orientation. Specifically, it aims to teach students core principles, such as object identity, classification, abstraction, encapsulation, aggregation, inheritance, and more. It grounds these principles in best practices and design patterns, and teach the students how to avoid common pitfalls.

Dr. Clyde also teaches MS and Ph.D. classes on OO Software Development that explore current trends and research topics.


AO Software Development


The Aspect-oriented (OA) Software Development class is a special-topics class that builds on OO Software Development by introducing students to techniques for modeling and implementing crosscutting concerns.  Student gain hands-on experience in using aspects in a course-long project.


Distributed Systems

Dr. Clyde's teaches classes on distributed systems design and implementation at both the undergraduate and graduate levels.  These classes give students hands-on experience in building non-trivial distributed systems, like real-time multi-player games, federated data systems, and process control systems.

Through intensive programming assignments, they give students a strong background in common architectures for distributed systems, the characteristics of different kinds of interprocess communication, communication protocol design, concurrency control, distributed algorithms, and the testing of distributed systems.

Former students have often said that these classes were the hardest in their academic program, but very valuable in their careers.

Other Classes

Dr. Clyde has designed and taught other classes on user-interface design, conceptual modeling, software testing, code refactoring, software architectures, operating systems, and a number of topics. 


Software Engineering


Dr. Clyde teaches classes at both the undergraduate and graduate level in software engineering, where he aims to give students hands-on experience with analysis, requirements definition, architectural design, detailed design, implementation, testing, and deployment principles and best practices. In these classes, students work in groups to build functioning systems for real users. They must use version control tools to coordinate development efforts, prioritize features, keep all their work artifacts up to date.  Ultimates, the student must conduct system testing, user acceptance testing, and do a presentation about their systems.


Software Patterns


The software patterns classes help students refine their software development skills by exploring literature and current research for wide range of patterns, including architectural patterns, detailed design patterns, UI design patterns, testing patterns, and more.