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