Hands-on Introduction to Computer Science at the Freshman Level Raghuraman Balasubramanian, Zachary York, Matthew Doran, Aritra Biswas, Timur Girgin, Karthikeyan Sankaralingam Motivation To enable students to get an end-to-end perspective on computer system design by building one. 2 /28 This talk 1. What we did – hands-on projects in freshman computer engineering course 2. Our implementation experience – in 2 semesters 3. How you can adopt this in your institution 3 /28 Hands-on projects 4 /28 Hobbyist computing in the 80’s 5 /28 Today computers are everywhere 6 /28 How we teach computer science Maze navigation Arrays Lists Struct… Hardware simulator 7 /28 What can we do differently? Enable students to build computing systems Expose to concepts in computer engineering In a fun way Not very disruptive to existing curriculum 8 /28 Arduino Atmel chip, 14 digital input/output pins, 6 analog inputs, a 16 MHz crystal oscillator, a USB connection, 32KB Flash, 2KB SRAM 9 /28 Arduino – Hardware++ Stackable and Extensible 10 /28 Arduino - Hardware GPS 11 /28 Arduino – Software++ Intuitive software 12 /28 Arduino – Software 13 /28 5 projects built around the Arduino Freshman course : CS 252 Introduction to Computer Engineering 14 /28 Twitter client 15 /28 Maze navigation 16 /28 Obstacle Avoidance 17 /28 Angry birds Ultrasonic distance sensor 18 /28 Tic Tac Toe 19 /28 Instance 1 (Spring 2012) Extra credit – 5% of the course, Optional > 50% of the class participated 15 had no prior software experience Got them all hardware required Pointers to getting-started software 20 /28 Instance 1 (Spring 2012)-8 weeks later All but one team completed! 2 teams went way beyond what we expected 3 teams wanted to keep their hardware 21 /28 Instance 1 (Spring 2012)-Feedback 22 /28 Instance 2 (Spring 2013) - Improvements Instructional webpages Detailed setup instructions Demo videos Step-by-step project plans Intentionally open-ended! Support from multiple “Undergrad TA’s” Online platform for collaborative discussions 23 /28 Instance 2 (Spring 2013) - Feedback 24 /28 Lessons Learnt Challenge : Diversity in student’s technical backgrounds Projects of different complexity Challenge : Improving student enthusiasm and uptake Instructional videos, open-ended projects Challenge : Too much information is bad! Intentionally vague how-tos 25 /28 Implementing this at your institution Concerns : Instructor background and training Familiarization in an hour Concern : Scaling to large classes Facilitate peer-to-peer learning Concern : Additional load on the “Undergrad TAs” Drops off after the first two weeks http://pages.cs.wisc.edu/~karu/arduino 26 /28 Thanks to my incredible team Zach Matt Raghu Ari Tim Karu 27 /28 From the student feedbacks I wish it could have been worth more. This was much more interesting than anything else we did in class and I wish we could expand on it some. We can start it at the beginning of the semester. So that we can add as many features as we want. This project was well organized, everything went smoothly. The only thing I might change is possibly allow two person groups. I thought it was great. It is a lot of fun, and we are still making improvements on the robot every time we meet. I already expressed my difficulty in understanding assembly, but even though I didn't even know how to program in C-like languages before a month ago, I picked up on the concepts much faster than I did LC-3's pseudo-language. This makes me feel that (bar the *concepts* gained in 252) the Arduino project was a much more practical use of programming knowledge. I would also like to take this opportunity to say thank you - this was a great experience that I would not have had the opportunity to explore otherwise. 28 /28 http://pages.cs.wisc.edu/~karu/arduino