Hi, welcome to CS214! The course covers basic concepts of parallel shared-memory algorithms such as theoretical models, basic sequence algorithms, sorting, graph algoirhtms, various data structures, scheduling, and concurrency. A strong emphasis of the course is to combine theory and practice. In the course, you will learn how to analyze the parallel algorithms in theory, but also have the opportunaty to implement parallel algorithms on your own!

We will use Campuswire for sending annoucements and online discussions, and GradeScope to submit homework assignments. The course announcements will be sent via Campuswire, so please make sure you enable email notifications.

You will likely find this course difficult. There are several reasons why. First, parallel algorithm design and implementation may be something new to many of you, as most trainings in undergraduate CS study are focusing on the sequential setting, just to switch to “parallel thinking” is something different from what you are used to (but parallelism is also extremely beneficial for you). Second, the material covered in the course, combines both theory (analysis of algorithms) and practice (implementing them), and thus require you to have solid background in both math and programming. Third, this course will require generating your own algorithms in addition to just memorizing and understanding existing algorithms. The course also requires proficiency in C++. If you are not familiar with C++, there will also be the additional overhead of learning C++, and you should start learning it immediately. There are many online resources for doing so. It is thus important for you to mentally prepare yourself for a difficult course. If you do your work, we are confident that you will finish this class with a satisfactory grade, and will one day (if not immediately) find what you learned in this course useful in your career (and fun, hopefully).

Please make sure you understand the policy of the course, especially about Academic Integrity.

Prerequisites: Upper level undergraduate algorithm course (CS141 or equivalent); proficiency in C++.

Instructor:

Yan Gu

  • Email: ygu [at] cs.ucr.edu
  • Lectures: MWF 2:00 – 2:50 PM
  • Classroom: Olmsted 1208
  • Office: WCH 335
  • Office Hour: Wednesday after class, Friday 9:30 - 10:30 AM

TA:

Xiaojun Dong

  • Email: xdong038 [at] ucr.edu
  • Office Hour: Monday 4:30 - 5:30 PM

Additional OH from Zheqi Shen

  • Tuesday and Friday 1:00 - 2:00 PM

Calendar:

You can add the this to your Google Calendar if you want (by clicking the little “+” bottom right). All the lectures and assignment deadlines are included in this calendar.


Textbook:

Introduction to Algorithms (CLRS).
Third Edition. Cormen, Leiserson, Rivest, and Stein. MIT Press.
[UCR Library Link]

Parallel Computing: Theory and Practice (TAPP).
Umut A. Acar.
[Link]

Parallel Algorithms (PA).
Guy E. Blelloch, Laxman Dhuplipala, and Yihan Sun.
[Link]