Last week, I began teaching an introductory Computer Science course at the University level. The course introduces students to computer science primarily through HTML, CSS, and JavaScript in a 100-person lecture format. The student information forms I had students fill out on the first day of class revealed that nearly 80% of them have never taken a computer science course before.
Interestingly, the course is typically taught in strictly lecture format, with students working alongside the professor on the day’s sample code. The onus, then, was on students to practice at home, or visit TA office hours. Of course, this can be intimidating if you’re lost in class, or if you see the course as existing merely to satisfy a requirement. To me, though, this course is an excellent recruitment course for Computer Science, given that for the majority of students it is a path they have likely not considered.
And so, the traditional lecture format must be rethought and retooled to create an inclusive environment where students can experience Computer Science with low-risk. Opportunities must exist within the framework of in-class time for students to collaborate, try, fail, and ultimately succeed. Before students submit individual graded projects or take exams, they must feel comfortable working with the language (in my case, HTML, CSS, and JavaScript), and they need guidance on how to practice before it “counts” for their grade.
In other words, I need to figure out a way to bring in some of the scaffolds from my secondary teaching experience into a traditional, lecture-based college class.
At this point, I’m still in the first weeks, but I wanted to use my blog as a way to share what I’m trying – what’s working (or not), what we’re iterating, and how we’re incorporating what research tells us works for inclusive CS education into higher education. Here’s our first iteration:
A change in format to prioritize in class development of socio-academic peer groups. Rather than three 50 minute lectures a week, only Mondays will be a more traditional lecture format. On Wednesdays, students will work on in class exercises applying new knowledge from Monday. Fridays will feature differentiated small group review (with help from TA leadership) and extension. While projects, quizzes, and exams will all be individual, students will be allowed – and encouraged – to collaborate on all other programming assignments. Each student will still turn in their own code for all in class exercises, but they may work together to debug, locate resources, and write code. Not only does this create a lower-risk environment for them to learn, but it builds in collaborative structures, which hopefully will translate to them feeling a sense of belonging in our class. Additionally, recognizing that this is most students’ first computer science class, the inclusion of practice time in class models the importance of practicing their coding skills outside of class, too – which leads me to…
Additional real-world, practice problems: One of my TAs had an excellent idea to write challenge problems for students to practice with outside of class. We’ll be taking this one step further by creating a practice problem bank for students to work on, in preparation for projects, but also to encourage them to continue to practice their skills. These challenges will be ungraded, but students will be able to submit them to us to get feedback. It was really an excellent idea, as it gives students a real-world application of their learning, and also gives them a direction for practicing – which is something that non-CS majors may struggle to find on their own.
Scaffolds for self-efficacy: The practice problem bank, encouragement of collaboration, and links to resources such as W3Schools are all scaffolds that students can use to build mastery. In addition, I’m creating review videos, which I’m posting on my YouTube channel and sharing with all students. I also made the choice to share my lecture notes and slides with students, stemming from a student sharing that she was overwhelmed with trying to follow along with my code, slides, and also take notes. Ultimately, my goal is for students to master the content and feel confident in their abilities to program in HTML, CSS, and JavaScript. Withholding resources that could support some students to penalize others for choosing to not come to class seemed punitive and ultimately more harmful than good.
Ultimately, if our goal is to diversify tech, we must make our introductory computer science courses at all levels accessible and welcoming to all students. While not all students may decide to pursue a future within Computer Science, each deserves the opportunity to try and see if it is a good fit for them. Incorporating strategies that research consistently identifies for recruiting and retaining both female and underrepresented students seems like a no brainer, no matter which level of education the course is offered.
I’ll continue to blog and share resources, and am – of course! – open to thoughts or feedback you may have. Share them via the comments below.
Great work Jen, thank you for sharing your work and teaching methods here. I was a college IT Lecturer for many years before I worked to IT industry field. Yes you’re doing great for giving more hands-on practice. But sometimes it doesn’t work for all students that’s why I still apply the method of finding out the type of learner they are and design lesson plan that fits their needs.
LikeLike