Is the purpose of the assignment to help understand what is going on at each node / layer and the dimensions of the parameters? In real-world scenarios, don’t we typically use Tensorflow for Neural Networks? When is it necessary to write our own code for NNs?

Perhaps you are going to work on a platform that doesn’t have TF available (such as a small embedded system).

You’re right that for building real solutions everyone these days uses a complex ML platform like TF or PyTorch or any of dozens of others. The SOTA is so complex at this point that there’s no way each person can build everything from scratch.

But Prof Ng has a pedagogical point here: it’s important that we understand how Neural Networks work and the best way to understand that is to build a basic one from scratch by hand in python. If you don’t have the kind of intuition that you get from doing that, then you end up viewing everything as a mysterious “black box”. Having some direct intuition about what is going on “under the covers” really helps when it comes to understanding how to solve problems with NNs. Your first attempt at a solution almost always doesn’t work as well as you want and you need some understanding to know which direction to go from there.

So Prof Ng does have a plan here: please stay tuned and he will introduce you to TF in Week 3 of Course 2 and then use it heavily in Course 4 and Course 5. The pattern will repeat in Course 4 on Convolutional Nets: he’ll explain how they work and show you how to build a simple one in python first. Then we’ll quickly graduate to building them with TF/Keras.

One other note is that building things with TF is still python programming, so any effort you invest in improving your python skills will definitely not go to waste.