*2020*

I also took a side-job as external lecturer early in my PhD, at DIS. DIS is a small independent institution that offers university courses to US undergraduates studying abroad in Scandinavia. My first course was 'Computational Analysis of Big Data', and more or less I was given entire freedom over what I taught and how I taught it. I used this as an opportunity to design the type of Data Science course I had always wanted to take. Later I started teaching 'Artificial Neural Networks and Deep Learning', and applied very much the same formula.

**Keep lectures short**: Students are consuming SO MUCH KNOWLEDGE. Most teachers cannot remember exactly how intense studying at a university can be. Every week students are given new difficult topics to learn in each of their 4-6 courses. If some fall asleep or ask about something you just explained during your two-hour lecture, you are wrong to put the blame on them (though most do). I usually find that my students disengage when I move past the 50-minute mark. Moreover, if I prepare good slides and think hard about how I want to explain things, my lectures are usually shorter than 40 minutes.**Ideas first**: AKA "get to the point". When introducing a topic, I prioritize students' ability to understand its core idea rather than the mathematical details. For example, when introducing principle component analysis (PCA), rather than starting with covariance matrices and eigenvector spaces, I focus on the idea of low-dimensional projections in general and how they are just like objects' shadows, only the shadows and objects can have any dimensionality. Once they understand this, they get why it's useful and worth investing brain power into, and will be more likely to care about the technical details.**Avoiding**: I don't cover topics completely (short lectures, remember?). When my students run into trouble due to their lack of knowledge I introduce them to Stack Exchange, Wikipedia and Google searches. During tutorials, students fill their gaps with questions and chalk discussions. This makes for a much more active learning experience, where they seek out knowledge on their own, something they will eventually have to learn anyway. In combination with the above principle, I can cover much ground quite effectively, trusting that whatever method they apply, they know at least what its purpose is.*completism***Exercises as backbone**: When teaching data science, there is no learning without doing. A good lecture will only serve as framing for the problems that students will have to learn to solve on their own eventually. Therefore, I invest considerable time into writing exercise sets as comprehensive Jupyter notebooks that interweave explanations, examples and problems, like a guided tour through big problems. My notebooks serve as the teaching backbone, which in practice means that they contain all the lessons I want my students to learn.**Examples first**: We remember better when something is put in relation to our existing knowledge. Stories are great for introduction, because they employ the listener's imagination which automatically links the new concept to all sorts of things. I, for example, introduce neural networks not as networks, but as nested logistic regression. I first tell a story about how logistic regression can be used to decide whether to go to a party or not based on different*variables*and how you*weight*those. Then I motivate that if the decision boundary is non-linear, one model is not enough, you need to couple output to input of multiple (the TensorFlow playground is great for visualizing this).**Projects! Not exams**: This is probably my most important principle. As a student taking conventional university courses, you don't have much time to build a portfolio. Worse even, you are fooled into*not caring*because universities make such a big deal about grades that you think only they matter. Then after you graduate, employers will completely ignore your grades and turn you down because of your empty portfolio. I strongly believe in giving my students space and guidance to complete awesome projects that they can use as proof of their competences. This way they walk away with both their precious grade*and*an even more precious portfolio project. I have them write it up as a blog post, with a link to the code on Github. AND IT WORKS! Every semester I get emails from past students that land jobs at big companies (Amazon, Google, Microsoft to mention a few) using their project as leverage. Below I link to some of the best projects my students have produced.

**Github**: There's no reason not to*synergistically*implement tools in your teaching, which your students will have to learn to use anyway. Github is one of those. Therefore, I maintain course material in a Github repo, put course information on the repo*Wiki*and promote the use of*Issues*for Q&A outside of class. Finally, students must share their exam project code in a Github repository. Using Github is great for a number of reasons: (1) Sharing new material is a command in my Terminal. (2) Students fix issues (typos, code bugs, broken links, etc.) using pull requests for extra credits. (3) Students answer each other's questions for extra credits. (4) Keeping course repos public, others can reuse my material.**Peergrade**: Although my classes are rarely bigger than 30 students, the programmer in me burns out on the repetitiveness of grading assignments. Moreover, my time is much better spent improving the course material. So I use Peergrade which is a SaaS that facilitates peer reviews of student handins. It's an extremely well-developed system, where the teacher creates rubric questions for the reviewing students to answer when grading their fellow students' handins. The students are usually happy to learn from others' solutions, and since you can assign every student to review multiple times each handin gets lots of feedback.*Disclaimer: I have no stake in the company, but the founders are my personal friends.***Vent**: It's important to allow your students to give you feedback throughout the course. Usually they don't hold back the positive things, which is great, but it's not always that useful. Ideally, you want students to feel safe enough to share their negative experiences, but due to the inherent uneven power relationship between teacher and student (due to grading I suppose) this is rarely the case. So I set up a webform on my homepage where students can submit anonymous messages to me. Every semester I get feedback which reveals something important, which lets me adjust the pace or go more into depth with important topics I explained poorly. Moreover, I think it's just important for the students to have a place to vent their frustrations, risk-free, if they need to.

- Space Cadet Pinball Neural Network
- Using neural networks to distinguish Donald Trump’s tweeting habits
- Identifying and Generating Famous Works using CNNs and GANs
- Airline Delays
- Political Polarization on Twitter
- Computational Analysis of Big Pharma
- Predicting the market with a little help from the POTUS
- The secrets hidden in your Venmo and Instagram data