Mentorship, Wisdom, Progress, and Simulations (Post #2)

Since my last post, I have had my first meeting with my mentor, Mr. Bill Zhang. Our discussion extended for an astounding hour, where Bill offered plenty of advice, wisdom, resources, and ideas.

  1. My mentor’s expertise, experiences, and facilitation strategies.

The first programming language Bill learned was BASIC, which he learned in High School. He earned a Master of Science focused on Computer Science & Engineering at the University of Texas at Arlington and has since used many different programming languages at different positions such as Java, XML, SQL, C++, and Python, over a period of over 20 years.

Bill states that in his experience, after learning a few programming languages, adopting a new one only requires learning the basic syntax, new features, and unique/specific features of the language, as the core concepts and basic features used by all programming languages are very similar, if not the same. For example, for Python (which is not Bill’s main language), he looks at Python references and documentation for information. Thus, learning a new language after one’s first language is about finding what is specific about it.

When it comes to learning one’s first language itself, Bill explains that it is very important to build a solid foundation that can be carried over later. He says that I should take my time and go through the course I am using carefully. After all, to learn more than one language, you need solid fundamental knowledge of the core concepts. Similarly, as I have even discovered, having holes in one’s knowledge is far worse than spending time and learning a concept well, which will pay dividends in the future.

In terms of facilitation strategies, several approaches Bill took stood out to me. After I outlined my progress so far by sharing my screen, he first answered some burning questions I had (described next), then offered ideas and possible routes I could take with my project. He used his experience to show what he has done in scenarios where he became the learner. When Bill had an idea, he would suggest ways for me to implement it and provide resources that will help me to do so. These are facilitation strategies that I will use to assist me in my development as a mentor.

  1. Wisdom gained and progress.

By far the most lingering piece of wisdom that Bill has passed on to me is to approach programming (in any language, really) using a top-down, instead of bottom-up methodology. He explained that every programmer has a problem, a design, and implementation details. Put another way, whether by flowcharts or even a simple brainstorm, developing an overview of what major parts the program will have, first, is crucial. Then, and only then, must the finer details – how you will accomplish what you want to do using the chosen programming language – be specified. This piece of advice was enlightening, since, in past incidents where I’ve written programs, I often felt lost starting with the details without an overview/plan.

This connects to the age-old question of, “Should I try to memorize?” To this, Bill reaffirmed that memorizing is not important. Instead, it is more practical to obtain a base understanding of everything, and then focus on how you will find a solution. Once a plan has been accumulated, what exactly will be used to implement the solution (syntax, methods, classes, etc.) will come naturally. Bill reiterated that, especially for one’s first programming language, learning the basics well is more important than memorizing – though the syntax changes between languages, the core concepts never do.

Naturally, Bill shared some of the resources he uses when looking for how to implement something he does not know how to do. These are the official Python 3 documentation and W3Schools references. Additionally, Bill has kindly recommended Visual Studio Code, a complete programming environment by Microsoft, which has now fully replaced all the other tools I was using. Next, he suggested an idea for what I could attempt to do for my final project after completing the course. With COVID-19 prevalent in the world, Bill believes (now I, too) that it would be both instructive and useful to write a program that simulates the spread of the coronavirus, using both animations and a graphical user interface. Specifically, the simulation would most likely be based on the SIR (susceptible-infectious-removed) model of COVID-19 transmission. The program will ideally help to answer questions regarding the effectiveness of restrictions, vaccinations (herd immunity), and what it would take to completely eradicate the virus. Although SIR modelling does use equations that I have never encountered, Bill and I both think it will be feasible, albeit challenging, to say the least. To assist me in my venture, he shared a page about making GUI’s with Tkinter, a video about a similar SIR simulation, and a paper about the SIR model.

Finally, an update on my progress overall. I am well on my way to finishing half of the course by the halfway point (end of February), having just started object-oriented programming (OOP)! This week, I covered methods and functions, which I will be updating in my log. Thus far, I have recorded only one log entry (though it is lengthy), since most has been simply review. As I finish OOP – which will be the first section where everything is completely new for me – I will 100% be recording weekly logs. I have attached my first log entry below, for a detailed progress update. Next week, I will also be having my second meeting with Bill!

(In-Depth Log)

Leave a Reply

Your email address will not be published. Required fields are marked *