Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tranp30/cas741
  • liangb30/cas-741-boliang
  • pignierb/cas741
  • jimoha1/cas741
  • huoy8/cas741
  • grandhia/cas741
  • chenq84/cas741
  • yex33/cas741
  • xuey45/cas741
  • garcilau/cas-741-uriel-garcilazo-msa
  • schankuc2/cas741
  • ahmady3/cas741
  • saadh/cas741
  • singhk56/cas741
  • lin523/cas741
  • fangz58/cas741
  • ceranich/cas741
  • norouf1/cas741
  • mirzam48/cas741
  • djavahet/cas741
  • hossaa27/cas741
  • yiding_el/cas-741-upate-name
  • sayadia/cas741
  • elmasn2/cas741
  • cheemf8/cas741
  • cheny997/cas741
  • ma209/cas741
  • mousas26/cas741
  • liuy363/cas741
  • wongk124/cas741
  • dua11/cas741
  • zhoug28/cas741
  • courses/cas-741-tst
  • liy443/cas-741-fork-csv
  • sochania/cas741
  • liy443/cas-741-update-csv-old
  • mahdipoa/cas741
  • wangz892/cas741
  • wangn14/cas741
  • defourej/cas741
  • zhaox183/cas741
  • smiths/cas741
42 results
Show changes
Showing
with 310 additions and 22 deletions
No preview for this file type
......@@ -45,6 +45,7 @@
\frametitle{MIS Continued}
\bi
\item ADD STRATEGY DESIGN PATTERN
\item Administrative details
\item Questions?
\item Review: Records, Libraries, ADTs, Abstract Objects, Generic ADTs
......@@ -94,6 +95,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Emphasis}
\begin{itemize}
\item Math notation
\item Modules with external interaction (environment variables)
\item Types of modules
\item Abstract Data Types
\item Qualities of an interface
\item Design patterns
\begin{itemize}
\item Adapter (Wrapper) pattern
\item Strategy pattern
\end{itemize}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}
% \frametitle{Nonfunctional Requirements}
% \begin{itemize}
......@@ -1084,6 +1103,217 @@ where $a$, $b$ and $c$ are suitable constants
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Design Patterns}
\begin{itemize}
\item Christopher Alexander (1977, buildings/towns):
\begin{itemize}
\item ``Each pattern describes a problem which occurs over and over again in our
environment, and then describes the core of the solution to that problem, in
such a way that you can use this solution a million times over, without ever
doing it the same way.''
\end{itemize}
\item Design reuse (intended for OO)
\item Solution for recurring problems
\item Transferring knowledge from expert to novice
%\item Provides language for communicating about design
\item A design pattern is a recurring structure of communicating components that
solves a general design problem within a particular context
\item Design patterns consist of multiple modules, but they do not constitute an
entire system architecture
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Adapter Design Pattern}
\includegraphics[scale=0.7]{500px-AdapterPatternForWiki.jpg}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Adapter UML Diagram}
% client uses target (follows targets interface)
% client, adapter and adaptee appear as in previous slide
\medskip
\includegraphics[scale=0.7]{adapter_clip.pdf}
\href{https://en.wikipedia.org/wiki/Adapter_pattern}
{Wikipedia entry}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{SimUDuck Example}
\bigskip
\includegraphics[scale=0.74]{StratPat-SimUDuck.pdf}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Adding a Fly Method}
\bigskip
\includegraphics[scale=0.85]{StratPat-FlyMethod.pdf}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Rubber Duck Problem}
\includegraphics[scale=0.7]{StratPat-RubberDuck.pdf}
\structure{How to stop rubber ducks from flying?} %override to do nothing
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Rubber Duck Problem Continued}
\bi
\item Solve problem by overriding the fly() method to do nothing
\item Not a good solution - think of the potential maintenance problems if we
add wooden decoys, which cannot fly, or quack - what about different quacks?
\ei
Which of the following are disadvantages of using inheritance to provide Duck
behaviour?
\begin{enumerate}[A.]
\item Some code is duplicated across subclasses
\item Runtime behaviour changes are difficult
\item Difficult to gain knowledge of all duck behaviours
\item Changes can unintentionally affect other ducks
\item All of the above %answer
\end{enumerate}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{How About an Interface?}
\includegraphics[scale=0.75]{StratPat-Interface.pdf}
Disadvantages of interface?
\begin{enumerate}[A.]
\item Maintenance nightmare - the different options for fly and quack are
duplicated everywhere %answer
\item Ducks that have fly and quack are clearly shown
\item All of the above
\end{enumerate}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Information Hiding}
How can the principle of information hiding help us?
\begin{enumerate}[A.]
\item Identify the aspects of the application that are likely to change and
separate them from what is unlikely to change
\item Provide a means for part of the system to vary independently of the other
parts
\item Prevent the program's user from knowing which ducks can fly and/or quack
\item A and B %answer
\item A, B and C
\end{enumerate}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Separate Out Changeable Parts (Likely Changes)}
\bigskip
\includegraphics[scale=0.85]{StratPat-DuckBehaviours.pdf}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Implementing the Duck Behaviours}
\bigskip
\includegraphics[scale=0.66]{StratPat-ImpDuckBehaviours.pdf}
\bi
\item Program to an interface not an implementation (interface in the sense we have
used it for MISes, not just a Java interface)
\item Other modules can use these behaviours too
\item Can add new behaviours without touching the original Duck class
\ei
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{The Big Picture}
\bigskip
\includegraphics[scale=0.66]{StratPat-BigPicture.pdf}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Often Favour Composition over Inheritance}
\bi
\item Composition provides a ``has a'' relationship, as opposed to an ``is a''
relationship
\item Composition provides greater flexibility
\item Composition allows changing behaviour at runtime
\item Many languages (like Java) do not allow multiple inheritance, but can have
multiple compositions
\ei
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Strategy Pattern}
Defines a family of algorithms, encapsulates each one, and makes them
interchangeable. Strategy lets the algorithm vary independently from the
clients that use it.
\includegraphics[scale=0.6]{Strategy1.png}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[allowframebreaks]
\frametitle{References}
......
File added
File added
File added
File added
File added
File added
File added
Lectures/L16_MISContinued/Strategy1.png

5.62 KiB

File added
No preview for this file type
......@@ -62,16 +62,26 @@
\bi
\item Draft participation grade
\item When developing your code, remember that your goal is for someone else to be able to compile and run it
\item Upcoming classes
\bi
\item L19 --- Assurance Cases
\item L20 --- Artifact Generation
\item L21a--24 --- Implementation/Testing Presentations
\item L21b --- A Holistic Approach (not this year)
\item Grades posted for domain expert issues
\item When developing your code, remember that your goal is for someone else to
be able to compile and run it
\item If you project is non-research, you need to complete an extra to get
access all potential marks on the final documentation
\item Make sure I can find your extra
\begin{itemize}
\item Make sure \texttt{Repos.csv} is up to date
\item Put the extra in the correct spot according to \texttt{capTemplate}
\item Delete extras (and SRS files) you aren't using
\end{itemize}
% \item Upcoming classes
% \bi
% \item L19 --- Assurance Cases
% \item L20 --- Artifact Generation
% \item L21a--24 --- Implementation/Testing Presentations
% \item L21b --- A Holistic Approach (not this year)
%\item L22 --- Drasil Presentations
%\item L25 --- Discussion
\ei
% \ei
\item No requirement to provide feedback to colleagues on final documentation
\ei
......@@ -79,6 +89,16 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Course Evaluations}
\begin{itemize}
\item Course experience surveys will close on Tuesday, April 8, 2025 11:59 PM
\item \url{https://mcmaster.bluera.com/mcmaster/}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{../Deadlines.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -100,7 +120,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Final Presentations}
\frametitle{Implementation/Final Presentations}
\begin{itemize}
\item Based on your implementation and testing
\item You decide what to focus on
......@@ -139,10 +159,13 @@ requirement and trace it all the way to testing
\ei
\item Make it easy to see changes from Rev 0
\bi
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Reflection} {Reflection document}
\item \href{https://github.com/smiths/capTemplate/blob/main/docs/ReflectAndTrace/ReflectAndTrace.pdf} {Reflection and traceability document}
\item Closed issues in the issue tracker
\item Specific explanation in Revision History
\item Comments in tex file
\item Summarize with a table, if possible
\item Use \href{https://commandmasters.com/commands/latexdiff-common/}
{latexdiff} between Rev0 and Rev1 documents, if necessary
\item Comments in tex file (last resort)
\ei
\end{itemize}
\end{frame}
......@@ -164,7 +187,7 @@ requirement and trace it all the way to testing
\item VnV Report
\item Source Code
\item Drasil projects no longer need to maintain the traditionally generated SRS
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Reflection} {Reflection Document}
\item \href{https://github.com/smiths/capTemplate/blob/main/docs/ReflectAndTrace/ReflectAndTrace.pdf} {Reflection Document}
\end{itemize}
\end{frame}
......@@ -174,7 +197,7 @@ requirement and trace it all the way to testing
\frametitle{Final Doc: Reflect and Trace}
\begin{itemize}
\item Reflect and trace document in
\href{https://github.com/smiths/capTemplate/tree/main/docs/Reflection}
\href{https://github.com/smiths/capTemplate/blob/main/docs/ReflectAndTrace/ReflectAndTrace.pdf}
{capTemplate repo}
\item Summarize response to ALL feedback
......@@ -264,6 +287,30 @@ give instructions on how to run the software, how to execute the tests
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Extras}
\begin{itemize}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/CodeWalkthroughs} {Code Walkthrough Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/CostAnalysisReport} {Cost Analysis Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/DesignThinking} {Design Thinking Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/FormalProof} {Formal Proof Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/GenderMagPersonas} {Gender Mag Personas Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/GreenComputing} {Green Computing Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/LiteratureReview} {Literature Review Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/NormansPrinciples} {Norman's Principles Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/PerformanceReport} {Performance Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/UsabilityTesting} {Usability Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/UserInstructionalVideo} {User Instructional Video}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/UserManual} {User Manual} --- see \href{https://gitlab.cas.mcmaster.ca/smiths/cas741/-/blob/master/ReferenceMaterial/UserManualPresentation.pdf?ref_type=heads} {slides}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/Wireframe} {Wireframe Report}
\item \href{https://github.com/smiths/capTemplate/tree/main/docs/Extras/Other} {Other}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Unit VnV Plan}
\begin{itemize}
......@@ -367,8 +414,8 @@ give instructions on how to run the software, how to execute the tests
\item
\href{https://gitlab.cas.mcmaster.ca/courses/capstone/-/tree/main/SamplesOfStudentWork/VnVReport}
{Capstone Sample reports}
\item \href{https://github.com/smiths/swhs/tree/master/docs/VnVReport}
{Solar Water Heating System}
\item \href{https://github.com/smiths/swhs/blob/master/docs/VnVReport/PCM_VVReport.pdf}
{Solar Water Heating System (PCM)}
\item
\href{https://github.com/smiths/capTemplate}
{Follow given template}
......
......@@ -17,11 +17,7 @@ design, module design, implementation, testing and inspection.
- roughly organized following the typical "v-model" documentation (req, test, des)
- review of SE for SC
**BlankProjectTemplate**
- starting point for each project
- separate template for single scientific application versus family of computing libraries
**ToolTutorials**
**Tools**
- tutorials on doxygen, git and GitLab, make, unit testing and LaTeX
**Examples**
......
File added
Num, Last Name, First Name, e-mail, GitHub ID, Supervisor, Project Name, Project Topic, Traditional or Drasil or Other, Research Project (Yes or No), Extra, GitHub Repos url, Branch, Prob State Approval?, Domain Expert Reviewer,
0, Last Name, First Name, email@mcmaster.ca, githubid, Dr. X, projName, Project Title, traditional or Drasil, Yes/No, Usability study or user manual or code walkthrough or formal proof or other, https://github.com/..., branch, Yes/No, name
\ No newline at end of file
Num, Last Name, First Name, e-mail, GitHub ID, Supervisor, Project Name, Project Topic, Traditional or Drasil or Other, Research Project (Yes or No), Extra, GitHub Repos url, Branch, Prob State Approval?, Domain Expert Reviewer,
0, Last Name, First Name, email@mcmaster.ca, githubid, Dr. X, projName, Project Title, traditional or Drasil, Yes/No, Usability study or user manual or code walkthrough or formal proof or other, https://github.com/..., branch, Yes/No, name,
1, Tran, Phillip, tranp30@mcmaster.ca, ptrandev, Dr. Denise Geiskkovitch, OCRacle, Optical Character Recognition for Latin Alphabet Characters, Traditional, No, Code walkthrough, https://github.com/ptrandev/OCRacle, main, YES, Hussein Saad,
2, Fang, Ziyang, fangz58@mcmaster.ca, FangZiyang, Dr. Spencer Smith, polar-bear-robot, Robot kinematics and dynamics software, traditional, No, User manual, https://github.com/FangZiyang/CAS741-Ryan, main, YES, Alaap Grandhi,
3, Lin, Junwei, lin523@mcmaster.ca, Lychee-acaca, Dr. Shiva Kumar, RwaveDetection, ECG signal processing and R-wave detection, traditional, No,User manual, https://github.com/Lychee-acaca/CAS741, main, YES, Baptiste Pignier,
4, Jimoh, Aliyah, jimoha1@mcmaster.ca, AliyahJimoh, Dr. Matthew Giamou, 2D-Localizer, 2-D Localization for Mobile Robots, traditional, Yes, N/A, https://github.com/AliyahJimoh/2D-Localizer, main, YES, Kiran Singh,
5, Singh, Kiran, singhk56@mcmaster.ca, KiranSingh15, Dr. Matthew Giamou, CAS-741-Image-Correspondences, Image Feature Correspondences for Camera Calibration, traditional, Yes, User Manual, https://github.com/KiranSingh15/CAS-741-Image-Correspondences, main, YES, Aliyah Jimoh,
6, Schankula, Christopher, schankuc@mcmaster.ca, CSchank, Dr. Spencer Smith and Dr. Jacques Carette, Drasil Tensors,"Adding Tensors, Matrices, and Vectors to Drasil", Other (Meta-Drasil), Yes, Possible research or arXiv paper, https://github.com/CSchank/TensorCodeGen, main, YES, Phillip Tran,
7, Xue, Yuanqi, xuey45@mcmaster.ca, Yuanqi-X, Dr.Lingyang Chu, Re-PROTGNN, Enhancing GNN Interpretability with Prototype Learning, traditional, Yes, N/A, https://github.com/Yuanqi-X/CAS751-project, main, YES, Yinying Huo,
8, Garcilazo Cruz, Uriel, garcilau@mcmaster.ca, UGarCil, Dr. Alejandro Vargas Hernandez, SUBLIMark, Optimizing the alignment of gene sequential data using greedy algorithms, Traditional, No, User manual, https://github.com/UGarCil/UGarcil_capstone, main, YES, Junwei Lin,
9, Saad, Hussein, saadh@mcmaster.ca, husseinsd1, Dr. Matthew Giamou, optimal-em-arrangement, Optimal actuator positioning for electromagnetic actuation systems, traditional, Yes, N/A, https://github.com/husseinsd1/optimal-em-arrangement, main, YES, Uriel Garcilazo Cruz,
10, Huo, Yinying, huoy8@mcmaster.ca, V-AS, Dr. Sivan Sabato, Two-tower-recommentation-system, A Two-tower embeddings recommendation system for book recommendation, Traditional, No, User Manual, https://github.com/V-AS/Two-tower-recommender-system, main, YES, Yuanqi,
11, Pignier, Baptiste, pignierb@mcmaster.ca, BaptistePignier, N/A, CAS741-GameOfLife, Continuous version of Conway's Game of Life , traditional, No, User Manual, https://github.com/BaptistePignier/CAS741-GameOfLife, main, YES, Schankula Christopher,
12, Chen, Qianlin, chenq84@mcmaster.ca, marischan888, Dr. Anand Christopher, Computed-Tomography-Image-Reconstruction, Processing CT image reconstruction with filtering techniques, traditional, No, User Manual, https://github.com/marischan888/Computed-Tomography-Image-Reconstruction, main, YES, Joe Ye,
13, Grandhi, Alaap, grandhia@mcmaster.ca, alaapgrandhi, Dr. Matthew Giamou, equivariant-sensor-fusion, Alignment-aware LiDAR-Camera sensor fusion for autonomous driving, traditional, Yes, N/A, https://github.com/alaapgrandhi/equivariant-sensor-fusion, main, YES, Bo Liang,
14, Liang, Bo, liangb30@mcmaster.ca, liang-bo96, Dr. Christian Brodbeck, LiveNeuro, A Neural Data Interactive Visualization Tool, Traditional, NO, User Manual, https://github.com/liang-bo96/CAS741, main, YES, Ziyang Fang,
15, Ye, Joe, yex33@mcmaster.ca, yex33, Dr. Ned Nedialkov, MPIR, A sparse linear solver for quasi-definite matrices using iterative refinement in mixed precision, traditional, Yes, User Manual, https://github.com/yex33/MPIR, main, YES, Qianlin Chen,
\ No newline at end of file