Original article was published by The Coding School on Artificial Intelligence on Medium
Team Spotlight: Q&A with Andrew Oliver
Meet Andrew: one of our all-star curriculum developers for The Coding School’s Artificial Intelligent (AI) curriculum! He is a recent college graduate from Duke University, where he studied Math and Computer Science. Andrew is from outside of Philadelphia, Pennsylvania, and he recently moved to Seattle, Washington in early August. He’s working as a Software Engineer at Microsoft where he works within Commerce & Ecosystems. Previously, he was a software engineer intern at Vanguard and worked on some web development side projects.
How did you get interested in coding?
At some point in high school, I heard the phrase “A computer can do anything you want it to, so long as you specify exactly what that is”. I don’t know if it was a teacher, a textbook, or a quote, but it always stuck with me. It’s a fairly revolutionary claim, and I was interested right away. I thought learning how to code would allow me to specify exactly what I wanted to do. However, every time I have some hidden bugs in my code, I’m reminded that the actual code is just one part of this specification process.
Fun Fact: The first piece of code I ever wrote was a drawing of Bart Simpson, which I wrote using the Turtle module in Python. I hadn’t learned the concept of a “for loop” or a “method” yet, and I remember copying and pasting the same 5 lines of code about 70 times. It probably wasn’t my best piece of software!
What inspires you about coding?
I have always been inspired by the ability of code to have a positive and immediate effect. I remembering making a web app for a restaurant where I worked to keep track of our reservations. It took some serious time spent on Stack Overflow, but it worked. I had taken a few CS classes at Duke, and I was able to build technology used by a business and hundreds of clients. That impact has always inspired me.
What areas of CS are you interested in?
I’m interested in natural language processing and game playing. Over the past couple of years, I’ve also become interested in how CS is taught and to whom it is taught. I ran a class for undergrads at Duke to help them through tech recruiting. I found these students (myself included) had difficulty taking concepts from CS classes and applying them to software engineering interviews. I’m still interested in how one bridges that gap.
What is your favorite work/internship-related experience or project that you’ve worked on?
I took an AI class during my junior year, and we used Alpha-beta Pruning and A* search to design an algorithm to play Connect 4. The core part of the algorithm was less than 15 lines of code, and that algorithm beat me in every game of Connect 4 that I played. I would sit there, chart out moves, and lose every time. I was shocked that 15 lines of code could beat me that easily. I loved that exercise.
Why are you passionate about CS education?
There are a few reasons. CS education is one necessary step towards diversifying tech, and I am passionate about this. Teaching a concept or explaining an algorithm and having a student understand is a uniquely rewarding feeling. Lastly, it helps me understand whatever I’m teaching. If I have difficulty explaining a concept, it is because I don’t entirely understand this concept. CS education makes me a better software engineer.
Why should students learn about AI?
There are plenty of “good reasons” — techniques from AI are critical in areas of natural language processing, computer vision, planning, and more. These topics are important for automated assistants, self-driving cars, and medical diagnosis and treatment. The technical world is shaped by AI and ML. It is important to know these techniques to understand where tech is and where it is going.
Also, as mentioned earlier, even short 15-line algorithms can beat a human’s intelligence. If nothing else, it’s exciting to learn and develop these algorithms. These algorithms then encourage some interesting introspection – Just how intelligent are humans? How is our learning different from modern machine learning? What are the bugs in our algorithms?
Why did you decide to join TCS and help develop the AI curriculum?
I believe in the mission of TCS. Every facet of tech should be equally accessible to people of all identities. We need to help close the digital divide that exists between those with access to computers and the internet and those without. TCS is taking strides in this direction, and I am glad I can help. As for the AI curriculum, I’ve always been interested in AI, and TCS needed some help developing this curriculum.
How do you and your team work together to develop the AI curriculum?
Over the past 3 months, we have been adding examples to existing lessons, but more recently we have been developing various labs for the AI curriculum. We recognize students have some difficulty seeing how AI algorithms are applied. So, we’ll take a lesson on Depth-First Search and show how this algorithm can be used to efficiently play Towers of Hanoi. We’ll take a lesson on A* and Heuristics and show how a seemingly fair heuristic can be biased along racial and gender lines. For new units, we’ll typically look at the various AI curriculum on the web along with some textbooks (like Russell & Norvig’s Artificial Intelligence), then we’ll modify topics, add some new exercises, and go from there.
Why should students choose TCS and it’s AI curriculum?
AI can be a tricky subject to learn. I’ve spent many hours thumbing through tutorials and example code without understanding much. Having a dedicated instructor to guide you through lessons will help you learn more AI more quickly. TCS is unique in offering this. Also, I hear the AI curriculum is incredible!
What advice do you have for students who are interested in pursuing a career in CS/STEM?
I found it helpful to attend events where I could meet and speak with current STEM employees (career fairs, networking events, even cold emailing alumni). This helped me understand their careers. I also recall being frustrated after my first and second years in college because I found it difficult to get experience in tech. Even if you don’t have a formal internship, write some code and start up a side project. Find some interesting dataset and pull it apart. Throw together a web app to solve a problem or provide a service. When I began interviewing for full-time roles, I found companies were often more interested in these personal projects rather than my more formal internship experience.
This is a part of The Coding School’s Instructor and Team Spotlight series, in which we highlight our team members doing cool work in tech.
Written by Victoria Chen, an undergraduate at Tufts University and an instructor for The Coding School.