Context and setup: The cliché start in nearly every programming class is the “Hello World” program. The simple introduction to computing offers students with a step-by-step guided experience into the tools, language, and process of writing simple software. Hello world is simple, effective, and familiar, but does it tell the desired story? My teaching demo looks to revitalize the introduction to computing by rebranding what modern programmers do how I see the path to becoming one. My lecture encourages helpful habits of mind and hopefully entices learners with an early, yet meaningful glimpse at the challenging problems and compelling technologies relevant to Computer Science.
Content goals for students: To become an effective twenty-first-century programmer, you will need to master tools that are decades old, ones that only came into widespread use in the last decade, and continue to learn tools and techniques that do not exist today. Employers expect you to learn more and be better at it than the previous generations of graduates, but you have powerful tools unavailable in the early days of programming.
Programming languages provide the primary tool for tackling well-defined problems with deterministic algorithms. Machine learning offers new methods of exploring data and solving less structured problems. Your job, should you choose to put in the work to earn it, is to learn how to teach computers how to complete tasks more effectively and reliably than people can ever accomplish. To do this, you will learn a new language. You will learn new tools and processes. Most importantly, you will transform your understanding of what it means to teach and learn. Programming requires you to precisely share knowledge with a machine so that it, in turn, can create new knowledge, perform critical work, entertain, support, and otherwise improve the lives of other people. This class starts a long, sometimes bumpy road, but understanding a bit more about the computer on your desk and the one between your ears will start you on the right foot.
Disclaimer: My lecture is intended as a departure from a standards classroom demonstration to distinguish my style and philosophy. Most of my teaching utilizes a flipped classroom that would be difficult to replicate. Instead of a tedious lecture on syntax or a pseudo interactive coding session, please visit my YouTube channel for examples of more than one hundred (older) videos from my time as an adjunct professor on various topics in Java, to requirements, design, or testing. If desired, I have a bit of a coding demonstration that can serve as a sample for handling student questions or the like.