Parallel and Distributed Computing Early ( and Often) Steven Bogaerts (speaker), Kyle Burke, Brian Shelburne Department of Mathematics & Computer Science.

Slides:



Advertisements
Similar presentations
A Dynamic World, what can Grids do for Multi-Core computing? Daniel Goodman, Anne Trefethen and Douglas Creager
Advertisements

Running Large Graph Algorithms – Evaluation of Current State-of-the-Art Andy Yoo Lawrence Livermore National Laboratory – Google Tech Talk Feb Summarized.
NSF/TCPP Early Adopter Experience at Jackson State University Computer Science Department.
Limited Time and Experience: Parallelism in CS1 Fourth NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-14) Steven Bogaerts.
Dhananjai M. Rao CSE Department, Oxford, OHIO Using C++11 to teach Concurrency and Parallelism Concepts.
Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University.
DAAD project “Joint Course on OOP using Java” Development in teaching Design Patterns in the course OOP with Java Ana Madevska Bogdanova Faculty of Computer.
ECE669 L5: Grid Computations February 12, 2004 ECE 669 Parallel Computer Architecture Lecture 5 Grid Computations.
Impact of Alternative Introductory Courses on Programming Concept Understanding Allison Elliott Tew W. Michael McCracken Mark Guzdial College of Computing.
Algorithms in a Multiprocessor Environment Kevin Frandsen ENCM 515.
Dr. Muhammed Al-Mulhem ICS An Introduction to Functional Programming.
Early Adopter: ASU - Intel Collaboration in Parallel and Distributed Computing Yinong Chen, Eric Kostelich, Yann-Hang Lee, Alex Mahalov, Gil Speyer, and.
CS 1 with Robots CS1301 – Where it Fits Institute for Personal Robots in Education (IPRE)‏
–Streamline / organize Improve readability of code Decrease code volume/line count Simplify mechanisms Improve maintainability & clarity Decrease development.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
What is Concurrent Programming? Maram Bani Younes.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
Platforms for Learning in Computer Science July 28, 2005.
Conference title1 A New Methodology for Studying Realistic Processors in Computer Science Degrees Crispín Gómez, María E. Gómez y Julio Sahuquillo DISCA.
Early Adopter Introduction to Parallel Computing: Research Intensive University: 4 th Year Elective Bo Hong Electrical and Computer Engineering Georgia.
DAAD project “Joint Course on OOP using Java” Design Patterns in the course ‘OOP in Java’ - first experiences Ana Madevska Bogdanova Institute of informatics.
Adding PDC within a Six-Course Subset of the CS Major Apan Qasem Texas State University.
Thinking in Parallel Adopting the TCPP Core Curriculum in Computer Systems Principles Tim Richards University of Massachusetts Amherst.
DOP - A CPU CORE FOR TEACHING BASICS OF COMPUTER ARCHITECTURE Miloš Bečvář, Alois Pluháček and Jiří Daněček Department of Computer Science and Engineering.
USING AN INTEGRATED 3D AND ROBOTICS ENVIRONMENT TO TEACH COMPUTATIONAL THINKING EFFECTIVELY Stephanie Graham Shiloh Huff Sabyne Peeler * This research.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP.
SOME IMPORTANT FACTORS IN TEACHING SOFTWARE ENGINEERING COURSES Presenter: Jingzhou Li Depart of ECE, University of Calgary,
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
On the Duality of Operating System Structures 1. Hugh C. Lauer Xerox Corporation Palo Alto, Californi a Roger M. Needham Cambridge University Cambridge,
Hands-On Exploration of Parallelism for Absolute Beginners With Scratch Steven Bogaerts Department of Mathematics & Computer Science Wittenberg University.
Spreading Curricular Change in PDC: Some Practical Tools This material is based on work supported by the National Science Foundation under Grant Nos. DUE / /
Early Adopter: Integrating Concepts from Parallel and Distributed Computing into the Undergraduate Curriculum Eileen Kraemer Computer Science Department.
SJSU SPRING 2011 PARALLEL COMPUTING Parallel Computing CS 147: Computer Architecture Instructor: Professor Sin-Min Lee Spring 2011 By: Alice Cotti.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
Practices of Integrating Parallel and Distributed Computing Topics into CS Curriculum at UESTC Guoming Lu University of Electronic Science and Technology.
Widespread Integration of Parallelism Steven Bogaerts.
Fault-Tolerant Parallel and Distributed Computing for Software Engineering Undergraduates Ali Ebnenasir and Jean Mayo {aebnenas, Department.
Early Adopter: Integration of Parallel Topics into the Undergraduate CS Curriculum at Calvin College Joel C. Adams Chair, Department of Computer Science.
{ Applying the NSF/TCPP Curriculum Recommendations to a Liberal Arts Curriculum Akshaye Dhawan, Ursinus College.
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Fall-11: Early Adoption of NSF/TCPP PDC Curriculum at Texas Tech University and Beyond Yong Chen Yu Zhuang Noe Lopez-Benitez May 10 th, 2013.
Multi-Semester Effort and Experience to Integrate NSF/IEEE-TCPP PDC into Multiple Department- wide Core Courses of Computer Science and Technology Department.
Computer Science in Context Evangelos E. Milios Professor and Graduate Coordinator Faculty of Computer Science Dalhousie University.
1 "Workshop 31: Developing a Hands-on Undergraduate Parallel Programming Course with Pattern Programming SIGCSE The 44 th ACM Technical Symposium.
1-1 An Introduction to Functional Programming Sept
Boris Milašinović Faculty of Electrical Engineering and Computing University of Zagreb, Croatia 15th Workshop on "Software Engineering Education and Reverse.
Incorporating Parallel & Distributed Computing Across a Liberal Arts Computer Science Curriculum Tia Newhall, Andrew Danner, Kevin Webb Swarthmore College.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
NSF/TCPP Curriculum Planning Workshop Joseph JaJa Institute for Advanced Computer Studies Department of Electrical and Computer Engineering University.
What Makes Device Driver Development Hard Synthesizing Device Drivers Roumen Kaiabachev and Walid Taha Department of Computer Science, Rice University.
New Curricula Proposal at FSMN by Miroslav Ćirić & Predrag Krtolica.
Teaching Parallelism in a Python- Based CS1 at a Small Institution Challenges, Technical and Non-Technical Material, And CS2013 coverage Steven Bogaerts.
Incorporating PDC Topics into University Level Digital Principles Class Abstract: Digital Computer Principles (CSC 115) is a university wide freshman level.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
CS 1 with Robots CS1301 – Where it Fits Institute for Personal Robots in Education (IPRE)‏
Csinparallel.org Workshop 307: CSinParallel: Using Map-Reduce to Teach Parallel Programming Concepts, Hands-On Dick Brown, St. Olaf College Libby Shoop,
Distributed and Parallel Processing George Wells.
Using Python for an Early Introduction to Concepts of Parallelism, Distributed Systems, and Parallel Image Processing Steven Bogaerts Assistant Professor.
Python for Parallelism in Introductory Computer Science Education
Accelerators to Applications
Introduction CSE 1310 – Introduction to Computers and Programming
CS3901 Intermediate Programming & Data Structures Introduction
An Embedded Systems Course and Course
The 25th annual IEEE International Conference on High Performance Computing, Data, and Analytics. Challenges of integrating parallel and distributed computing.
CS1301 – Where it Fits Institute for Personal Robots in Education
CS1301 – Where it Fits Institute for Personal Robots in Education
EE 4xx: Computer Architecture and Performance Programming
Workshop on Connecting Concepts Across the Curriculum
Presentation transcript:

Parallel and Distributed Computing Early ( and Often) Steven Bogaerts (speaker), Kyle Burke, Brian Shelburne Department of Mathematics & Computer Science Wittenberg University Springfield, OH Melissa Smith Department of Electrical & Computer Engineering Clemson University Clemson, SC Eric Stahlberg CCR Bioinformatics Core National Cancer Institute Bethesda, MD First NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-11) May 16 th, 2011 NSF grant CCF , SHF:Small:RUI:Collaborative Research: Accelerators to Applications – Supercharging the Undergraduate Computer Science Curriculum PIs: Eric Stahlberg, Melissa Smith, Steven Bogaerts

PDC Concepts Throughout the CS Curriculum Steven Bogaerts Algorithms Programming Languages Computational Modeling CS2 CS1 CS0 or Computer Literacy

Computer Literacy Steven Bogaerts Scratch

Computer Literacy Steven Bogaerts

Computer Literacy – PDC Overview Steven Bogaerts Concepts The world is “obviously” parallel. Big-picture descriptions of some applications. Terminology, history Physical activities Low-level: binary adder Higher-level: card sorting Communication Shared memory vs. message passing

Computer Literacy – Curriculum Initiative Connections Steven Bogaerts Cross-Cutting Why and what is PDC? Concurrency topics : Non-determinism Power Current/Hot/Advanced Topics Cluster Cloud/Grid Algorithms : Algorithmic Problems : Broadcast Asynchrony Programming : Semantics and Correctness Issues : Tasks and Threads Architecture : Classes : Multicore

CS1 Steven Bogaerts Parallelism/Concurrency can be used as a medium for teaching core computer science topics.

Analogy: Object-Oriented Programming Steven Bogaerts Years ago:  OOP was a new paradigm  Should OOP be taught in introductory computer science courses?  Should OOP topics be “sprinkled” into existing courses?  If so, which topics should be taken out to make room? Now:  Not just an advanced OOP course  CS1  Data structures  Graphics  … Topics taught through the medium of OO

Goals (CS1 and Beyond) Steven Bogaerts To prepare students for the “impending ordinariness” (Doug Lea) of parallelism and concurrency. Minimize the amount of material that must be removed to “make room.” Prevent the necessity of adding and staffing another course.

CS1 Steven Bogaerts Introduction similar to Literacy course Terminology, high-level concepts, physical activities Basic use of Python multiprocessing module Flexible application to many kinds of problems Minimal additional syntax

Python Multiprocessing Module Steven Bogaerts

Python Multiprocessing Module Steven Bogaerts lockVar = Lock() lockVar.acquire() … lockVar.release() procVar.join()

Parallelism/Concurrency as a Medium Steven Bogaerts Classes and objects Parameter passing Modularity and abstraction “Sandbox” for exploration of other concepts: Computing terms of the quadratic formula Searching or sorting a list Pattern matching Clustering Simulations of parallel processes in nature … Key idea: “Do what you usually do, just do (some of) it in parallel.”

Computational Modeling – Motivations Computational models are increasing in complexity Data available for constructing computational models is rapidly growing Parallel computing platforms are readily available Extreme Scale computing (exascale) platforms require new algorithms built from the ground up using parallel computing concepts Industry needs better performing models and parallel and accelerated computing are the only real options

Computational Modeling – Enhancement Objectives Primary Provide examples of easy parallel computing for models (embarrassingly parallel) Provide introduction to use of 2D arrays in parallel computing environments Keep it straightforward and accessible Secondary Provide introduction to contention and overhead

Computational Modeling – Approach Use Computational Models and Methods course 200 level (sophomore level) Pre-requisite: Calculus, CS1 Implementation using Mathematica Parallel Computing Toolkit Mathematica is proven effective for computational models and methods Functional programming Ready with built-in parallel programming primitives starting with version 7 Machine-independent Select examples and provide a lab experience using primitives

Computational Modeling – Trial Lessons Learned Students can master easy primitives Students can even become comfortable with parallelizing matrix access by index Mathematica more difficult for high-level parallelism “Empty Kernel” starting point requires significant distribution of data and functions to start parallelism

Computational Modeling – Simple Parallel Examples Data reduction (simple) Sum[a,b,c,…] ParallelSum[a,b,c,…] Product[a,b,c,…] ParallelProduct[a,b,c,…] Matrices (data sharing) Shared[{a,b,c}] Other new fun options to try ParallelPlot3D[] ParallelDensityPlot[] ParallelContourPlot[]

Programming Language Courses Exploration of programming paradigms Include HPC languages! Language: Supports multi-threading Alleviates common concurrency issues Simplifies vital parallel patterns Steven Bogaerts

Computer Organization Courses Already implicitly include parallelism! Combinatorial circuits Pipelines, super-scalar architectures I/O with interrupts and DMA Make the inherent parallelism more explicit Consider VHDL Example: Carry look-ahead adder (parallel propagation of carrys) vs. ripple carry adder Steven Bogaerts

Conclusion Early work in applying parallelism/concurrency as a medium for learning computer science. Developments in: CS1 Programming languages Computer organization Steven Bogaerts