If you enroll in the class late, please send me an email so you can access all course materials before you are added to the system.

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.

Prerequisites. You need upper-level undergraduate or graduate-level algorithm / data structure classes, such that you are familiar with basic algorithm design ideas such as divide-and-conquer, graph algorithms, data structures, etc. Similar classes at UCR can be (CS10C + CS141) or CS218. For your reference, CS141 slides are also provided here.

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.

A list of prerequisite concepts are listed here.

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. 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.

⏰ Lectures: MWF 3:00 – 3:50 PM

🏫 Classroom: WCH 143 [map]

We will use

  • Campuswire for sending annoucements and online discussions.
  • GradeScope to submit homework assignments.

Instructor:

Yihan Sun

  • Email: yihans [at] cs.ucr.edu
  • Lectures: MWF 3:00 – 3:50 PM
  • Office: WCH 308
  • Office Hour: TBD

TA:

TBD

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:

The class will mainly be based on the course slides. The textbooks are recommended reading materials, but are not required.

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]