16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

• Data races and higher-level race conditions<br />

• Deadlock<br />

• Condition variables<br />

What is the format of the course<br />

This is a fairly conventional course with 3 weekly 1-hour lectures and 1 weekly recitation section led by a teaching<br />

assistant. The recitation section often covers software-tool details not covered in lecture. It is a 10-week course<br />

because the university uses a “quarter system” with 10-week terms.<br />

How are students assessed<br />

Students complete 8 written homework assignments, 3 programming projects in Java (1 using parallelism), a<br />

midterm, and a <strong>final</strong> exam.<br />

Course textbooks and materials<br />

For the classic data structures material, the textbook is Data Structures and Algorithm Analysis in Java by Weiss.<br />

For parallelism and concurrency, materials were developed originally for this course and are now used by several<br />

other institutions (see URL below). Programming assignments use Java, in particular Java’s Fork-Join Framework<br />

for parallelism.<br />

Why do you teach the course this way<br />

Clearly the most novel feature of this course is the integration of multithreading, parallelism, and concurrency.<br />

The paper “Introducing Parallelism and Concurrency in the Data Structures Course” by Dan Grossman and Ruth<br />

E. Anderson, published in SIGCSE2012, provides additional rationale and experience for this approach. In short,<br />

data structures provides a rich source of canonical examples to motivate both parallelism and concurrency.<br />

Moreover, an introduction to parallelism benefits from the same mix of algorithms, analysis, programming, and<br />

practical considerations that is the main ethos of the data structures course.<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

AL Basic Analysis All except the Master Theorem 3<br />

AL<br />

Fundamental Data<br />

Structures and<br />

Algorithms<br />

All topics except string/text algorithms. Also, the preceding CS2<br />

course covers some of the simpler topics, which are then quickly<br />

reviewed<br />

10<br />

AL<br />

Advanced Data<br />

Structures Algorithms<br />

and Analysis<br />

Only these: AVL trees, topological sort, B-trees, and a brief<br />

introduction to amortized analysis<br />

6<br />

DS Graphs and Trees All topics except graph isomorphism 3<br />

PD Parallelism Fundamentals All 2<br />

PD Parallel Decomposition All topics except actors and reactive processes, but at only a<br />

cursory level<br />

1<br />

PD<br />

Communication and<br />

Coordination<br />

All topics except Consistency in shared memory models, Message<br />

passing, Composition, Transactions, Consensus, Barriers, and<br />

Conditional actions. (The treatment of atomicity and deadlock is<br />

also very elementary.)<br />

2<br />

PD<br />

Parallel Algorithms,<br />

Analysis, and<br />

Programming<br />

All Core-Tier-2 topics; none of the Elective topics 4<br />

- 244 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!