Difference between revisions of "Expanding Curricula for Parallel Computing Fundamentals in Computer Architecture and Hardware Courses"

From REU@MU
Jump to: navigation, search
(Initial project outline goal)
 
Line 1: Line 1:
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.
 
  
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.
+
== Motivation ==
 +
 
 +
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.
 +
 
 +
Pedagogically, it may be more beneficial to teach parallel computing in bursts within core computer science courses.  This has been done and studied already to some extent, but usually just to introductory courses, such as a first level data structures course, for example.  As for hardware and computer architecture courses, parallel computing lacks, and its presence may help with foundational understandings of parallel machines.  That way, in more advanced parallel computing courses, students would ideally have a strong understanding of parallel computing fundamentals.
 +
 
 +
== Goals ==
  
 
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.
 
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.
Line 7: Line 12:
 
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.
 
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.
  
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.
+
Initially, I will seek to develop curriculum involving memory management as "parallelizing" problems is currently better covered in core computing courses.  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...).
 +
 
 +
== Methods ==
 +
 
 +
=== The Assignment ===
 +
 
 +
[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).

Revision as of 21:08, 6 July 2018

Motivation

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.

Pedagogically, it may be more beneficial to teach parallel computing in bursts within core computer science courses. This has been done and studied already to some extent, but usually just to introductory courses, such as a first level data structures course, for example. As for hardware and computer architecture courses, parallel computing lacks, and its presence may help with foundational understandings of parallel machines. That way, in more advanced parallel computing courses, students would ideally have a strong understanding of parallel computing fundamentals.

Goals

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.

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.

Initially, I will seek to develop curriculum involving memory management as "parallelizing" problems is currently better covered in core computing courses. 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...).

Methods

The Assignment

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).