{"id":740,"date":"2024-05-18T00:00:46","date_gmt":"2024-05-17T22:00:46","guid":{"rendered":"https:\/\/software.green\/?p=740"},"modified":"2024-05-18T00:02:51","modified_gmt":"2024-05-17T22:02:51","slug":"my-10-commandments-on-teaching-computer-science","status":"publish","type":"post","link":"https:\/\/software.green\/?p=740","title":{"rendered":"My 10 commandments on teaching computer science"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Recently, I managed to write my teaching statement for a position I&#8217;m applying to. It came out that I have 10 commandments that I observe when I teach courses. I think it could be valuable for someone, so here it is my teaching phylosophy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teaching computer science is very challenging, for several reasons:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The high scalability of software allows digital technologies to widespread at tremendous pace, making fastly obsolete existing things. Computer science teachers must update every year their syllabi, in order to stay up-to-date with the state of the art and state of practice. And it is not enough to read documentations or articles, we perfectly know that mastering a technology needs practice.<\/li>\n\n\n\n<li>Computer science students are very curious, many of them develop highly specialized skills by their own, for pure passion. Computer science teachers, being very busy, risk to not meet students\u2019 expectations, remaining at a descriptive and argumentative level of novel technologies. As a result, clever students risk to get bored.<\/li>\n\n\n\n<li>Teaching computer science is not like teaching math or history: computer science teachers don\u2019t know everything about the subject they teach. They can\u2019t answer every question.<\/li>\n\n\n\n<li>On the Internet, one can find thousands of solutions for the same problem. The solution to be shown during the lecture must stay within a limited amount of time, be coherent with the previously seen topics, be challenging for the clever students, reasonably simple for average students.<\/li>\n\n\n\n<li>Students may be confused by the enourmous quantity of technologies, most of them are based on opposite principles. What is the right way of creating software architectures?<\/li>\n\n\n\n<li>Syllabi may be detached from the expectations of the industry. Software factories want practical skills, while students spend lot of time studying theory.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For the abovementioned reasons, I developed my own teaching philosophy by defining and following my 10 commandments:<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li><strong>Study, study, study!<\/strong> Syllabi are \u201cperpetual beta\u201d just like software, and must be always updated and refined, also according with the needs expressed by the industry. But teaching IT technology requires mastering it. How to get the required skills \u2013 which are time consuming to acquire \u2013 while continue daily duties? Personally, I force myself by putting new technologies in the syllabus (and then publishing it). When the lecture approaches, I\u2019m obliged to study it, even overnight if needed. The first time I teach a new topic, it will be stressful and it might be not the perfect lecture, something might go wrong, I might not be able to answer a question. But the second time it will be better, and so on.<\/li>\n\n\n\n<li><strong>Be practical<\/strong>. An hands-on approach is the only way to transfer skills in computer science. My lectures are always structured this way: first, show a brief set of introductive slide, very essential and concise. Then, let\u2019s open IntelliJ (or whatever IDE) and develop together.<\/li>\n\n\n\n<li><strong>Keep it logical<\/strong> to foster self-confidence. A clear, simple, modular, incremental path, from where we are now to where we want to arrive, is mandatory to let students be confident in theirselves. If I fail in this, students get lost during the path, which we cross very fastly to cope with all the topics of the lecture, they\u2019ll lose their self-confidence, becoming demoralized, believing the are not able to understand the subject.<\/li>\n\n\n\n<li><strong>Be onest.<\/strong> I don\u2019t pretend to be the smartest people in the room, I explicit declare that I don\u2019t know everything, and if I can\u2019t reply a question, then let\u2019s google it together. Or \u201cWill it work this way?\u201d \u2013 \u201cI don\u2019t know, let\u2019s implement and test it!\u201d<\/li>\n\n\n\n<li><strong>Challenge them!<\/strong> Students are full of duties with other exams, but with me they have the opportunity to absorb the most knowledge they can for my topic. I usually offer a baseline approach to the course, fitting with their other duties, and I also give the optional possibilities to partecipate to an hackathon, writing a paper, attending a conference, and more, for the more dynamics.<\/li>\n\n\n\n<li><strong>Give extra opportunities and tools<\/strong>, e.g. provide credits to explore paid services, or access to super computers. Also host industry during classes (I don\u2019t let them deliver classes, they are not able to) to explain what they are working on and what they\u2019re seeking.<\/li>\n\n\n\n<li><strong>Adapt.<\/strong> Yes we know that every year the class is different. One year it\u2019s difficult to cover all the topics while extensively replying to all the questions, then the next year they\u2019re so shy that it seems that I\u2019m talking alone. In the first case, I set a fixed amount of time for questions. In the second case, I actively engage chats with each of them after and before the class, and durign the break.<\/li>\n\n\n\n<li><strong>Dedicate time<\/strong>, particularly to students working on their thesis. They have chosen me for one of the most important milestone of their lives, they deserve you listening and supporting them.<\/li>\n\n\n\n<li><strong>Be authoritative, not authoritarian.<\/strong> I daily build a strong positive reputation, by doing and publicitizing lot of stuff that expose me as a hungry innovator.<\/li>\n\n\n\n<li><strong>Be an example<\/strong>. Besides my professional career, I am a musician, I have a social life, I travel a lot, I practice sport, I have a kid. I provide daily evidences that you can be a computer nerd while enjoying your lifetime on Earth.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Recently, I managed to write my teaching statement for a position I&#8217;m applying to. It came out that I have&#8230;<\/p>\n","protected":false},"author":1,"featured_media":742,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[74],"tags":[],"class_list":["post-740","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-thoughts"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/posts\/740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/software.green\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=740"}],"version-history":[{"count":1,"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/posts\/740\/revisions"}],"predecessor-version":[{"id":741,"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/posts\/740\/revisions\/741"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/software.green\/index.php?rest_route=\/wp\/v2\/media\/742"}],"wp:attachment":[{"href":"https:\/\/software.green\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/software.green\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/software.green\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}