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:
It's deprecated and abandoned/not supported (not possible to find through Udacity's course catalog unless you know the specific link or find it through search engines).
The discussion forums are dead (links in the course don't work, you have to find it through search engines). Inactive and full of outdated information.
Its autograders do not work (the backend which used to compile and run code on Amazon's GPU timesharing is gone).
Many other alternatives for compiling and running its code do not work. The only working alternative (Google Colab Notebooks) is missing the final exam, and is still very uninformative/difficult to debug without help or looking at solutions online.
The code is very difficult to write and debug without any help. Even one pixel being slightly off makes it fail, and impossible to understand why.
The assignments are quite difficult, and involve low-level memory allocation/pointer arithmetic/type conversions in C++ which introduce very subtle bugs.
Too much time is focused on nitty gritty details of extremely GPU-specific issues.
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.
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.