My University charges a lot of money for each class that uses webwork. So in total, I'm paying $300+. Is this normal practice? I read that Webwork is free and opensource software. What justification do math departments have to charge students extra over the already massive tuition they pay.
WeBWorK is open-source software, free to install on any system that has the computing resources to support it. So a university does not pay anything directly to install WeBWorK on its systems.
However the computing power and space is not free. That would typically be institutional overhead, for example the college/university uses commercial cloud computing services that it pays for, or it maintains its own data center, with its own hardware. All of this has some cost. And then perhaps the most expensive aspect would be the time and expertise needed to manage the WeBWorK installation from the server side. There is labor behind the scenes to keep a WeBWorK installation working well.
As far as I know, most WeBWorK-using institutions fold these expenses into larger budgets for IT systems, or fold it into a math department's budget. It would be reasonable to itemize it out and charge students directly, and there are schools that do this.
I would note that the Runestone WeBWorK hosting service that I manage only charges schools directly, not students, and it is presently designed to work out to an average of $2 per student per course. It is working out to be a sustainable source of revenue that supports the labor, the computing power, and even some investment into improving WeBWorK.