Course Location and Times
Offered via AMS: EME-B46 in Pullman; West Bldg 256 in Tri-Cities
TTh 16:15-17:30
Course Web Pages
Information you need to successfully complete the course will be posted on the
course web pages from time to time. This syllabus, a calendar of lectures and assignments,
assignments themselves, lecture notes, handouts, etc. will all be found on the web pages:
http://www.eecs.wsu.edu/~hauser/cs483.
Teacher Contact Info
Prof. Carl Hauser
Office: EME 53
Phone number: 5-6470
E-mail:
hauser@eecs.wsu.edu
Office Hours: TTh 11-12 W 3:30-4:30
TA Contact Info
No TA support is available
Office:
Phone number:
E-mail:
Course Description
This course introduces models, mechanisms, and techniques of concurrent programming. The course
emphasizes concurrent conceptualizations of programming problems, especially in interactions
with real-world phenomena, hopefully leading to correct, clear solutions.
The techniques of concurrent programming are also very applicable in
parallel
programming but the emphasis there is on discovering and exploiting concurrency in order to achieve
performance. Parallel programming,
per se, is not a principal topic of this class (take CptS 550).
Course Objectives
This course will help students to achieve the following objectives.
- Know when concurrent programming techniques are appropriate to use
- Know how to create correct programs using several different concurrent programming mechanisms in
different programming languages
- Know how to use concurrent programming paradigms or patterns
Major topics
- Shared state concurrency - exemplified by Java, pthreads, etc.
- Memory consistency models
- Synchronization mechanisms
- Concurrency semantics
- Concurrency patterns
- Message passing concurrency - exemplified by Erlang, Concurrent ML, etc.
- Message passing mechanisms - variants
- Patterns in Erlang
- Concurrency semantics
- Transactional Approaches
- Classical transactions
- Software transactional memory
Text
The text books for the course are
- Java Concurrency in Practice
- Brian Goetz, et al. Addison-Wesley, 2006.
- Programming Erlang: Software for a Concurrent World (Second edition)
- Joe Armstrong, Pragmatic Bookshelf, 2013.
- (Optional) Erlang Programming
- Francesco Cesarini and Simon Thompson, O'Reilly, 2009.
Additional Reading
Additional readings will be assigned from time to time, especially later in the course.
Course Prerequisites
CptS 355 and CptS 360 or equivalent.
Course Requirements
Attendance is expected at all lectures. Lecture notes will be posted on-line and
the WSU AMS department plans to offer archived videos of the lectures.
These are not an adequate substitute for attendance and reading
the books. You are
also expected to participate in class discussions.
This aids learning and provides valuable feedback on the lecture. I reserve
the right to lower the grade of any student who is markedly deficient in
attendance and/or participation.
Homework, Assignments, and Tests
There will be two mid-term exams and one final exam. Homework
assignments are intended to help you prepare for the exams: they will be graded
as minus, check, or plus indicating inadequate effort, adequate effort but some
understanding is missing,
or mastery. There will
be four projects. All programminng assignments can be done using
your own personal computers.
Turn-in will be via file upload and may
involve an interview with the instructor. The following allocation of grade
percentages is
tentative, and may change during the semester.
- Undergrad students
- Exams (3): 47% (14, 14, 19)
- Programming Projects (4): 12% each
- Homework and class participation: 5%
Grading Scale
A: [93-100]; A-: [90-93); B+: [87-90); B: [83-87); B-: [80-83); C+: [77-80); C: [73-77);
C-: [70-73); D: [60-70); F: [0-60). Grade boundaries may be lowered slightly from these levels (but not raised)
depending on overall class performance.
Undergraduate students are reminded that a grade of C or better is required in this
class in order for it to be counted in a computer science
degree program.
Cheating Policy
Exams, homework, and programming projects are subject to the
EECS academic integrity policy. DO NOT CHEAT IN ANY WAY: DO YOUR OWN
WORK! Doing your own work means that you may NOT work together with
another student on any assignment unless directed to do so. It means you do not turn in a solution you
found on the web.
If you are
stuck on a problem I suggest discussing it with me. You don't
have to wait for office hours: I read e-mail all day, every day, so ASK!
Side effects of cheating can be severe, ranging from a failing grade on
the assignment involved to a failing grade in the class to expulsion from the
university.
Re-grading Policy
All homework and projects will be marked as soon as possible after the due
date and returned during lecture or by email.
If you discover that a mistake was made in grading, the work may
be submitted for re-grading no later than one week after the assignment is
returned. This is the only window of opportunity for re-grading. In
order to request re-grading, write or type a detailed explanation of the
reasons for the re-grading. Submit the explanation along with what was
originally turned in to me. Please do not (only) orally
ask me to re-grade any piece work -- I tend to forget.
Students with Disabilities
Reasonable accommodations are available for students with a documented disability.
If you have a disability and need accommodations to fully participate in this class,
please either visit or call the Access Center (Washington Building 217; 509-335-3417)
to schedule an appointment with an Access Advisor.
All accommodations MUST be approved through the Access Center.
WSU Safety Statement
Washington State University is committed to maintaining a safe environment for its faculty,
staff, and students. Safety is the responsibility of every member of the campus community
and individuals should know the appropriate actions to take when an emergency arises.
In support of our commitment to the safety of the campus community the University has
developed a Campus Safety Plan, http://safetyplan.wsu.edu.
It is highly recommended that you visit this web site as well as the University
emergency management web site at http://oem.wsu.edu/
to become familiar with the information provided.
Stress management
Students sometimes encounter stress and anxiety issues associated with
homework, tests, or life situations that can be an obstacle to success
in their courses. WSU Counseling Services (335-4511) offers
information including a test anxiety workshop conducted several times
each semester.
Visit
http://www.counsel.wsu.edu
for more information.
Other Policies and Expectations
- I expect you to demonstrate critical thinking across the spectrum of
course work.
- I expect you to engage in active learning: speak up when you don't
understand, question assumptions, relate course material to your
experience outside class, seek out additional experience and reading
related to the class.
- I expect you to promptly review feedback you receive from me
or other students; to actively clarify the feedback if the material is
still unclear; and to incorporate the feedback in your future work.
- I expect you to spend adequate time on the course. Adequate time
includes getting enough rest
so that time you spend on course tasks is well-spent time. Adequate
time includes proofreading and reviewing your assignments before you hand
them in.
- I expect you to have high expectations of yourself: set goals for
yourself and try to do your very best. Consciously think about the
balance between what you do to earn a grade and what you do to learn.
(If I'm doing something that puts these in opposition to each other
please let me know.)
Advice
- Don't wait until the last minute to do homework or projects. The lab
gets busy, computers break down, people get sick. These are not
sufficient excuses for an extension.
- Save early; save often!
- Come see me if you are confused. Don't wait for office hours
-- send a question by e-mail.
- Come see me anyway. I'd like to know more about you.
- If you have trouble with spelling and grammar, get and use a word
processor that has spelling and grammar flagging.