Instructor Notes

This is a placeholder file. Please add content here.

IntroductionWhy DesignIn this module we will cover general design principles and those that are tailored for scientific softwareMotivation and Objectives


General Design PrinciplesGeneral Design PrinciplesDesigning Software – High Level PhasesRequirements GatheringDecompositionConnectivity


Design Principles ApplicationExample 1 – Problem DescriptionSimplifying AssumptionsRequirement gatheringDecompositionConnectivityConnectivity – Alternative Possibility


Design Principles for Reserach SoftwareResearch Software Specific ChallengesSOLID Principles Pose Some DifficultiesAdditional Considerations for Research Software


Research Software Design ExampleMore Complex Application Design – Sedov Blast WaveDeeper Dive into RequirementsComponentsConnectivityExploring design space – AbstractionsA Design Model for Separation of ConcernsSeparation of Concerns AppliedTakeaways So far


Challenges of HeterogeneityNew Paradigm Because of Platform HeterogeneityGo Back to the Design Model for Separation of ConcernsPlatform Heterogeneity


Design for HeterogeneityMechanisms Needed by the CodeUnderlying Ideas: Unification of Computational ExpressionsUnderlying Ideas: Moving Work and Data to the TargetUnderlying Ideas: Mapping Work to TargetsFeatures and Abstractions to be Added to Earlier ExampleMechanisms Needed by the Code : Example Flash-XConstruction of Application with Components and Tools


ConclusionsFinal takeawaysResources