Learning from a successful career in engineering and helping the next generation
I began lecturing at Bellevue College a few months prior to the spread of COVID-19. I had always been an autodidact myself, hacking together code in many languages as I bounced from job to job. But over time I gained a deeper appreciation for teaching, and I hoped to do it justice.
I had been fortunate to get my first break almost thirty years earlier, when a talented senior engineer hired me during summer break from college. Since then I had spent time in key roles at amazing companies including AST Computer, Vivendi Universal, EEDAR, Avalara, and many more.
Would this practical experience be useful in a college setting?
Fall 2019: Data Analytics with Software and Programming
I received an opportunity to teach DA 460, a class starting in the fall of 2019. It would include Python and R as well as techniques for analyzing data. It would be entirely online.
I decided to focus the curriculum around a project I had done in 2008–2009 when I studied sales figures for videogames. The work included logistic regression, charting, trendlines, and data cleansing in equal measure.
As a completely virtual course, the big challenge was to create an atmosphere of learning and communication. I met with other teachers at Bellevue College, studied Canvas (an online learning system), and asked advice from as many people as I could find.
My plans began to solidify:
- The course was for senior students about to finish their degree. I decided I should encourage students to design their own data collection projects. This would hopefully increase their commitment to the work.
- The class would be structured in three parts: Gather data for their selected topic using a Python program, produce graphs from the data with R, and then write a report about the findings.
- I knew some students would get stuck; so in parallel I gathered data on superhero movie box office scores. If a student’s data or program didn’t work out, they could switch to my reference data set.
- The class would have a single weekly focus area to enable all students to collaborate together on similar areas of research using online discussion boards and collaborative assignments.
The class started well. I had many engaged and excited students, but the real world interrupted almost immediately and I had to start making changes. The problems included:
- Lack of a defined lecture: Without a weekly lecture, I had to spend even more time responding to messages on discussion boards. The boards quickly filled up — they weren’t designed for so much content. I split them into multiple separate boards wherever possible.
- Recorded videos: I intended to publish videos featuring lesson content each week. The information density of these videos was low and the effort required to record them was higher than expected, so I switched focus to written material.
- Late work: The course’s weekly structure was thrown into disarray when students requested extensions on assignments. I had wanted students to talk to each other in a forum around the same topic; but now I had to help a large fraction of the class was working a week or more behind.
- Grading fairness: I wanted to grade all papers promptly so students would get quick feedback. But when some assignments were a week or more late, I quickly added a scoring rubric to help me be more consistent:
- Prerequisites: Students were generally prepared to use R, but struggled with Python. I underestimated the challenge of teaching basic programming or scripting skills for those who were unfamiliar with code.
- Messy data: Part of my goal with the class was to teach students how to cope with noisy data. With so many students using the superhero movie data set, this problem became acute. For example, some students tried to determine whether movies were getting longer or shorter; but their predictions were thrown off by the 4 hour runtime of this Batman serial from the 1940s:
I continued to adapt as problems crept up over the ten week duration of the course. I provided coaching sessions to each student as often as possible, and overall students’ grades were good and their work showed promise.
Despite the lack of lectures, it was exciting to see students make use of online discussion boards to compare notes and work together on their projects. Yet I wanted more direct interaction with students. For my next course, I wanted to go in-person.
Winter 2020: Data Acquisition and Management
The next quarter began as news of COVID-19 continued to spread. I was offered the chance to teach DA 320, which focused on managing data sets. The course would talk about “Big Data” and other buzzwords, but I could also include discussion about the ethics of web scraping, privacy, and data leaks.
While doing a retrospective of my work during the previous quarter, I realized my lesson plans focused too much on general principles and not enough on specific technical skills. Some students were clearly engaged when talking theory, but other students wanted more hands-on work.
This time around, I came up with a different plan:
- I would lecture in person one day a week, and provide online activities to help students engage with their material. The course would have fewer online discussion boards and weekly quizzes.
- I would include historical information about trends in database technology. This would help prepare students for inevitable shifts in technology during the course of their careers.
- Instead of messy real world data, I would prepare synthetic sample data sets for students to use. I designed two databases and wrote a simple randomized data generation program.
- I would include a book so advanced students could read ahead while I coached those who needed help. I chose Designing Data Intensive Applications, a book that had high level goals and practical details.
- I would include a section on the differences between SQL and NoSQL data technologies, and talk about what it was like to manage each technology.
This time around the class worked more smoothly. I enjoyed the ability to stand in front of a classroom and share my enthusiasm. It was great to see students ask questions and participate in group discussions.
During my in class time, I observed the class’ response and tinkered with my material to better match their interests.
- I included material from the book in my lectures, but it was not as popular as I had hoped. Without weekly quizzes covering the material, many students skipped their assigned reading.
- As much fun as I had talking about the history of database technologies, I noticed those lectures were less well attended. On the other hand, lectures on web scraping, data breaches, and ethics were extremely popular.
- Once I had students hooked on a technology, they were more receptive to other material about it. The interactive MongoDB cluster setup workshop and lecture was a great success.
- My lectures had slides that showed correct usage of a technology, but students also wanted to know why I thought a particular technology was worth learning. It was especially fun to talk about real world projects that had gone awry due to mistakes implementing databases.
- My original course plan included too many open-ended writing assignments and not enough technical work. I eventually shifted the course towards a more even balance of writing vs execution.
With the advantage of having one full class under my belt, I was much better prepared and I loved being able to talk face to face with students. Student grades were high and my student feedback review scores were significantly improved.
At the last moment, I faced a surprise: in person courses were cancelled in early March due to the onset of COVID-19. I needed to rethink the class if this was to be the new normal.
Spring 2020: This is the new normal
In a stroke of good luck, I was offered the ability to teach the same course a second quarter in a row in Spring 2020. This time the class would be entirely vitual, as would everything in the quarantine era.
It was time to make structural adjustments:
- We put in place a weekly lecture via Zoom, and after some practice I added an optional weekly “workshop” event where students could ask questions about where they were stuck.
- To simplify the technology areas, I’d plan three weeks on SQL Server, three weeks on MongoDB, and three weeks on web scraping.
- Each segment would begin with one week of install & setup of the technology. For advanced students the week was easy; but it helped to have a week where I could focus on the students who needed help.
- Each lecture would highlight a specific technical area. I would still discuss some historical context, but only as background.
- Since most students were already familiar with SQL Server, I decided to switch to SQL Server on Linux in Docker. This version was relatively new and it allowed me to talk about container theory.
It was a huge help to teach this class twice back to back. Instead of writing lectures from scratch, I could spend my time editing and refining previously written material.
With the benefit of hindsight, I changed the title of lectures to emphasize the technical topics. Each week my lecture would include a tutorial walkthrough of how to complete that week’s assignment. Attendance was up, and I could still include other material as needed.
I added more screenshots of working code to my lectures, which helped answer student questions. I created multiple example data sets so my lessons could bounce back and forth between different database layouts. I added short interviews with special guests to add more variety to weekly lectures.
All the little touches helped. I received almost uniformly positive feedback, and it made me proud to see each student complete a final essay on the ethics of managing customer data and the security policies necessary to safeguard the information in their database.
One important lesson from my career is that specific technologies change faster than I can predict. Although my lessons featured technical skills that will become obsolete over time, the principles behind them are still valid and students benefit from a chance to practice hands-on learning.
With a bit of practice, I can balance my desire to talk about theory with a students’ interest in learning marketable skills. The end result, of which I am immensely proud, mixes the best of both.