-
W. Spencer Smith authoredW. Spencer Smith authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
IntroToCourse.tex 19.67 KiB
%\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}
\bi
\item Administrative details
\item Brief course overview
\item Instructor introduction
\item Course outline
\item Student introductions
\ei
\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: Wed (12:00 --1:20) and Thurs (12:00 -- 1:20)
\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}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Administrative Details}
\begin{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
\item For most, your repo will follow my
\href{https://github.com/smiths/capTemplate} {template 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 Includes analysis, design and ``exploration'' % point made by Isobel and Alex P
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{SC Examples}
\begin{itemize}
\item Ballistics (one of first uses of computing)
\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.
\item Optimization
\item Machine learning
\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 privilege
\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
\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 tools,
techniques, and principles to improve the quality of scientific computing
software.
\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} (DONE)
\item \href{http://chrishecker.com/Rigid_Body_Dynamics}{Rigid body dynamics}
\item
\href{https://www.omnicalculator.com/physics/buckling}
{Column buckling}
\item \href{https://en.wikipedia.org/wiki/Harmonic_oscillator}{Damped harmonic
oscillator} illustrated by
\href{http://lampx.tugraz.at/~hadley/physikm/apps/odeanalytic/dharmonic.en.php}
{online calculators}
\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
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Project Selection (Traditional): Specific Physical Problem (Cont'd)}
\begin{itemize}
\item \href{https://valdivia.staff.jade-hs.de/fachwerk_en.html} {2D Truss
Analysis}
\item Apply Kirchhoff's laws to
\href{https://www.youtube.com/watch?v=LVDX7T-jX3I} {balance a circuit}
\item
\href{https://faculty.ksu.edu.sa/sites/default/files/ce_382_chapter_8_seepage_1442_r.pdf}
{2D seepage}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{More Complex, but Already Started Projects}
\begin{itemize}
\item 3D aorta segmentation
\item \href{https://github.com/smiths/vdisp} {Vdisp}
\end{itemize}
\begin{center}
\includegraphics[scale=0.35]{../Figures/Aorta.jpg}
\end{center}
\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 or higher 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{Extending Drasil Projects (Experts only)}
\begin{itemize}
\item Refinement theories version of requirements
\item Teach Drasil about machine learning
\item Code generation for game physics or another existing example
\item Generation of a family of miniphysics games or visualizations
\item \href{https://github.com/JacquesCarette/Drasil/wiki/Potential-Projects}
{Potential projects wiki for inspiration}
\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}
Probably best to use the same order when doing your requirements presentation
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Student 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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}