https://reu.cs.mu.edu/index.php?title=Expanding_Curricula_for_Parallel_Computing_Fundamentals_in_Computer_Architecture_and_Hardware_Courses&feed=atom&action=historyExpanding Curricula for Parallel Computing Fundamentals in Computer Architecture and Hardware Courses - Revision history2024-03-29T06:53:35ZRevision history for this page on the wikiMediaWiki 1.23.13https://reu.cs.mu.edu/index.php?title=Expanding_Curricula_for_Parallel_Computing_Fundamentals_in_Computer_Architecture_and_Hardware_Courses&diff=3367&oldid=prevBlevando: /* The Assignment */2018-07-11T22:30:02Z<p><span dir="auto"><span class="autocomment">The Assignment</span></span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 22:30, 11 July 2018</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 19:</td>
<td colspan="2" class="diff-lineno">Line 19:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[https://en.wikipedia.org/wiki/Urn_problem Urn problems] are discrete math problems that concern themselves with randomly drawing objects out of an urn.  One such problem is the coupon collector's problem.  This problem in particular can be used to test psuedorandom number generators (PRNGs).  The premise of the problem is as such:  An urn contains ''n'' unique coupons.  With replacement, someone draws coupons from the urn one at a time.  This process is repeated until all ''n'' coupons have been drawn, and the number of attempts that it took to get every coupon is recorded.  From a discrete math perspective, one may calculate the expected number of coupons drawn until all ''n'' coupons are held for a given ''n''.  However, if the distribution of the number of attempts to get all coupons for a given ''n'' is recorded, the problem can be used to test PRNGs.  If the distribution is not as expected, then you don't have a good PRNG (assuming sufficient sample size).</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>[https://en.wikipedia.org/wiki/Urn_problem Urn problems] are discrete math problems that concern themselves with randomly drawing objects out of an urn.  One such problem is the coupon collector's problem.  This problem in particular can be used to test psuedorandom number generators (PRNGs).  The premise of the problem is as such:  An urn contains ''n'' unique coupons.  With replacement, someone draws coupons from the urn one at a time.  This process is repeated until all ''n'' coupons have been drawn, and the number of attempts that it took to get every coupon is recorded.  From a discrete math perspective, one may calculate the expected number of coupons drawn until all ''n'' coupons are held for a given ''n''.  However, if the distribution of the number of attempts to get all coupons for a given ''n'' is recorded, the problem can be used to test PRNGs.  If the distribution is not as expected, then you don't have a good PRNG (assuming sufficient sample size).</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">The advantages of this problem are numerous.  To begin, a few potential memory problems are present.  Most basically, race conditions are created with naïve approaches to multi-core array access in shared memory.  Further, if the memory model is not set up properly, there can be issues with cache coherency.  Not only must memory be marked as shareable, but this shared memory must have the correct write back and read/write allocate policies.  Failure to do so will cause unpredictable behavior.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Secondarily, the coupon collector's problem is conceptually easy to understand and implement.  As programming in assembly is difficult already, a tough programming assignment distracts from the multi-core challenge.  Finally, testing and implementing PRNGs fits well into existing curriculum at Marquette University.  Besides being a relevant topic to most computer science students, Marquette students deal with cryptography in an Operating Systems assignment (often) in the semester following Hardware Systems.</ins></div></td></tr>
</table>Blevandohttps://reu.cs.mu.edu/index.php?title=Expanding_Curricula_for_Parallel_Computing_Fundamentals_in_Computer_Architecture_and_Hardware_Courses&diff=3346&oldid=prevBlevando at 21:08, 6 July 20182018-07-06T21:08:22Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 21:08, 6 July 2018</td>
</tr><tr><td colspan="2" class="diff-lineno">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">As parallel computing has become more common and accessible, the need for teaching concepts in parallel and distributed computing has increased.  This need has been met in many universities, but only very recently.  Currently, most approaches involve some sort of upper-level course devoted to parallel concepts, but this is also the extent of parallel instruction in many cases.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Pedagogically, it may be more beneficial to teach parallel computing in bursts within core computer science courses.  This has been done already to some extent, but usually just to courses such as <del class="diffchange diffchange-inline">introductory courses, or maybe </del>data structures <del class="diffchange diffchange-inline">courses</del>, for example.  As for hardware and computer architecture courses, parallel computing lacks, and its presence may help with foundational understandings of parallel.  That way, in more advanced parallel computing courses, students would <del class="diffchange diffchange-inline">come in with experience</del>.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">== Motivation ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">As parallel computing has become more common and accessible, the need for teaching concepts in parallel and distributed computing has increased.  This need has been met in many universities, but only very recently.  Currently, most approaches involve some sort of upper-level course devoted to parallel concepts, and this is often the extent of parallel computing instruction in many cases.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Pedagogically, it may be more beneficial to teach parallel computing in bursts within core computer science courses.  This has been done <ins class="diffchange diffchange-inline">and studied </ins>already to some extent, but usually just to <ins class="diffchange diffchange-inline">introductory </ins>courses<ins class="diffchange diffchange-inline">, </ins>such as <ins class="diffchange diffchange-inline">a first level </ins>data structures <ins class="diffchange diffchange-inline">course</ins>, for example.  As for hardware and computer architecture courses, parallel computing lacks, and its presence may help with foundational understandings of parallel <ins class="diffchange diffchange-inline">machines</ins>.  That way, in more advanced parallel computing courses, students would <ins class="diffchange diffchange-inline">ideally have a strong understanding of parallel computing fundamentals</ins>.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">== Goals ==</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Developing parallel computing curriculum for hardware courses would contribute to a model that encourages parallel concepts in almost all computer science offerings.  Such a model understands that parallel computing is foundational to computer science practices in industry and academia, so its education should be treated as such.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>Developing parallel computing curriculum for hardware courses would contribute to a model that encourages parallel concepts in almost all computer science offerings.  Such a model understands that parallel computing is foundational to computer science practices in industry and academia, so its education should be treated as such.</div></td></tr>
<tr><td colspan="2" class="diff-lineno">Line 7:</td>
<td colspan="2" class="diff-lineno">Line 12:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>To study the potential benefits of including parallel curriculum in hardware courses, I will research the development of relevant curriculum to teach parallel computing in Marquette University's Hardware Systems course with the plan to pilot the material this upcoming fall (2018) semester.  After the semester, the effectiveness of the curriculum will be measured.  To assist teaching parallel concepts, the Embedded Xinu operating system will be employed to develop homeworks and labs in order for students to focus on parallel concepts instead of spending time building an application from the ground up.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>To study the potential benefits of including parallel curriculum in hardware courses, I will research the development of relevant curriculum to teach parallel computing in Marquette University's Hardware Systems course with the plan to pilot the material this upcoming fall (2018) semester.  After the semester, the effectiveness of the curriculum will be measured.  To assist teaching parallel concepts, the Embedded Xinu operating system will be employed to develop homeworks and labs in order for students to focus on parallel concepts instead of spending time building an application from the ground up.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Initially, I will seek to develop curriculum involving memory management as "parallelizing" problems is currently better covered in core computing courses.  The <del class="diffchange diffchange-inline">specifics </del>of the <del class="diffchange diffchange-inline">material will </del>be <del class="diffchange diffchange-inline">formed after reviewing relevant literature </del>and <del class="diffchange diffchange-inline">conducting more research</del>.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Initially, I will seek to develop curriculum involving memory management as "parallelizing" problems is currently better covered in core computing courses.  <ins class="diffchange diffchange-inline">This will include deciding on a problem that bests lends itself to teach shared memory management.  While I will not select something that is trivial, the objective is not to select a difficult problem as the focus should be on the interaction between cores.  Assembly programming is difficult enough on its own that I do not want students to struggle on the assembly programming more than needed.  After the problem is carefully tested by myself, I will meet with Dr. Debbie Perouli, the next professor set to teach Hardware Systems at Marquette University.  Consulting with Professor Perouli will help me to develop lecture notes and assessments methods that best match her style.  Finally, I will construct survey questions and methods to assess the effectiveness of this new teaching method.  (Hopefully, students will opt to take the surveys...).</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">== Methods ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">=== </ins>The <ins class="diffchange diffchange-inline">Assignment ===</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">[https://en.wikipedia.org/wiki/Urn_problem Urn problems] are discrete math problems that concern themselves with randomly drawing objects out </ins>of <ins class="diffchange diffchange-inline">an urn.  One such problem is </ins>the <ins class="diffchange diffchange-inline">coupon collector's problem.  This problem in particular can </ins>be <ins class="diffchange diffchange-inline">used to test psuedorandom number generators (PRNGs).  The premise of the problem is as such:  An urn contains ''n'' unique coupons.  With replacement, someone draws coupons from the urn one at a time.  This process is repeated until all ''n'' coupons have been drawn, </ins>and <ins class="diffchange diffchange-inline">the number of attempts that it took to get every coupon is recorded.  From a discrete math perspective, one may calculate the expected number of coupons drawn until all ''n'' coupons are held for a given ''n''.  However, if the distribution of the number of attempts to get all coupons for a given ''n'' is recorded, the problem can be used to test PRNGs.  If the distribution is not as expected, then you don't have a good PRNG (assuming sufficient sample size)</ins>.</div></td></tr>
</table>Blevandohttps://reu.cs.mu.edu/index.php?title=Expanding_Curricula_for_Parallel_Computing_Fundamentals_in_Computer_Architecture_and_Hardware_Courses&diff=3083&oldid=prevBlevando: Initial project outline goal2018-06-01T20:57:55Z<p>Initial project outline goal</p>
<p><b>New page</b></p><div>As parallel computing has become more common and accessible, the need for teaching concepts in parallel and distributed computing has increased. This need has been met in many universities, but only very recently. Currently, most approaches involve some sort of upper-level course devoted to parallel concepts, but this is also the extent of parallel instruction in many cases.<br />
<br />
Pedagogically, it may be more beneficial to teach parallel computing in bursts within core computer science courses. This has been done already to some extent, but usually just to courses such as introductory courses, or maybe data structures courses, for example. As for hardware and computer architecture courses, parallel computing lacks, and its presence may help with foundational understandings of parallel. That way, in more advanced parallel computing courses, students would come in with experience.<br />
<br />
Developing parallel computing curriculum for hardware courses would contribute to a model that encourages parallel concepts in almost all computer science offerings. Such a model understands that parallel computing is foundational to computer science practices in industry and academia, so its education should be treated as such.<br />
<br />
To study the potential benefits of including parallel curriculum in hardware courses, I will research the development of relevant curriculum to teach parallel computing in Marquette University's Hardware Systems course with the plan to pilot the material this upcoming fall (2018) semester. After the semester, the effectiveness of the curriculum will be measured. To assist teaching parallel concepts, the Embedded Xinu operating system will be employed to develop homeworks and labs in order for students to focus on parallel concepts instead of spending time building an application from the ground up.<br />
<br />
Initially, I will seek to develop curriculum involving memory management as "parallelizing" problems is currently better covered in core computing courses. The specifics of the material will be formed after reviewing relevant literature and conducting more research.</div>Blevando