ossu / computer-science

🎓 Path to a free self-taught education in Computer Science!
MIT License
172.24k stars 21.74k forks source link

RFC: Intro to Parallel Programming #735

Closed spamegg1 closed 4 years ago

spamegg1 commented 4 years ago

Problem:

This course in Advanced Programming has many issues.

Duration:

July 20, 2020

Background:

I wrote a lengthy review of Intro to Parallel Programming here. Please read it. Here are some of the issues:

Proposal:

Replace this course with Parallel Programming. Move this course to Extras.

I took this course too. Here is my justification:

I have read through the CS 2013 document's Parallel and Distributed Programming section starting on page 148. This new course would cover all the same Knowledge Areas as Intro to Parallel Programming, except the SMP, SIMD and GPU subheadings under PD/Parallel Architecture. (Neither course covers Cloud Distributed Programming, that's covered by the next course in the Scala Specialization.) This course would cover the additional topics of Task Parallelism vs. Data Parallelism, and data-parallel data structures, which are not covered in the other course. Data-parallel data structures are especially very important for real-world applications, whereas in CUDA C++ we just use good old arrays.

This course has fully working auto-graders with tests and meaningful debug messages, and programming assignments that cover almost the same parallel topics (in fact 2 of the programming assignments are exactly the same as the other course! Blur filter and parallel reduce/scan) except for not being GPU-specific. The assignments are much easier, and have interactive GUIs that show the image blurring/filtering directly!

The only issue I can see is that this new course necessitates Scala (which is not covered in Core CS, but is extremely similar to ML which is covered in Programming Languages Part A). Thankfully the instructors created a repository for lecture code snippets. For a student who reached Advanced Programming, it should not be an issue to pick up Scala and learn it very quickly; it is much easier than C++. Despite being the 3rd course in a 5-course Specialization, it does not depend on the first two in any specific ways, except for being familiar with the language.

Alternative:

Keep the course as it is. As long as the Google Colab Notebooks are still up for the Homeworks, it's technically doable but extremely difficult and painful.

spamegg1 commented 4 years ago

Making a pull request