Harvard University is one of the most selective schools in the United States, so it isn’t the first place that comes to mind when discussing how to make computer science appealing and open to a broad range of students. But Professor David Malan has been experimenting with different ways to make his introductory computer science class (CS50) the type of place where students from many different backgrounds can thrive. And he’s spreading what he learns to the broader educator community, hoping what he’s learning from the CS50 experiment spreads beyond Harvard’s walls to K-12 educators working to fire up kids about computer science.
Malan’s class attracts students who have never taken computer science before, as well as kids who have been coding a long time. His goal with this diverse group of learners is to create a community that’s equal and collaborative. One way he does this is by asking students to self-identify by comfort level. Those groups become different section levels, and they sometimes get different homework, but harder assignments are not worth more credit. Malan said recently that the “less comfortable” group has dominated his 700-person course.
“At the end of the day all students are treated with the same expectations,” said Malan, speaking at the Building Learning Communities conference in Boston. Students are graded based on each individual’s growth; Malan and his team of teaching assistants don’t use absolute measures when assigning grades. Instead, they look at scope, how hard the student tried, correctness, how right the work was, style, how aesthetic the code is, and design, which is the most subjective. When it’s time to assign grades, Malan and his teaching fellows have lots of in-depth conversations about how each student has improved relative to where he or she started.
And since computer code is particularly easy to steal off the web, Malan has a “regret clause” for his course “to encourage and allow students to come forward if they made a bad decision that historically is very hard to take back. “We encourage them to come forward.” If a student did cheat, but uses the regret clause, he or she can still be penalized, but Malan won’t escalate the incident to the university level. He understands that sometimes stressed-out students, many of whom are perfectionists pushing themselves in a completely new area of study, act on their anxieties against their better judgment.
Malan also uses many teaching assistants to help him provide personalized attention to students in this large course. He sees them as one of the most important parts of the course’s success and popularity. “One of our greatest assets is the human structure within the course,” Malan said. He also encourages students not to take notes during lecture, instead asking one of the teaching assistants to take notes for everyone so students can focus their attention on the discussion.
Office hours are another important support structure for this challenging course. During office hours several teaching assistants will be in one place offering one-on-one help. Malan has been pleased at how these meetups have gradually begun happening in social spaces, becoming a connection point between digital and analog support. He attributes some of his success with students new to computer science to the intentionally social aspects of the class.
Malan’s team also explicitly tries to make computer science fun by planning events that foster a sense of community. They organize an annual puzzle day where students get together on a Saturday, and a hackathon. By merging the social and the academic, Malan is trying to make computer science feel approachable. “A side effect of holding these events is drumming up new interest,” Malan said. His students bring their friends, who might decide to take the course the following year. And the silly community events are shared on social media and the course website to help create the community feeling that keeps kids engaged in the academic work.
At the end of the semester, all CS50 students present their final projects to the community at a fair. “For us what’s most striking at this specific event is seeing their final projects and seeing them present something that we did not teach them,” Malan said. Students often take the initiative to go out and learn more on their own, rather than merely applying the homework he has assigned.
In addition to the 700 Harvard students who take CS50, Malan has opened the course to 150 Yale students, as well as about 300 Harvard extension students. The course is also available on edX, and high school students can access a version of it, CS50 AP, at 150 schools around the country. The course is one of the most popular offerings at Harvard, and students new to computer science keep joining. Malan believes the collaborative nature of the course, along with the intentional community-building that his team does, are a big part of their success.
With so many students, Malan’s team has developed some CS50 specific tools to help them manage workflow and support students.
CS50 IDE: This is basically a computer in the cloud so students can write code and run it on the internet. It allows students to access their code from multiple locations and for groups to work together virtually. The program highlights the code written by different authors in unique colors to help evaluators see who did what.
Check50: Students and instructors use this program to check for correctness. Is a program giving the expected output? The tool checks student code against a set of tests Malan’s team has written and then generates smiley faces and frowny faces next to the code. This helps students identify trouble spots, but still requires them to problem-solve the fixes. Some of Malan’s teaching assistants are currently rewriting this program to make it open source, so any teacher could input their own checks to use with students.
CS50 Help: This tool rewrites the language of error messages to help students parse what went wrong with their code. It also provides feedback and action items for students to start fixing the error. “It’s just designed to be a resource for students to make that process of understanding error messages easier,” Malan said.
Droplet: This tool provides a bridge between more traditional coding languages and block coding, like what you might see in Scratch or a number of other learn-to-code programs.
Malan’s team also uses a lot of other productivity tools that aren’t proprietary and could be useful to other teachers. When discussing these tools with teachers at the BLC conference, it was clear that many K-12 teachers are frustrated by the limits their districts put on the tools they can use.
GitHub: This open-source code repository is a way for programmers to share code and get feedback. Malan’s students sometimes use it to submit their code instead of doing so through the Learning Management System (LMS).
MOSS (Measure Of Software Similarity): This tool is freely developed and can help determine academic honesty. The tools allow users to anonymously submit student work and see a comparison to other existing code. It gives the teacher a sense of whether similarly written code really is a problem.
Gradescope: This free tool was designed by UC Berkeley students. It allows teachers to upload student homework or tests and grade them online. The grader can add criteria as he goes and if anything changes, the program will automatically change the scores for that problem on everything that has already been graded. The student gets detailed feedback, all graders are consistent, and the instructor can see how many students made each mistake.
Dropbox: Users get 2G for free and can easily sync and share files. And, if a student doesn’t have a Dropbox account, there’s an anonymous upload feature that creates a unique link so each student’s work goes into a folder with his or her name. It can be an easy way to collect files and work around an LMS.
Asana: This commercially available task management system helps keep track of who’s doing what and when it’s due. Team members can add themselves to different projects and set deadlines. “We’ve used it for office-style team management, but I’ve used it for classes as well to assign homework,” Malan said. “It gives you eyes into what could be a fairly large data set.” There’s also a mobile app.
Slack: This is a free chat service, but also makes it easy to share media. Malan finds it more group friendly than Google Hangout.
Doodle: Malan’s team uses Doodle for scheduling.
Help Scout: This tool is a bit like help desk software in that you can create tickets for different email items that require a task. It helps a user see what issues are closed and which ones still need attention.
HubSpot: This is good for managing large courses with lots of contacts. It was designed as a customer relationship management system.
PleaseBringIt: This is an easy way to sign people up for open slots. It also functions a little like a wedding registry for running an event -- different people can agree to bring various items.
Adobe Connect: This tool works well for online classes or office hours. It is not a free service, but Google Hangout would be a free alternative. Zoom is also similar, although more video-based.
Google Forms: Malan uses this a lot to collect work from students. It’s easy to integrate with spreadsheets, but limits the types of questions he can ask.
SurveyMonkey: This service has more question types and better analytics. It also has some interesting visualization options.
Slido.com: This is an interactive online question forum. Users can up-vote or down-vote different questions. That’s useful because a presenter can look at the questions while giving a talk and weave answers into the presentation or follow up afterwards.
Piazza: This is a good discussion platform, a functionality many LMS’s lack. Teachers can create a classroom within Piazza. Students can also ask questions anonymously, making it more appropriate for certain discussions than other platforms.
Quip: This software is good for sharing information. The platform makes it easy to organize information and share with others.
SmugMug: This is a good photo portfolio site. It allows the user to filter, but also provide textual context.
BaseCamp: This project management tool has a free tier for teachers. In general, Malan and his team suggest that educators should always ask for a discount from any commercial software provider. Many companies will be happy to accommodate, making paid products more accessible.
K-12 TEACHERS’ FAVORITE TOOLS
When Malan had finished sharing the tools his team finds useful to organize their work, grading and efforts to support students, other educators shared their favorite tools.
ZipGrade: This tool is basically like a scantron machine on a phone. It’s useful for quickly grading multiple-choice exit tickets or formative assessments and tracking student data on those quizzes.
VideoNot.es: This open-source software allows users to take notes next to videos, syncing to time
stamps. It’s also possible to create one’s own video note with a question. And the service works with a Google sign-in (one limitation a number of teachers said they were experiencing with their districts).
Vizia: This tool allows teacher to integrate quizzes and questions into a video. The questions pop up as students watch.
GoSoapbox: Similar to Poll Everywhere, this tool can be used on a mobile device or computer. It enables teachers to get a sense of how well students understand the content with quick polls. It also has a panic button students can press if they really don’t understand. The instructor’s screen will flash red. It can also be used anonymously.
Wizer.me: Teachers can create interactive quizzes in various question formats with this tool.
Goobric: When used in tandem with the Doctopus extension, this Chrome extension allows teachers to pull all the assignments into one Google Sheet and integrate with a rubric.
Doctopus: Another Chrome extension built by a teacher to make classroom workflows easier. Some of its key functions are to create a file structure in Google Docs, allow a teacher to easily “pass out” blank templates and change or revoke different editing rights, and it’s a way to monitor collaboration happening on Docs.
What are your favorite collaboration and sharing tools for the classroom?