Relationship between Hands-on and Written Coursework Assessments with Critical Thinking Skills in Structured Programming Course