In general it is quite a usual practice to call the top level directory the same name as the program and to use the same name, (with an appropriate extension), for the "main" top level file. Some tool chains also had/have a tendency to put the main into a file with extension and then all of the lower level files into a directory of that same name.
I find that most tools and definitely the OS don't much care what the files & directories are called, within some constraints, but to avoid problems all directory & filenames should be ASCII letters and numbers plus possibly the characters +-_ avoid all spaces so that you don't have to quote or escape them and other characters such as &<>|/ as they have special meanings on some platforms. Also don't rely on the platform being case sensitive or insensitive, i.e. It is fine to use case to distinguish parts of names such as MyFileName but don't have another file called myFileName and use the matching capitalisation everywhere.
Personally I like the python practice & magic of having a directory that encapsulates a module and has the module name that contains a "main" file called
__main__.py that defines the behaviour when the module is invoked, (using
python -m modulename), and another called
__init__.py that, you guessed it, performs all initialisation operations on an
import as it is instantly clear what these files do and they appear first in the directory listing on most systems.
The main things are clarity and organisational consistency. These are the things that allow for people to do their work easily - a pet hate is when I am looking at someones code, (even my own), and I have to
grep main to find the entry point(s).