Computer science has the luxury of being a largely constructed discipline, ultimately developed by people through basic reasoning skills. This has profound implications for how computer science can be taught, as it means that student reasoning skills alone are enough to grasp new material entirely by construction. For example, two's complement representation is easy to motivate and derive in a discussion-based setting, given the initial prompt, "How might we represent negative numbers in binary?" This approach organically answers the "why" and "how" of a topic, in a manner that gives students ownership of the material. Moreover, in situations where there is a lack of consensus on a single solution, this serves as firsthand motivation why research on class topics exists; in practice, there is rarely a single solution, as the field is hardly "solved." In this talk, I will describe how I have utilized existing student reasoning skills in the classes I have taught, along with a discussion-oriented lecture sample where these reasoning skills are put to the test. I will similarly discuss how I plan to scale these techniques to both small and large courses, with particular emphasis on CCS courses and courses with hundreds of students.
Kyle Dewey is currently a Ph.D. candidate in the Department of Computer Science at the University of California, Santa Barbara. He has been pursuing his Ph.D. with the intention of teaching, and has taught several courses on introductory CS concepts and programming languages. His research area is in automated testing, with particular focus on using constraint logic programming to generate program inputs for a wide variety of domains. He has applied this testing research to the classroom, using the technique to find bugs in student coding assignments and overall improve student code feedback.