diff --git a/CourseOutline/CAS741_Outline.pdf b/CourseOutline/CAS741_Outline.pdf index 62c5c39e4a076682ccabe64e3a7481050ade3ae0..65550ddd784a0261beeabc3a1f65ec2a6557d4c8 100644 Binary files a/CourseOutline/CAS741_Outline.pdf and b/CourseOutline/CAS741_Outline.pdf differ diff --git a/CourseOutline/CAS741_Outline.tex b/CourseOutline/CAS741_Outline.tex index 1f5abf244c708c4fbe7e34adf2f06ecb2d2b23d4..9d07a2c15b6012b5e8392d528d5c80c8dd14a1ab 100755 --- a/CourseOutline/CAS741_Outline.tex +++ b/CourseOutline/CAS741_Outline.tex @@ -32,11 +32,11 @@ \renewcommand{\labelenumi}{\arabic{enumi}.} \newcounter{temp} -\begin {document} +\begin{document} \maketitle -This course outline contains important information that will effect your +This course outline contains important information that will affect your grade. You should retain and refer to this outline throughout the term. \section {Instructor} @@ -51,56 +51,55 @@ Office Hours: Drop in, or by appointment\\ This course presents the basic principles of software development for reliable and sustainable scientific and engineering software. Using example -applications, a systematic process is given for the development and +applications, we discuss a systematic process for the development and documentation of requirements, system design, module design, implementation, -testing and inspection. +testing, and inspection. \section{Introduction} -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. A small sample of some important applications of scientific -computation include the following: designing new automotive parts, analysing the -flow of blood in the body, and determining the concentration of a pollutant -released into the groundwater. As these examples illustrate, scientific -computation can be used for tackling problems that impact such areas as -manufacturing, financial planning, environmental policy, and the health, welfare -and safety of communities. Given the important applications of scientific -computation, it is surprising that little emphasis is currently placed on the -quality of the software that performs the computations. Although many +Scientific computation (Research Software) 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. A small sample of some important +applications of scientific computation include the following: designing new +automotive parts, analysing the flow of blood in the body, and determining the +concentration of a pollutant released into the groundwater. As these examples +illustrate, scientific computation can be used for tackling problems that impact +such areas as manufacturing, financial planning, environmental policy, and the +health, welfare and safety of communities. Given the important applications of +scientific computation, it is surprising that developers place little emphasis +on the quality of the software that performs the computations. Although many successful and sophisticated algorithms have been developed for scientific computing, the software often suffers from problems with such qualities as -reliability, usability, verifiability, maintainability, reusability and -portability. This is why scientific software is routinely sold with a -disclaimer instead of a warranty. To make matters worse, the quality of -scientific software is becoming increasingly more of an issue because the -complexity and size of the problems that can be simulated on modern computers is -constantly growing. The question for the future is how to meet the growing need -for providing quick solutions to large and complex problems, and at the same -time ensure that the solutions are correct? This graduate course will -investigate this question by applying to scientific computing problems such -software engineering methodologies as commonality analysis, requirements -analysis and documentation, modular decomposition, module interface -specification, testing, code and document generation and assurance cases. - -The course will look at tools, techniques and principles for iterative and +reliability, usability, verifiability, maintainability, reusability, and +portability. This is why developers sell scientific software with a disclaimer +instead of a warranty. To make matters worse, the quality of scientific +software is becoming increasingly more of an issue because the complexity and +size of the problems that can be simulated on modern computers is constantly +growing. The question for the future is how to meet the growing need for +providing quick solutions to large and complex problems, and at the same time +ensure that the solutions are correct? This graduate course will investigate +this question by applying to scientific computing problems such software +engineering methodologies as commonality analysis, requirements analysis and +documentation, modular decomposition, module interface specification, testing, +code and document generation and assurance cases. + +The course will look at tools, techniques, and principles for iterative and incremental development of scientific and engineering software. Despite the iterative development cycle, the documentation will follow 5 rational steps: i) identify the problem, ii) document the requirements, iii) design the system, iv) implement the software, and v) perform tests. This structure is well suited to scientific computing because it parallels the idealized scientific method, as -follows: i) a physical problem of engineering or scientific importance is -identified; ii) a system of governing equations and the associated boundary -conditions are derived; iii) a numerical algorithms are developed; iv) the -numerical algorithms are implemented on a computer; and, v) the model and the -computed results are verified and validated, with the potential to return to one -of the previous steps if necessary. These five steps are inherently -multidisciplinary as they involve skills from physical modelling, mathematics, -numerical analysis and computer science. For this reason it is important that -requirements (including assumptions) and design decisions are clearly -documented. - -\subsection*{Course Web Site} +follows: i) we identify a physical problem of engineering or scientific +importance; ii) we derive a system of governing equations and the associated +boundary conditions; iii) we develop numerical algorithms; iv) we implement the +numerical algorithms on a computer; and, v) we verify and validate the model and +the computed results, with the potential to return to one of the previous steps +if necessary. These five steps are inherently multidisciplinary as they involve +skills from physical modelling, mathematics, numerical analysis and computer +science. For this reason it is important that we clearly document requirements +(including assumptions) and design decisions. + +\subsection*{Course Website} This course will be administered via Avenue to Learn. Go to @@ -113,14 +112,13 @@ This course will be administered via Avenue to Learn. Go to \noindent to access the course's Avenue to Learn page. Please send only normal McMaster e-mail; do not send mail via Avenue. -Students should be aware that, when they access the electronic -components of this course, private information such as first and last -names, user names for the McMaster e-mail accounts, and program -affiliation may become apparent to all other students in the same -course. The available information is dependent on the technology -used. Continuation in this course will be deemed consent to this -disclosure. If you have any questions or concerns about such -disclosure please discuss this with the Instructor. +Students should be aware that, when they access the electronic components of +this course, private information such as first and last names, usernames for the +McMaster e-mail accounts, and program affiliation may become apparent to all +other students in the same course. The available information is dependent on +the technology used. Continuation in this course will be deemed consent to this +disclosure. If you have any questions or concerns about such disclosure please +discuss this with the Instructor. \emph{It is the student's responsibility to be aware of the information on the course's Avenue to Learn page and to check @@ -128,22 +126,25 @@ disclosure please discuss this with the Instructor. The primary purpose of Avenue will be for maintaining grades. Most of the course content will be maintained in a public git repository. -You can access this repository at:\\ +You can access this repository at: +~\newline \href{https://gitlab.cas.mcmaster.ca/smiths/cas741/}{https://gitlab.cas.mcmaster.ca/smiths/cas741/}\\ -\noindent Rather than use the Avenue discussion board, please post your -questions (issues) to the GitLab issue tracker. +% \noindent Rather than use the Avenue discussion board, please post your +% questions (issues) to the GitLab issue tracker. In addition to Avenue and the Gitlab course note repository, every student will create a public gitHub repository (with the instructor added as a full access -collaborator) for their work. The GitHub server is located at -\url{https://github.com/}. Students will be expected to use GitHub to provide -comments on the work of other students in the class. +collaborator) for their work. The GitHub server is at +\url{https://github.com/}. Each student's repo will start from the given +\href{https://github.com/smiths/capTemplate} {template repo}. Students will be +expected to use GitHub to provide comments on the work of other students in the +class. \subsection*{Classes} -Classes will be held virtually using Microsoft Teams. +Classes will be held in person in the graduate classroom (ITB/222). \section {Course Project} @@ -177,19 +178,20 @@ waterfall model. Typically, students will use one of two methodologies: If a student opts for the Drasil approach, they can later switch back to the Traditional approach, without any grade related penalty. -The Drasil approach uses the Drasil tool -(\url{https://github.com/JacquesCarette/Drasil}) to generate the SRS and the -code. Since Drasil is incomplete, the V\&V documents will still be generated -manually. Further details on Drasil will be covered during the class lectures. +The Drasil approach uses the \href{https://github.com/JacquesCarette/Drasil} +{Drasil framework} to generate the SRS and the code. Since Drasil is +incomplete, the V\&V documents will still be generated manually. Further +details on Drasil will be covered during the class lectures. With approval from the instructor, the deliverables can potentially be modified, if a project is more suited to a different structure. For instance, a project could replace one of the above deliverables with an assurance case deliverable, or with a greater emphasis on domain specific code to automatically build the -deliverables. Projects that add something substantial to the base requirements -are eligible for a bonus grade of up to 50\%. For instance, adding support for -an external library to Drasil is worth additional marks. The specific bonus -should be discussed with the instructor in advance. +deliverables, or with extending Drasil's capabilities. Projects that add +something substantial to the base requirements are eligible for a bonus grade of +up to 50\%. For instance, adding support for a new external library to Drasil +would be worth additional marks. The specific bonus should be discussed with +the instructor in advance. \section {Course Structure} @@ -200,8 +202,8 @@ expected the class discussion will assist in improving the quality of the written deliverables. Each student following the traditional approach will be expected to virtually hand in the following written documents: SRS, MG, MIS, VnV Plan, VnV Report, code and Final Documentation. The deliverables for the Drasil -approach are the same, except that the MG and MIS are replaced with the Drasil -code to generate the documentation and code. +approach are the same, except we replace the MG and MIS with the Drasil code to +generate the documentation and code. \section {Grading}