Rohin Shah

Rohin Shah Photo

Where did you grow up? What was your path to Cal?

Although I was born in America, my family moved to India when I was four years old. I lived in Pune (which is near Mumbai) until four years ago, when I came to Berkeley. I spent eight years at the same school until I graduated from 10th grade (which is a Big Deal in India), after which I studied in an IB (International Baccalaureate) program.

Having grown up in India, I spent most of my free time playing outside with friends - in fact, I believe we didn't have TV for a few years after moving to India. I certainly didn't use computers very often and even in ninth or tenth grade after using the Internet to do research, when it came to writing up a bibliography I would put down "www.google.com" and nothing else. However, I did learn programming during those years - my school taught a small subset of C++ and Java. (Almost all of what I learned in those years we will teach you in the first two lectures. This is only a slight exaggeration.)

Despite how little CS I learned from high school, it was still enough to pique my interest, and so I decided to apply for the CS major at all of my colleges. I wanted to be in California (good universities, good weather, grandparents live in California) and so my top two picks were Berkeley and Stanford. I didn't get into Stanford, so the decision was easy.

In my first semester, I took CS 61A and loved it. I knew at that point that I wanted to teach it as well. Over the years, I have been a TA for CS 61AS, CS 61B (data structures), CS 170 (algorithms), and CS 161 (security). I graduated this past spring with a major in EECS and a minor in Physics, winning the Departmental Citation (yes, a citation is actually a good thing here, it means I was the valedictorian in EECS) and becoming one of five finalists for the University Medal.

I have lab assisted for CS 61A every semester since I took it (for a total of 7 semesters now). I have worked with Brian Harvey to design CS 61AS in its current form. For the past two years, I have run the course along with Andrew. This has given me a lot of experience that normally a TA wouldn't have - for example, I have personally written multiple discussions, quizzes, and final exams. I have come up with administrative policies, written syllabi, written autograders, and calculated final course grades. In short, I have done almost all the tasks that an instructor would normally do, except for lecture itself.

How much programming have you done (and what languages)?

So a long time ago (perhaps during elementary school), I played around with the turtle graphics in Logo. At the time, I didn't know I was programming. In fact, it was only after coming to Berkeley and implementing a Logo interpreter in 61A that I realized that I had been programming the entire time. Side note - Logo was actually created by Brian Harvey among others, who was my professor for 61A. I actually went back and looked at my Logo CD, and his name was on it.

Subsequently, I learned Basic, C++, and Java in high school, and promptly forgot both Basic and C++. During the summer after 9th grade, I took part in a two-week program where I was taught SQL, C, HTML, VisualBasic, and a couple of others that I don't remember. I don't know whose brilliant idea it was to take a bunch of ninth-graders with almost no programming experience and attempt to teach them five or six languages in two days each.

Then of course I came to Berkeley and did tons of programming and learned many programming languages. I think it's safe to say that I have many thousands of hours of programming experience, and over a thousand hours of teaching computer science experience. Probably over two thousand hours if you include the time I have spent on Piazza. In order of familiarity, I've used the following languages:

Languages that I could code in right now, perhaps with some Googling:

Languages that I have coded in, but for which I would need a cheat sheet:

What are your hobbies? What are some of your talents and skills?

I like to sing. I'm told I'm a decent singer, but given all the other talented singers I've met at Berkeley, I have my doubts.

I love logic puzzles, word games, and in general most games that exercise the brain. I am particularly good at word games - I have played in the national junior Scrabble tournament in India, although I have no idea whether that compares to Scrabble in America. I am also currently undefeated at Bananagrams.

In India, we were never allowed to use a calculator, so I have become pretty good at mental arithmetic. For example, I can multiply two digit numbers fairly quickly. However, I'm more proud of my ability to estimate the answers to (almost) arbitrary numerical expressions (so it can involve sines, exponents, square roots, and so on). Depending on how complex the expression is, I can usually get to around one or two significant figures.

I enjoy many different sports, and I've played several off and on, with the result that I haven't become particularly good at any one of them. (This is especially true since I haven't had any formal coaching in any sport.) I especially like basketball and soccer (which should absolutely be called football, but oh well).

I don't know if this counts as a talent/skill, but my arms are incredibly flexible.

Have you done anything remarkable? Has anything memorable happened to you?

I once built a nine story house of cards. It took several hours of patience and carefully controlled movements. It got so nerve-wracking near the end that it took a few tries before I could calm myself down enough to stop my hands from shaking as I put on the final touches.

I have over ten thousand contributions on Piazza. I wouldn't be surprised if I was the top contributor on all of Piazza.

As for something memorable - a few years ago, I was guiding a group of campers in the Tadoba wildlife reserve in India, and a tiger walked right in front of us.

What commitments will be consuming your cycles this summer?

CS61A, CS61A, and - you guessed it - CS61A.

How would you describe your teaching style?

When I was a TA, I liked to have students work in groups, and then have each group present the answer to a specific problem. This way I could actually get most of the students to participate during discussion. It was rather unconventional - I talked *very* little during a discussion. As a TA, students had the luxury of choosing which discussion they wanted to go to, so being unconventional was okay. As a lecturer, I don't plan to do anything too unconventional.