I work as an associate professor at Champlain College, a teaching college in Burlington, Vermont. My CS education journey started with my first book, Dart for Absolute Beginners, in 2014. A year later I started adjuncting at a community college in New York while working as a contract iOS developer.
In 2016, I decided to go into teaching full-time and joined Champlain where I teach a variety of computer science classes, many of my own design. I also developed our concentration in Mobile App Development, a major in App Development, and co-developed our minor in UI Design & Implementation. I’ve served as the co-program director of Computer Science & Innovation since 2019.
Some of the courses I have most enjoyed teaching include: Data Structures & Algorithms, Open Source Software Development, Android Development, iOS Development, Topics in Artificial Intelligence, Human-Computer Interaction, and Emerging Languages (a programming language theory course with a modern twist). I have taught more than a dozen different courses. It’s hard to believe, but a few students have graduated taking as many as seven classes with me!
I learned to program when I was 8 years old from my dad who was a CS professor. As a teenager, I built free apps for early versions of Mac OS X. In my 20s, during and immediately after completing my masters in computer science at Dartmouth, I pursued software development work in startups for a couple years. Then I worked for a couple more as a contract iOS and Web developer. Now in my 30s, I’m active in the open source community. One open source library I lead the development of, SwiftGraph, is in multiple apps with 100,000s of downloads.
I also develop indie apps and services (as Oak Snow Consulting LLC). I’ve developed Mac apps in the education and photography space, as well as iOS apps in social networking. For fun, I’ve worked on emulators and an educational neural network library. I’ve developed a Python powered hyper-local daily newsletter read by more than 1% of the population of Burlington, Vermont and Twitter bots.
I’m comfortable working in a variety of languages and development environments. I can build iOS, Android, Mac, and Web apps. I can work in Python, Swift, Objective-C, C, C++, Java, Dart, Kotlin, and more.
My first programming book, Dart for Absolute Beginners, was published by Apress in 2014. It was an introduction to programming for those totally new to the field, in the then just released Dart language from Google. I had the privilege of interviewing the creators of the language (Lars Bak & Kasper Lund) in the book, which began a long interest for me in conducting interviews. Dart for Absolute Beginners is now very out of date and the Dart language has evolved, so I can’t recommend it to new readers (in fact I’ve asked the publisher to remove it from sale). But I stand by its approach to teaching beginner programming.
In 2017, I shopped around a proposal for a book about another emerging language, Swift, but this time targetted towards intermediate programmers. Manning ultimately published Classic Computer Science Problems in Swift in 2018. The publisher said—it’s a great book, but why don’t we bring it to a larger language audience? Classic Computer Science Problems in Python, published in 2019, was a smash hit that has gone on to be translated into 8 other human languages through publishers like O’Reilly Japan and Rheinwerk Verlag. In 2020, Classic Computer Science Problems in Java was published, which will likely be the final book in the series. I’m glad we were able to do something special for it by including an interview with Java Language Architect Brian Goetz.
The Classic Computer Science Problems books teach fundamental problem solving techniques through an approachable tutorial-like format. They are positioned both for those who are self-taught programmers and those with CS degrees who are looking to refresh for interviews or problems they need to solve at work. I am working on another Python book with all-new material, also for intermediate programmers, in a similar tutorial-like format. To be notified about it, please join my very low volume newsletter.
I also write a blog, mostly about technical journeys and book reviews, called Observational Hazard.
I’m an amateur podcaster. Podcasting is one of the few fields where you can produce over 150 episodes across 3 shows, and still be an amateur. But I do it because I enjoy it. The journey is the reward, right?
I created my first show, Consult, when I was working as an iOS contract developer in 2015. Over the next two years, I had the privilege of intervieweing some of the top iOS and Mac development consultants in the business. The show ran its course by 2017 and I had changed careers, but it had some really insightful interviews.
My second show, Business Books & Co., I have co-hosted with friends from Dartmouth since 2019. Each month we read a great business book and discuss how its key points can help us with our careers. In our three seasons we’ve amassed thousands of subscribers around the world and had the honor of interviewing some award-winning authors.
Kopec Explains Software is a podcast I co-host with my wife, Rebecca. Every two weeks we explain a software-related technical topic in plain English. We’re at the point where we have several thousand listens each month and we’re growing fast.