To add to delhanty's reply, a "degree of freedom" can be thought of as a dimension of the drawing that can be changed or "stretched" or moved without violating a constraint (this is slightly inaccurate, but it's a good start). In a CAD program, a fully constrained drawing can't be freely stretched or dragged around; the program won't let you and the drawing will feel "rigid".
It's very intuitive if you play around with a CAD program for a bit. There is a free (GPLv3) 2D and 3D CAD program called Solvespace (https://solvespace.com/) that is probably easiest one to obtain and learn. There are detailed tutorials on the website, and you could probably download it and finish the first tutorial in an hour.
the Github page of which has the following footnote:
>I ended up directly using solvespace's solver instead of the suggested wrapper code since it didn't expose all of the features I needed. I also had to patch the solver to make it sufficiently fast for the kinds of equations I was generating by symbolically solving equations where applicable. ↩
Which really impressed me because it was the first graphical and interactive 3D program I tried which felt sort of comfortable and understandable (which is why I mostly use OpenSCAD and similar programmatic approaches).
It's very intuitive if you play around with a CAD program for a bit. There is a free (GPLv3) 2D and 3D CAD program called Solvespace (https://solvespace.com/) that is probably easiest one to obtain and learn. There are detailed tutorials on the website, and you could probably download it and finish the first tutorial in an hour.