Education: Integrating Parallel and Distributed Computing in Computer Science Curricula

Similar documents
5 Guidelines for Learning to Spell

Notes on The Sciences of the Artificial Adapted from a shorter document written for course (Deciding What to Design) 1

LEARN TO PROGRAM, SECOND EDITION (THE FACETS OF RUBY SERIES) BY CHRIS PINE

Discovery-Based Learning Engineering Classroom

Learning to Schedule Straight-Line Code

STUDENTS' RATINGS ON TEACHER

PH.D. IN COMPUTER SCIENCE PROGRAM (POST M.S.)

MASTER OF SCIENCE (M.S.) MAJOR IN COMPUTER SCIENCE

10.2. Behavior models

Strategic Planning for Retaining Women in Undergraduate Computing

Advanced Multiprocessor Programming

Learning Methods for Fuzzy Systems

Infrastructure Issues Related to Theory of Computing Research. Faith Fich, University of Toronto

We are strong in research and particularly noted in software engineering, information security and privacy, and humane gaming.

Specification and Evaluation of Machine Translation Toy Systems - Criteria for laboratory assignments

DIGITAL GAMING & INTERACTIVE MEDIA BACHELOR S DEGREE. Junior Year. Summer (Bridge Quarter) Fall Winter Spring GAME Credits.

USER ADAPTATION IN E-LEARNING ENVIRONMENTS

On the Combined Behavior of Autonomous Resource Management Agents

Bluetooth mlearning Applications for the Classroom of the Future

Computers Change the World

Undocumented Students. from high school also want to attend a university. Unfortunately, the majority can t due to their

WORK OF LEADERS GROUP REPORT

CS 1103 Computer Science I Honors. Fall Instructor Muller. Syllabus

Marketing Management MBA 706 Mondays 2:00-4:50

Computer Organization I (Tietokoneen toiminta)

Teaching Algorithm Development Skills

A Framework for Articulating New Library Roles

Protocols for building an Organic Chemical Ontology

UCLA Issues in Applied Linguistics

Reading Horizons. Organizing Reading Material into Thought Units to Enhance Comprehension. Kathleen C. Stevens APRIL 1983

Improving Fairness in Memory Scheduling

Advanced Multiprocessor Programming

Introduction to Mobile Learning Systems and Usability Factors

Teaching a Laboratory Section

Cooperative evolutive concept learning: an empirical study

Software Security: Integrating Secure Software Engineering in Graduate Computer Science Curriculum

Automating the E-learning Personalization

ME 443/643 Design Techniques in Mechanical Engineering. Lecture 1: Introduction

Faculty Schedule Preference Survey Results

Multidisciplinary Engineering Systems 2 nd and 3rd Year College-Wide Courses

Bayllocator: A proactive system to predict server utilization and dynamically allocate memory resources using Bayesian networks and ballooning

European Cooperation in the field of Scientific and Technical Research - COST - Brussels, 24 May 2013 COST 024/13

Nurturing Engineering Talent in the Aerospace and Defence Sector. K.Venkataramanan

Research computing Results

Speak Up 2012 Grades 9 12

From Virtual University to Mobile Learning on the Digital Campus: Experiences from Implementing a Notebook-University

College of Engineering and Applied Science Department of Computer Science

Welcome to the Purdue OWL. Where do I begin? General Strategies. Personalizing Proofreading

IT Project List. Description

Development of an IT Curriculum. Dr. Jochen Koubek Humboldt-Universität zu Berlin Technische Universität Berlin 2008

Circuit Simulators: A Revolutionary E-Learning Platform

UNIVERSITY OF THESSALY DEPARTMENT OF EARLY CHILDHOOD EDUCATION POSTGRADUATE STUDIES INFORMATION GUIDE

similar to the majority ofcomputer science courses in colleges and universities today. Classroom time consisted of lectures, albeit, with considerable

Learning, Communication, and 21 st Century Skills: Students Speak Up For use with NetDay Speak Up Survey Grades 3-5

Online Family Chat Main Lobby Thursday, March 10, 2016

Testing for the Homeschooled High Schooler: SAT, ACT, AP, CLEP, PSAT, SAT II

P. Belsis, C. Sgouropoulou, K. Sfikas, G. Pantziou, C. Skourlas, J. Varnas

Clerical Skills Level II

HOLISTIC LESSON PLAN Nov. 15, 2010 Course: CHC2D (Grade 10, Academic History)

Logical Soft Systems Methodology for Education Programme Development

TEACHING AND EXAMINATION REGULATIONS (TER) (see Article 7.13 of the Higher Education and Research Act) MASTER S PROGRAMME EMBEDDED SYSTEMS

Evaluation of Learning Management System software. Part II of LMS Evaluation

Getting Started with Deliberate Practice

EECS 571 PRINCIPLES OF REAL-TIME COMPUTING Fall 10. Instructor: Kang G. Shin, 4605 CSE, ;

Navigating the PhD Options in CMS

An Interactive Intelligent Language Tutor Over The Internet

Types of curriculum. Definitions of the different types of curriculum

Remote Control Laboratory Via Internet Using Matlab and Simulink

Competition in Information Technology: an Informal Learning

A Context-Driven Use Case Creation Process for Specifying Automotive Driver Assistance Systems

Dentist Under 40 Quality Assurance Program Webinar

Software Development: Programming Paradigms (SCQF level 8)

LIBRARY AND RECORDS AND ARCHIVES SERVICES STRATEGIC PLAN 2016 to 2020

Identifying Novice Difficulties in Object Oriented Design

PROJECT-BASED LEARNING FOR EXPERIMENTAL DESIGN RESEARCH

What Teachers Are Saying

The Comparative Study of Information & Communications Technology Strategies in education of India, Iran & Malaysia countries

A Pipelined Approach for Iterative Software Process Model

I. Introduction. II. Integrated Teaching and Learning

The Use of Statistical, Computational and Modelling Tools in Higher Learning Institutions: A Case Study of the University of Dodoma

Reducing Features to Improve Bug Prediction

Self Study Report Computer Science

Visual CP Representation of Knowledge

K5 Math Practice. Free Pilot Proposal Jan -Jun Boost Confidence Increase Scores Get Ahead. Studypad, Inc.

Learning Cases to Resolve Conflicts and Improve Group Behavior

Modelling interaction during small-group synchronous problem-solving activities: The Synergo approach.

Computer Science 141: Computing Hardware Course Information Fall 2012

Chapter 5: TEST THE PAPER PROTOTYPE

PhD project description. <Working title of the dissertation>

Computer Science PhD Program Evaluation Proposal Based on Domain and Non-Domain Characteristics

Strategy and Design of ICT Services

Proceedings of the Federated Conference on Computer Science DOI: /2016F560 and Information Systems pp ACSIS, Vol. 8.

Guide to Teaching Computer Science

IMPACTFUL, QUANTIFIABLE AND TRANSFORMATIONAL?

Preprint.

A GENERIC SPLIT PROCESS MODEL FOR ASSET MANAGEMENT DECISION-MAKING

Distributed Weather Net: Wireless Sensor Network Supported Inquiry-Based Learning

LEARNING THROUGH INTERACTION AND CREATIVITY IN ONLINE LABORATORIES

Developing True/False Test Sheet Generating System with Diagnosing Basic Cognitive Ability

Department of Computer Science. Program Review Self-Study

Transcription:

IEEE DISTRIBUTED SYSTEMS ONLINE 1541-4922 2006 Published by the IEEE Computer Society Vol. 7, No. 2; February 2006 Education: Integrating Parallel and Distributed Computing in Computer Science Curricula Marcin Paprzycki, Warsaw School of Social Psychology Writing this column for DS Online's new Education department is like going back in time. In 1994-1995, Janusz Zalewski, Jerzy Wa niowski, and I published three papers related to computer science education. 1-3 We made suggestions regarding parallel and distributed computing's place in the computer science curriculum. However, our timing was unfortunate just after a wave of bankruptcies, consolidations, and changing business objectives hit the industry (beginning in 1992), claiming, among others, BBN, Alliant, Kendall Square Research, Thinking Machines, and Convex. At this time, the first Beowulf cluster (http://beowulf.org) was just created, and the idea of grid computing was still that just an idea. So many things have changed since then. Cluster computing brought parallel computing to the masses. Grid computing has been one of the hottest research areas since Ian Foster and Carl Kesselman published The Grid: Blueprint for a New Computing Infrastructure in 1998 (Morgan Kaufmann). High-performance computing came back with a vengeance, spearheaded partly by the Advanced Simulation and Computing Program (http://www.llnl.gov/asci) and international competition to build the world's fastest supercomputer (represented by the Earth Simulator, http://www.es.jamstec.go.jp/esc/ eng). Most recently, parallel computing has truly entered the desktop initially through resurfacing of shared-memory parallel computers (in the form of dual- and quadprocessor servers), followed by the introduction of multicore processors. We can say that in today's computing landscape, there's no single-processor computing "only" parallel and distributed computing. So, it's probably the right time to bring back ideas that we proposed 11 years ago and to suggest that computer science curricula must represent today's computing reality by focusing on parallel and distributed 1

computing. Our initial proposal Obviously, that's easier said than done. The suggestion of introducing something new to the curriculum typically receives one of two responses: University departments create a new course and add it to the electives list. Depending on the faculty's availability and willingness, a department offers such a course from time to time. University departments can't find space for another course. This is especially the case when such a course doesn't have a champion a person who ensures that the department will actually offer, for example, Parallel and Distributed Computing. Recognizing this situation and believing that even the first possibility is inadequate, we approached the problem from a different perspective. We suggested that instead of introducing a new course, computer science departments should introduce elements of parallel and distributed computing in all appropriate courses across the curriculum. More specifically, we suggested that the curriculum should include parallel and distributed computing as early as possible, possibly in Computer Science I and II; teach parallel and distributed computing in core courses in a breadth-first manner; and introduce parallel and distributed computing based on software engineering principles. We followed with specific examples of what material to introduce in which courses (Computer Science I, Computer Science II, Computer Architecture and Hardware, Programming Languages, Operating Systems, Data Structures and Algorithms, Software Engineering, and Senior Research Project). These proposals seem too mild now, and a more radical approach is necessary. 2

The evolving world of computing Returning to my earlier line of thought, all mainstream-computing processors(from desktop PCs and laptops up) will soon be multicore, and we'll have to take this fact as a reality and not an aberration. We'll find single-core processors primarily in cell phones or thinking refrigerators(embedded systems in general). Furthermore, multiple multicore processors will be combined to create constantly more powerful servers (for example, as centers of provisioning of virtualized resources). As a side note, this also means that the central mainframe is back in a somewhat modified form. Because the industry is already working on quad-core processors, and quad-processor servers have existed for some time, it's easy to envision inexpensive servers consisting of at least 16 processing cores. At the same time, the Internet has become so enmeshed with our lives that students should easily understand the vision of the Net's multiple available resources (which happens to be central to the grid metaphor). These students communicate daily with their friends using email and instant messaging and use the Internet to find various types of content. So, we must change how we teach computer science to reflect how the world of computing is and will be, rather than how it was. Therefore, from the start, we should treat parallel and distributed computing as a natural environment our students will find themselves in and treat a single thread of execution as a special case of the typical situation (where multiple threads execute concurrently and interact with each other). With this in mind, I'll briefly sketch some ideas of what we can teach in early Computer Science courses. These ideas are limited to a few examples that illustrate the outlook that I advocate here and that show the direction of proposed changes. Detailed analysis of course content must obviously follow but is outside this column's scope. Suggestions for a new curriculum We should treat parallel and distributed computing as a natural situation and begin teaching it from the first Computer Science course. Even the very first program which often writes "Hello, World" can be executed on two processors and can produce "Hello, World" twice. Furthermore, if the available computer has more processors, the program can be executed on an increasing number of them until each one writes its own 3

greeting to the world. Obviously, different ways of doing this depend on the language and environment used, and these specific techniques would go beyond the student's current knowledge. However, after a general multiprocessing introduction, we could explain that the additional "technical details" just facilitate execution on multiple processors and that the students will understand what's happening later. They can grasp the concept and have fun playing with executing the code on multiple processors, and they won't be overwhelmed by the situation. An important concept that CS I introduces is the loop. Students could easily learn that they can execute different parts of the loop on different processors. After completing this step and introducing vectors, it's easy to envision that students would be able to split operations performed on vectors into parts executed on separate processors. CS II typically introduces several algorithms that deal with various complex data structures. Some algorithms might be more amenable to parallelization than others, and students should explore this possibility. For instance, comparing linked-list-type and vector-type data objects in relation to parallelization could be useful. Also, in CS II, we can introduce techniques for coarse-grain parallelization. Here, students can concurrently execute different modules working on different tasks (in this way, we move away from data parallelism and show functional decomposition of a problem into tasks). Obviously, we'd need to change the Computer Architecture course, emphasizing current architectures. When I taught Computer Architecture, I liked John Hennesy and David Patterson's textbook, Computer Architecture: A Quantitative Approach (Morgan Kaufmann, 2002); however, I don't know any current textbooks that are appropriate for an undergraduate course focusing on today's multicore processor architectures. Maybe it's time to refocus and split Computer Architecture courses between what is taught in Computer Science and in Computer Engineering programs. But this is a subject for a different column. Conclusion By now, I hope it's obvious how we can extend the proposed program to other courses in a Computer Science curriculum. The proposed means of introducing parallel and distributed computing in early undergraduate Computer Science courses don't involve complicated problems and in-depth analysis. What matters most is that, from the start, we expect students to consider the world of computing as filled with multiprocessor machines and Internet resources that they can combine and use to solve computational problems. In other words, I propose an approach that will let us develop, from the 4

beginning, the frame of mind that best represents the computational realities of the present and the future. References 1. M. Paprzycki, R. Waniowski and J. Zalewski, "Parallel and Distributed Computing Education: A Software Engineering Approach,"Software Eng. Education: Proc. 8th SEI CSEE Conf. (CSEE 95), LNCS 895, Springer, 1995,pp. 187-204. 2. M. Paprzycki and J. Zalewski, "Teaching Parallel Computing without a Separate Course,"Proc. Conf. Parallel Computing for Undergraduates,1994,pp. 18/1-19. 3. M. Paprzycki and J. Zalewski, "Introduction to Parallel Computing Education,"J. Computing in Small Colleges, vol. 9, no. 5, 1994,pp. 85-92. Marcin Paprzycki is an associate professor at the Warsaw School of Social Psychology's Computer Science Institute. Contact him at marcin.paprzycki@swps.edu. pl. Related Links DS Online's Web Systems Community Education Page, http://dsonline. computer.org/portal/site/dsonline/ menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/ index.jsp? &pname=dso_level1&path=dsonline/topics/ was&file=education. xml&xsl=article.xsl& "Open Source in the Classroom," http://doi.ieeecomputersociety.org/10.1109/ MDSO.2005.32 "The Smart Classroom: Merging Technologies for Seamless Tele- Education," http://doi.ieeecomputersociety.org/10.1109/ MPRV.2003.1203753 5

"Report from the Ubicomp Education Workshop," http://doi. ieeecomputersociety.org/10.1109/mprv.2004.1269139 "Taiwan: Education Leads the Way," http://doi.ieeecomputersociety. org/10.1109/mic.1997.585180 Cite this article: Marcin Paprzycki, "Integrating Parallel and Distributed Computing in Computer Science Curricula," IEEE Distributed Systems Online, vol. 7, no. 2, 2006, art. no. 0602-o2006. 6