Lecture 1

Introduction

   welcome
   questions?
   what you need to know:  architecture, programming, Unix,
      data structures, discrete math
   plan for today:  overview, details, registration at end


Sequential Program

   sequence of actions that produce a result (statements + variables)
   called a process, task, or thread (of control)


Concurrent Program

   two or more processes that work together
      communication   \  shared variables, or
      synchronization  /   message passing


Hardware

   single processor
   multiprocessor -- shared memory
   multicomputer  -- separate memories
   network -- slower communication


Multithreaded Applications

   what?  more than 1 thread (usually share CPU time)

   why?  good way to organize modern software systems
      OS -- timesharing, servers
      PC -- windows
      browser -- applets
      user -- Unix pipes   (this book "sed | eqn | groff")


Parallel Applications

   what?  processes execute on their own processor

   why?  solve a problem faster -- or solve a larger problem

   two main algorithm/programming styles:
      iterative -- loops, divide them up
      recursive -- divide and conquer, with calls in parallel

   see Chapters 1 and 11 for examples


Distributed Applications

   what?  processes communicate over a network

   why?  offload work -- servers
         connect to remote data -- Internet, airlines, banks
         scalable parallel computing on multicomputers and networks


Course Contents

   applications
   methods -- principles, languages and libraries, programming techniques
   implementations

   related courses:  OS, architecture, algorithms, various applications


Course Details -- go over the syllabus


For next time:

   skim Preface and TOC
   read Chapter 1