Presentation is loading. Please wait.

Presentation is loading. Please wait.

Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP.

Similar presentations


Presentation on theme: "Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP."— Presentation transcript:

1 Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP Workshop on Parallel and Distributed Computing Education (EduPar-13) 20 May 2013, Boston, MA

2 Motivation and Goals P&D computing increasingly important Expose all CS majors to P&D concepts Prepare students for parallel research Encourage “Parallel Thinking” Multi-level approach Early exposure in entry level courses Repetition: multiple upper level courses Frequency: Course options every semester Breadth: Theory, Systems and Applications Depth: Focused/advanced parallel topics

3 Challenges Swarthmore is a small liberal arts college Major includes only nine CS courses Three intro, one capstone, five upper-level Students must take 20 of 32 course outside major Upper level courses offered every other year Curriculum cannot be very vertical Flat pre-requisite structure Adding parallel material could reduce coverage of other topics

4 Our Approach Add new course: Intro to Computer Systems Core topics for systems courses More time for parallel topics in upper level Blend parallel concepts into related topics Don’t isolate study of parallelism Restructure pre-requisites slightly Make new course requirement for systems courses, and graphics Require students to take at least course each in theory, systems, and applications areas.

5 CS1 & CS2 Math Intro to Comp. Systems Theory (1 of 2) Systems (All) Applications (1 of 7) New Curriculum Overview Contains TCPP material

6 Introduction to Computer Systems (CS31) New required intro sequence course (Fall’12) New prerequisite to ~1/2 of upper-level courses Main curricular Goals: 1.Understand how a program in HLL is run by computer (like a vertical slice through the computer) computer architecture, compilers, assembly, OS (processes, VM) 2.Understand system costs associated performance memory hierarchy, scalability, Amdahl’s law 3.Introduction to parallel computing and parallel systems focus on shared memory parallelism SMP, multicore, threads, synchronization, pthread programming

7 Algorithms (CS41) Explore multiple models of computation RAM, I/O (out-of-core), PRAM/BSP Analyze Merge Sort in RAM, I/O, and PRAM Analytic techniques similar (Big-Oh) Measure of complexity changes Thinking Parallel Work, Span, Speedup, Scalability Small in class lab exercises designing, analyzing parallel algorithms.

8 Computer Graphics (CS40) Core Concepts in Graphics Shader based GLSL/OpenGL Three weeks of CUDA Many core architecture Block/Thread level parallelism Patterns: map, scatter, gather, stencil, reduce Shared memory, synchronization Applications/Interopability Programmable GPU for Graphics and non- graphics applications.

9 Parallel & Distributed Computing (CS 87) Very broad coverage of two big fields ~1/3 systems, ~1/3 PL, ~1/3 algorithms architecture, algorithms, programming interfaces and languages, systems, lots of analysis of system components to algorithms, scalability,... 1/2 lecture-based, 1/2 seminar-style Lecture more in 1 st half, mostly on parallel 2 nd half: Research paper reading and class discussion 5 labs in 1st half practice w/ parallel & distributed programming before project TCP/IP Sockets, MPI, pthreads, CUDA, OpenMP, (next time add Hadoop) using XSEDE, tools for running experiments Independent project in 2nd half Research, propose, carry-out, written report, presentation & demo Independent project is opportunity for depth

10 Soon: Operating Systems (CS45) Covers standard undergraduate OS content CS31 Pre-req makes room for adding parallel and distributed systems topics: Remove: introduction to C programming, some intro OS topics Will know parts of program memory & machine org. Have had an intro to processes, intro to virtual memory Add: distributed systems Have only briefly mentioned in past offerings Add: more parallel systems issues/support More room for in-depth coverage than in past

11 Soon: Compilers & Databases Both newly require CS31 Compilers (new version offered ??): More quickly cover parts of program memory and assembly code, the stack Make room for: support for parallel languages and/or optimizations for parallel targets Databases (new version Spring’14): Remove: intro to C++, intro to arch & systems Make room for: expanded coverage of parallel and distributed topics (parallel join algorithms, distributed transactions, DHT, …)

12 Evaluation and Future Plans Student Assessment More parallel assignments, quizzes, exams Extended projects on parallel topics Curricular Assessment Are students exposed to parallel topics? Can students apply parallel topics? Are students thinking in parallel? Coalescing topics into 31 Assess what should be in systems core Adding parallelism to more courses Systems courses in short term Push to CS1/CS2 ?

13 Course Webpages goo.gl/JjVi2 CS31: Introduction to Computer Systems CS41: Algorithms CS40: Graphics CS87: Parallel and Distributed Computing Acknowledgements NSF/IEEE-TCPP Early Adopter Program


Download ppt "Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP."

Similar presentations


Ads by Google