CS 563 Concurrent Programming
Lecture 1: Concurrent Programming Overview
Introduction
Copyright By PowCoder代写 加微信 powcoder
Instructor
Xinghui :
Web: https://labs.wsu.edu/dsr/
Phone: 360-546-9110
Office: VECS 201X
Office Hours: Open door or by appointment
Introduction
Location: VLIB 201
Time: M, W 1:25pm – 2:40pm
Blackboard: http://learn.wsu.edu
Recommended Text
Foundations of Multithreaded, Parallel and Distributed Programming, by . Andrews
Programming Distributed Computing Systems, by . Varela
My Expectations
Prerequisites
CS360 System Programming (C or better)
CS460 Operating Systems (C or better)
I assume you are familiar with the following
Architecture Programming Operating Systems Data Structures
Course Outcomes
Write concurrent programs using different techniques Understand fundamental concepts of concurrency
Be able to identify a research problem, formulate and execute a research plan
Be able to communicate effectively through oral presentations and publications
relation to cost, timeliness, quality and changing requirements
from a wide variety of authentic contexts and everyday situations
develop depth, breadth, and integration of learning
Communication: Write, speak, and listen to achieve intended meaning and understanding among all participants
Evaluation
Verify and validate the
Depth, Breadth, and
Integration of Learning:
requirements specification over the course of a software project’s lifecycle
Communicates
✤ Assignments 30% documentation at appropriate
points in design projects
Midterm 20%
Project (paper and presentation) 35%
Discretionary 5%
Research Paper Presentation 10%
Tentative Grading Criteria
Midterm Exam 20 %
Final Presentation 20 % Homework and Projects 50 % Discretionary 10 %
A 94 – 100% A- B- 80 – 82% C+ D+ 68 – 70% D
91 – 93 % B+ 77 – 79% C 62 – 67% D-
87 – 90% 73 – 76% 60 – 61%
83 – 86% 71 – 72% ≤ 59%
Discretionary points
Discretionary points will be based on your conduct and participation in class. As this class endeavors to teach professional disciplines, it is reasonable to ask that students act professionally and treat each other
Sequential vs. Concurrent
Sequential Program
Sequence of actions that produce a result (statements + variables)
A process, task, or thread (of control) Concurrent Program
Two or more processes that work together
communication synchronization
shared variables message passing
Why do we need concurrent programs?
Evolution of Computing
No program
Sequential program
Distributed program
Parallel program
What does software do?
Utilize the hardware resources!
Today’s Challenges
Too expensive to power faster processors Software
Efficient use of multiple cores
Concurrent programming Conservation
Execute as fast as needed, not as fast as possible
Single processor
Multiprocessor — shared memory Multicomputer — separate memories Network — slower communication
Languages for expressing concurrency
Models for reasoning about current behavior Mechanisms for solving synchronization issues Techniques for proving and testing concurrent programs Principles for good design of concurrent systems
Multithreaded Applications
More than 1 thread (usually share CPU time) Why?
Good way to organize modern software systems
OS — timesharing, servers PC — windows
Browser — applets
Parallel Applications
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
Distributed Applications
Processes communicate over a network Why?
Offload work — servers
Connect to remote data — Internet, airlines, banks
Scalable parallel computing on multicomputers and networks
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com