Can peer instruction be effective in upper-division computer science courses? | Synapse