Back in March, the Adobe Creative SDK team sponsored Droidcon SF, where we set up a booth to show developers the Creative SDK in action. During Droidcon, I gave a code workshop on integrating the Creative SDK Image Editor into an Android app.
It was there that I met USC Viterbi School of Engineering’s Rob Parke. Rob kindly invited me down to USC to give a guest lecture, and walk his students through building a basic integration with the Creative SDK Image Editor on Android.
We made that happen last month, when I visited Rob’s Android development students during one of their classes. I had a lot of fun working with his students during the 2-hour workshop, going from setting up an Android Studio project to integrating the SDK.
After the workshop, I asked Rob a few questions about his role at USC, his advice for students, and what technologies are currently exciting to him. He even shared with me a little about a new minor he is creating (hint: electronic device creation and production)!
I’d like to share that conversation with you below.
Please share with us a little about your background and what you teach at USC.
I’m a Senior Lecturer in the Information Technology Program (ITP) at the USC Viterbi School of Engineering. My academic background is in computer science and electrical engineering, and I have been fortunate to work in a diverse set of fields ranging from software development to post-production sound.
At ITP, I currently teach Introduction to Python and Android App Development.
How much of a technical background do your students typically have before starting your classes?
It varies based on the course, but for our introductory courses, student need no previous technical background.
ITP is a really exciting place because our primary mission is to teach applied technical skills to students who are non-computer science / non-engineering majors. We offer a host of minors from mobile app development to analytics to computer forensics/security that students can combine with their undergraduate degree. For example, one of the top students in my Android course last semester is now in a Ph.D. program for history.
My Python class is introductory, so most students have never programmed before. I tell the students that it will be challenging, but that the course is designed so that everyone can be successful.
The Android course is the third in a sequence which is preceded by Introduction to Python (or Java/C++) and then Data Structures, but students still have varied backgrounds. For example, it could be the third programming course for a sophomore majoring in art, and it could be a technical elective for a graduating fifth-year senior majoring in computer science.
Do you recommend that students pick up any specific skills before the semester starts?
For Android, I recommend they learn Java syntax since some students may be new to Java and that they review object-oriented programming.
The syntax and Java-specific elements such as collections are pretty straightforward for those with C++ experience. However, they definitely benefit from learning (or relearning) the deeper object-oriented concepts, such as what static means in different contexts, how anonymous inner classes work, and what polymorphism/inheritance look like in a real-world system.
For most students, this is their first experience working in a very large codebase / existing ecosystem and it is easy to get overwhelmed by all the moving parts, so understanding those fundamentals is helpful.
What advice do you have for students who take an introductory programming class and discover they love it?
Learn more and program more!
When students discover that they really enjoy it, they are usually surprised since there is a stereotype of what a programmer is (which they do not fit) or what programming is like. The most critical thing is to keep challenging themselves, to develop a strong foundation of core programming concepts, and to connect to the larger community (with friends, online, through meetups, etc.).
I encourage students take a second, more advanced course, which would typically be Data Structures. In lieu of that, I strongly suggest some kind of structured learning, which could be a book or online course. It is also engaging to work on a project that they care about. This could be a simple game to show their friends, a program for a club or hobby, or anything that captures their interest enough to dig deeper.
It is exciting because students realize that programming can be part of their career—regardless of their grade level or their major. Some will find that they can use Python scripts to automate data processing in business or research; others will add a programming minor to combine software development with their major discipline; others will change their major to computer science or pursue a post-baccalaureate program; and others will enroll in industry-focused boot camps.
What’s your preferred method for keeping up to date with what’s happening in the Android ecosystem?
It is a challenge, but fun!
Technical blogs are great resources, and I also really enjoy attending Android developer conferences since it is a great chance to meet and learn from industry experts.
It is important for me to keep up to date with the direction of Android development to help prepare students for internships and jobs, so I solicit feedback from industry professionals on curriculum. I am always learning from students that share what they learned at internships or from independent projects as well.
What technologies are exciting to you these days?
I am excited by how accessible it has become to manufacture physical devices.
I am creating a minor for electronic device creation and production that will be open to all majors, similar to our mobile app development program. With rapid prototyping and electronics knowledge, students can develop all sorts of innovative products such as wearables or connected devices.
Thanks to USC Viterbi School of Engineering’s Rob Parke for having me out to give a Creative SDK code workshop for his students!
Interested in learning more about the Creative SDK? Head on over to our developer portal.