        %\documentclass[handout]{beamer} 
\documentclass[t,12pt,numbers,fleqn]{beamer}
%\documentclass[ignorenonframetext]{beamer}

\newif\ifquestions
%\questionstrue
\questionsfalse

\usepackage{pgfpages} 
\usepackage{hyperref}
\hypersetup{colorlinks=true,
    linkcolor=blue,
    citecolor=blue,
    filecolor=blue,
    urlcolor=blue,
    unicode=false}
\urlstyle{same}

\usepackage{booktabs}
\usepackage{bibentry}
\usepackage[round, authoryear]{natbib}
\bibliographystyle{plainnat}

%\usetheme{Iimenau}

\useoutertheme{split} %so the footline can be seen, without needing pgfpages

%\pgfpagesuselayout{resize to}[letterpaper,border shrink=5mm,landscape]  %if this is uncommented, the hyperref links do not work

\mode<presentation>{}

\input{../def-beamer}

\newcommand{\topic}{01 Introduction}

\input{../titlepage}

\begin{document}

\nobibliography{../../ReferenceMaterial/References}

\input{../footline}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Introduction to CAS 741 (CES 741)}

\bi
\item Scholar Strike
\item Administrative details
\item Brief overview of course
\item Introductions
\item Course outline
\ei
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Scholar Strike}

\begin{itemize}

\item
  \href{https://www.cbc.ca/news/canada/manitoba/manitoba-scholars-strike-black-lives-canada-1.5717066}
  {Scholar Strike}
\item One small step for improvement is to watch for
  \href{https://builtin.com/diversity-inclusion/unconscious-bias-examples}
  {unconscious bias}
\item Does anyone have any comments they wish to share?
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Administrative Details}

\begin{itemize}

% \item New Grad Stdnt Orientation: Mon, Sept 9, 10 am -- 1 pm %may
%                                 %cancel our class
\item Lectures: Mon (11:30 --1:00) and Thurs (2:30 -- 4:00)
\item Avenue for grade tracking (\url{http://avenue.mcmaster.ca/})
\begin{itemize}
\item Please put a picture on your profile
\item Click arrow beside Announcements, select Notifications
\end{itemize}
\item We'll also use git on GitLab for the course material
\begin{itemize}
\item \url{https://gitlab.cas.mcmaster.ca/}
\item Create your account by logging in, option to set CAS password to MacID password
\item Course material and issue tracking at:
  \url{https://gitlab.cas.mcmaster.ca/smiths/cas741} (public)
\item Publication resources available at:
  \url{https://gitlab.cas.mcmaster.ca/smiths/pub} (CAS)
\end{itemize}
\item Your projects will be hosted on GitHub
\begin{itemize}
\item \url{https://github.com/}
\item Create an account, if you do not already have one
\item Give the instructor (me) master access to your repo
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Overview of the Course}

\begin{itemize}

\item Application of software engineering methodologies to improve the quality
  of scientific computing (or research) software
\item \structure{What is the definition of scientific computing?}
\item \structure{What are some examples of scientific computing and scientific
    computing software?}
\item \structure{What is the definition of software engineering?}
\item \structure{What are some techniques, tools and principles for software
    engineering?}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Scientific Computing (SC)}

\begin{itemize}

\item Scientific computation consists of using computer tools to simulate
  mathematical models of real world systems so that we can better understand and
  predict the system’s behaviour.
\item Examples
\bi
\item Temperature of fuel-pin in nuclear reactor
\item Flow of pollutant in groundwater
\item Displacement of a structure
\item Thickness of cast film
\item Temperature of water in a solar water heating tank over time
\item Ordinary Differential Equation solver
\item Root finding solver etc.
\ei
\item Includes analysis, design and ``exploration'' % point made by Isobel and Alex P
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Software Engineering (SE)}

\begin{itemize}
\item SE is an area of engineering that deals with the development of software
  systems that
\begin{itemize}
\item Are large or complex
\item Exist in multiple versions
\item Exist for large period of time
\item Are continuously being modified
\item Are built by teams
\end{itemize}
\item SE is ``application of a systematic, disciplined, quantifiable approach to
  the development, operation and maintenance of software'' (IEEE 1990)
\item D.\ Parnas (1978) defines SE as ``multi-person
  construction of multi-version software''
\item Like other areas of engineering, SE relies heavily on
  mathematical techniques (logic and discrete math)
\item SE might be applied to SC for software certification
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{SE Tools, Techniques and Principles}

\begin{itemize}
\item Tools
\bi
\item Programming languages
\item Version control software (git, svn, etc)
\item Debugger
\item Profiler
\item ...
\ei
\item Techniques
\bi
\item Documentation
\item Testing
\item Program families
\item Code generation
\item ...
\ei
\item Principles
\bi
\item Information hiding
\item Least privelege
\item ...
\ei
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Instructor}

\begin{itemize}

\item Instructor
\begin{itemize}
\item Dr.\ Spencer Smith ({\tt smiths@mcmaster.ca})
\item ITB/167 (when campus opens)
\item Feel free to make an appointment
\item Use instructor's 
  \href{http://www.cas.mcmaster.ca/~smiths/SSmithSchedule.html} {schedule}
\end{itemize}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Introduction: Dr.\ Spencer Smith} 
\begin{itemize}
 
   \item Associate Professor, Department of Computing and Software.
   
   \item B.Eng.C.S, Civil Engineering Department, McMaster University. \\
         M.Eng., Ph.D., Civil Engineering Department, McMaster University.
 
   \item P.Eng.~(Licensed Professional Engineer in Ontario).
 
   \item \structure{Teaching}: Software design, scientific computing,
     introduction to computing, communication skills, software project
     management.
 
   \item \structure{Research}: Application of software engineering methodologies
     to improve the quality of scientific computing software.
 
 \end{itemize}

\end{frame}   

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Introductions}

\begin{itemize}
\item Your name
\item Degree program, supervisor's name
\item Academic background
\item Experience with:
  \begin{itemize}
  \item Science (such as physics)
  \item Scientific computing
  \item Continuous math
  \item Discrete math
  \item Software engineering
  \item Software development technology
    \begin{itemize}
    \item Git (GitHub or GitLab)
    \item LaTeX
    \item Make etc.
    \end{itemize}
  \item Your preferred OS
  \end{itemize}
\item What do you hope to get out of this course?
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Course Introduction}

\begin{itemize}
\item Calendar description
\begin{itemize}
\item Principles of software development for reliable and sustainable scientific
  and engineering software
\item Systematic process for development and documentation of
\bi
\item Requirements
\item System architecture
\item Detailed design
\item Implementation
\item Verification and Validation Plan
\item Verification and Validation Report
\ei
\end{itemize}
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Course Project}

\begin {itemize}

\item Select a candidate SC problem
\bi
\item Requires approval from instructor
\item Will accommodate your interests as much as feasible
\item Select a project related to your research
\item Scope needs to be feasible within one term
\ei
\item Milestones (Traditional)
\be
\item Software Requirements Specification (SRS)
\item Module Guide (MG)
\item Module Interface Specification (MIS)
\item Implementation (and appropriate programming language)
\item VnV Plan
\item VnV Report
\ee
\item Deliverables can potentially be modified to provide project flexibility
\end {itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{``Drasil'' Milestones}

\begin{itemize}
\item \href{https://github.com/JacquesCarette/Drasil}{Drasil} is used to capture
  knowledge and generate documentation and code

\begin {enumerate}

\item Software Requirements Specification (SRS) draft, as for manual
\item SRS Generated by Drasil
\item Drasil design choices and explanation
\item Code generation (Drasil supported language, or languages)
\item VnV Plan (manually produced)
\item VnV Report (manually produced)

\end {enumerate}

\item No grade advantage for one approach over the other
\item Can switch from Drasil to traditional
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Project Selection: Desired Qualities}
\begin{itemize}
\item Related to scientific computing
\item Simple, but not trivial
\item If feasible, select a project related to your research
\item Possibly re-implement existing software
\item Each student project needs to be unique
\item Possibly a specific physical problem
\item Possibly a (family of) general purpose tool(s)
\item Some examples follow, the links are just places to get started
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Project Selection (Traditional): Specific Physical Problem}
\begin{itemize}
\item
  \href{https://ocw.mit.edu/courses/mathematics/18-303-linear-partial-differential-equations-fall-2006/lecture-notes/heateqni.pdf}{
    Heated
    rod}
\item \href{http://www.tech.plym.ac.uk/sme/THER204B-web/Heatran2.PDF}{Heated plate}
\item \href{https://en.wikipedia.org/wiki/Double_pendulum}{Double pendulum}
\item \href{http://chrishecker.com/Rigid_Body_Dynamics}{Rigid body dynamics}
\item Column buckling
\item \href{https://en.wikipedia.org/wiki/Harmonic_oscillator}{Damped harmonic oscillator}
\item Stoichiometric calculations (chemical balance)
\item
  \href{http://www.tiem.utk.edu/~gross/bioed/bealsmodules/predator-prey.html}{Predator
    prey dynamics}
\item Imaging: filters, edge detection etc.
\item Medical Imaging
\item etc.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Project Selection (Traditional): General Purpose Tools}
\begin{itemize}
\item \href{https://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations}{Solution of ODEs}
\item \href{https://en.wikibooks.org/wiki/Numerical_Methods/Solution_of_Linear_Equation_Systems}{Solution of $A x = b$}
\item \href{https://en.wikipedia.org/wiki/Linear_regression}{Regression}
\item \href{https://en.wikibooks.org/wiki/Introduction_to_Numerical_Methods/Interpolation}{Interpolation}
\item \href{https://en.wikipedia.org/wiki/Numerical_integration}{Numerical integration}
\item \href{https://en.wikipedia.org/wiki/Fast_Fourier_transform}{FFT}
\item \href{https://en.wikipedia.org/wiki/Mesh_generation}{Mesh generation}
\item \href{https://en.wikipedia.org/wiki/Finite_element_method}{Finite element method}
\item Any chapter from a standard numerical methods textbook
\item etc.
\item The tool shouldn't be too simple
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Project Selection (Drasil): Specific Physical Problems}
\begin{itemize}
\item Set of explicit equations with the variables of interest isolated on one
  side of the equation (like
  \href{https://jacquescarette.github.io/Drasil/examples/GlassBR/srs/GlassBR_SRS.html}{GlassBR},
  or \href{https://jacquescarette.github.io/Drasil/examples/Projectile/srs/Projectile_SRS.html} {Projectile})
\item First order Initial value problem (like
  \href{https://jacquescarette.github.io/Drasil/examples/NoPCM/srs/NoPCM_SRS.html}
  {NoPCM}) 
\item Examples
\begin{itemize}
\item Cooling of a uniform temperature body over time
\item Charging or discharging of a capacitor
\item Flow into a reservoir
\item Population growth
\item Blood alcohol level over time
\item
  \href{http://ugrad.math.ubc.ca/coursedoc/math103/keshet.notes/chapter11Notes.pdf}{Some
    potential problems}
\item Worked example in a physics or chemistry textbook, using equations, like
  solving for the forces in a statically indeterminate structure
\end{itemize}
\end{itemize}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{``Faked'' Rational Design Process}

\begin{center}
\includegraphics[scale=0.4]{../Figures/Waterfall.pdf}
\end{center}

See Parnas and Clements 1986 about ``Faking It''

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Our ``Faked'' Process}

\begin{center}
\includegraphics[scale=0.55]{../Figures/VModelOfProcess.pdf}
\end{center}
\vspace{-1.0cm}
V Model

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Our Deliverables}

\begin{center}
\includegraphics[scale=0.55]{../Figures/VModelOfProcessXOut.pdf}
\end{center}
\vspace{-1.0cm}
Not all docs necessary

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Course Structure}

\begin {itemize}

\item Student and instructor presentations
\item Classroom discussions
\item Will present a subset of your documentation for in-class feedback
\item Will do a proof of concept demonstration early in the term
\item Structure from our documentation
\item Use GitHub issue tracker for feedback from other students

\end {itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Grade Assessment}

\begin {itemize}

\item (Traditional and Drasil) Presentations and class discussion 5\%

\item (Traditional and Drasil) ``Domain Expert'' and secondary reviewer roles 10\%

\item (Traditional and Drasil) Problem Statement, Risk, Proof of Concept (POC) Plan 0\%

\item (Traditional and Drasil) System Requirements Specification (SRS) 15\%

\item (Traditional and Drasil) System Verification and Validation (VnV-Syst) Plan 15\%

\item (Traditional) Module Guide and Module Interface Specification (MG and MIS)
  15\%

\item (Drasil) Drasil code and Code Explanation Document 15\%

\end {itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Grade Assessment Cont'd}

\begin {itemize}

\item (Traditional and Drasil) Final Documentation (including revised versions
  of previous documents, plus the source code, unit testing plan, reflection
  report and testing reports (System and Unit)) 40\%

\item Addition to Drasil infrastructure, pull request accepted (up to) 50\% (Bonus)

\end {itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Policy Statements}

\begin {itemize}

\item Ideas to improve the course are welcomed
\item Missed/late work please communicate in advance, or a penalty of 20 \% per
  working day
\item If there is a problem with discrimination please contact the Department
  Chair, or other appropriate body

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Academic Dishonesty}

\begin {itemize}

\item Academic dishonesty consists of misrepresentation by deception or by other
  fraudulent means
\item Can result in serious consequences, e.g. the grade of zero on an
  assignment, loss of credit with a notation on the transcript, and/or
  suspension or expulsion from the university.
\item It is your responsibility to understand what constitutes academic dishonesty
\item Three examples of academic dishonesty
\begin{itemize}
\item Plagiarism
\item Improper collaboration
\item Copying or using unauthorized aids in tests and examinations
\end{itemize}
\item Academic dishonesty will not be tolerated!
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Assigned Reading}

As often as possible, hyperlinks are included for references in the lecture
slides

\begin {itemize}

\item
  \href{https://gitlab.cas.mcmaster.ca/smiths/pub/-/blob/master/Smith2016.pdf}
  {\bibentry{Smith2016}}
\item
  \href{https://gitlab.cas.mcmaster.ca/smiths/pub/-/blob/master/SmithEtAl2007.pdf}
  {\bibentry{SmithEtAl2007}}
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Assigned Reading Cont'd}

\begin {itemize}

\item
  \href{https://gitlab.cas.mcmaster.ca/smiths/pub/-/blob/master/ParnasAndClements1986.pdf}
  {\bibentry{ParnasAndClements1986}}
\item \href{https://github.com/smiths/swhs}{Solar Water Heating System Example}
\item
  \href{https://jacquescarette.github.io/Drasil/examples/SWHS/srs/SWHS_SRS.html}
  {Solar Water Heating System Example SRS (Generated by Drasil)}
\item
  \href{https://jacquescarette.github.io/Drasil/examples/NoPCM/srs/NoPCM_SRS.html}
  {Simplified Solar Water Heating System Example SRS (Generated by Drasil)}
\item
  \href{https://jacquescarette.github.io/Drasil/examples/Projectile/srs/Projectile_SRS.html}
  {Projectile Example SRS (Generated by Drasil)}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\frametitle{Recommended Reading Order SRS}

\begin{itemize}

\item Goal Statement
\item Instance Models
\item Requirements
\item Introduction
\item Specific System Description

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}