Hello, my name is Michael Eramo. I am an experienced educator, life long learner, and a self-taught programmer. I hold official Bachelor’s Degrees in Music Industry, Education, and Physics, a Master’s Degree in Mathematical Science, and a certificate in Software Development from Microsoft. While I owe my extensive knowledge base in Music, Physics, Mathematics, and Education to the many great educators I have worked with, my understanding of Computer Science is all my own.
I have never taken an “official” computer science course; I am completely self-taught. However, do not let that deter you from taking this course! Instead, let it motivate you that you too can learn anything you want to. Not only have I done it, but I’ve come to realize what works best for the self-taught programmer, and I have perfected the process!
See, I had this deep fear right after my son was born that I was done growing as an individual; that the person I was at 30 was going to be the same person I was at 55. I felt that there was literally ZERO time in the day to do anything other than go to work and be a dad. That is, until I bought a book on Computer Science, and a sense of wonder was woken. I’ve read countless books, watched hundreds of videos, and put in thousands of hours exploring and writing code. I would routinely wake up at 3:00 AM to learn for a few hours before I had to go to my full time job, teaching high school, before I went to my part time job of teaching college. Days were long, but getting up at 3:00 AM to read, to learn, or to code benefited me more than a few extra hours of sleep. It helped me realize that I was never done learning; never done growing. To me, that is what defines a life long learner.
I have years of classroom experience as a high school Physics teacher, Computer Science teacher, and college Mathematics professor. I am part of the New York State Master Teacher Program; a network of more than 800 outstanding public school teachers throughout the state who share a passion for their own STEM learning and for collaborating with colleagues to inspire the next generation of STEM leaders. Most importantly, I know what motivates people to learn on their own; to find a way to create time to learn, when there is no time to be had. I understand that time is valuable and that all learning should be engaging, meaningful, and have purpose.
Combining my expertise as an educator and my own personal interest in self-taught computer science led me to a telling realization; most educational material for the self-taught programmer is NOT EDUCATIONAL AT ALL. Instead, it falls into one of two categories:
Yes, I will admit that some learning does take place in doing simple tasks or watching others complete complicated tasks. In fact, much of how I learned was done this way. However, I’m telling you it pales in comparison to the learning that takes place by DOING meaningful and appropriately challenging work. This is the art of doing.
The art of doing is the art form of transforming oneself from a passive learner who watches, to one who sees the process of learning for what it truly is; a mechanism to better oneself. In “The Art of Doing”, I have worked very hard to put together 40 meaningful, engaging, and purposeful “Challenge Problems” for you to solve.
Each challenge problem is differentiated for 3 levels of learning.
Engaging, meaningful, and with purpose. These challenge problems are vehicles that not only teach computer science, but teach you the art of doing. I guarantee that after completing them all you will consider yourself a life long learner and be proud to call yourself a self-taught programmer.
Throughout the scope of this book and its 40 challenge problems, you will get exposed to numerous ideas, theories, and fundamental computer science concepts. By working through all 40 challenge problems, you will gain a mastery level understanding of the following topics:
Assignment, Algebraic, Logical, Members, and Comparison Operators
Over 20 Built In Python Functions:
And External Libraries: