Main »

Discovering Computer Science


edit SideBar

Discovering Computer Science

Welcome to our webpage on Discovering Computer Science. This page explains our efforts toward developing an engaging and hands-on way to teach computer science focusing on discovery and also our related research projects.

Our goal is to teach students to be not just users of technology, but creators and innovators who will shape the future. We have developed a Freshman computer science course in which students learn the foundations and principles of computer science by building actual computers, robots, and various games. We can do this thanks to how cheap and powerful computers have become. Instead of playing Angry Birds on their phones, students build a physical game in which a spring-loaded system launches a plush bird, guided by ultrasonic sensors, at a target, all coordinated and controlled by algorithms they design. Through these projects, students have fun and learn better, discovering advanced computer-science principles on their own.

All of these resources are publicly available on this webpage with detailed instruction videos for anyone to view and learn. We hope you find them useful - look for the links in the sidebar. The demo pages have demos built by various students in the course. If you are interested in the course enroll in CS/ECE 252 :-) If you are really into this stuff, we also have a scientific publication that talks about these projects and their pedagogical benefits. Paper here. We are also developing an open source textbook that can serve as way for others to use all our materials and remain free for students. Please email me at to learn more about it or if you are interested in knowing about the upcoming book.

Inspired by some of the ideas of these very tiny computers, we are undertaking a research project called MPU that is considering building future data-center chips using these small devices. You can learn more about that project in this poster (Hot chips 2014 poster). More technical details are in our invention disclosure - Contact WARF.

Slides from a talk outlining many of these ideas are here: talk slides

Several amazing under-grads, graduate students make up the team of this project.

  • Raghu Balasubramanian got a Master's degree in Computer Science at UW-Madison. He was the pionner behind the Discovering CS projects of using Arduino boards. He helped kickstart everything in Spring 2012 by helping define the projects and help the first set of students implement the projects. He is also the co-author of our upcoming open source text book.
  • Daniel Ross is a PhD student in the Math department. He is the lead author of our upcoming open source textbook. He got excited about hardware and contributing to this project after taking Karu's undergraduate computer architecture course.
  • Theo Dahlen is a senior undergrad and will graduate May 2015. He is co-leading our research on applying the lowe-power principles of microprocessors to data-centers. He also helped develop an Arduino project undergrads can build in the senior-level course CS/ECE 552.
  • Zach York and Matt Doran are undergrad student who developed much of the isntructional materials on this website.
  • Ari Biswas, Timur Girgin, Peter Procek, Alejandro Puente, and Daniel Wortmann, helped us refine all the instruction materials and over the years have served as mentors for students in successive years working on these projects in courses.
  • Rebecca Lam and Newsha Ardalani are graduate students in the CS department. They were teaching assistants for the course when we first developed these projects and were instrumental in managing the logistics of 50 to 60 students working in 5 member teams.
  • Vijay Thiruvengadam and Lorenzo De Carli are graduate students who co-lead the MPU project which is our work on developing data-center chips.

Page last modified on March 22, 2015, visited times

Edit - History - Print - Recent Changes (All) - Search