I think this will work. Note I assumed you had all the fields in the same table (I call it "BaseData"). if you don't you will need to do that in advance of my script.
If(Floor(Count (WOID) / Student__c *10) > 4, 4, Floor(Count (WOID) / Student__c *10))
+ if(Sum(ActualHours)/count(WOID) >0.5,1,0) as Score
Where StatusDesc = 'Complete' or StatusDesc like 'Closed*'
Group by AcctNum;