<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on vhmp.dev</title><link>https://vhmp.dev/</link><description>Recent content in Home on vhmp.dev</description><generator>Hugo</generator><language>en-us</language><copyright>© 2026 Vu Huy Minh Pham · Text: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/legalcode) · Code: [MIT](https://mit-license.org/)</copyright><atom:link href="https://vhmp.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Philosophy</title><link>https://vhmp.dev/programming/teaching/teaching-programming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/teaching-programming/</guid><description>&lt;h2 id="teaching--and-learning--programming-is-difficult"&gt;Teaching (and Learning) Programming Is Difficult&lt;a class="anchor" href="#teaching--and-learning--programming-is-difficult"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This is a short manifesto on teaching and learning programming.&lt;/p&gt;&#10;&lt;p&gt;It is easy for both teacher and pupil to blame one another just like in any other discipline. However, the problem of teaching programming is especially arduous because specific factors:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The student has to learn to think and express more formally.&lt;/li&gt;&#10;&lt;li&gt;The teacher has to encourage the student to read and process hard text and not just rely solely on a more simplified transmission of knowledge.&lt;/li&gt;&#10;&lt;li&gt;The student has to be willing to be able to find resources for a topic and commit to learning them on his own as soon as he is able to.&lt;/li&gt;&#10;&lt;li&gt;With now the widespread usage of a large language model, the student has to maintain discipline to avoid this shortcut: while AI bootstraps immediate competency, complete understanding remains naive and self-potential capped.&lt;/li&gt;&#10;&lt;li&gt;Within the context of formal schooling, the student must manage his time well. This would also eliminate the desire to use shortcuts with AI to fake a course grade.&lt;/li&gt;&#10;&lt;li&gt;Programming connects various other disciplines and deep understanding requires the discipline to be more well-read and investment into fields such as mathematics and physics. (E.g. Donald Knuth&amp;rsquo;s &lt;em&gt;The Art of Programming&lt;/em&gt; famously requires prior understanding in mathematics).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="teaching-kids-coding"&gt;Teaching Kids Coding&lt;a class="anchor" href="#teaching-kids-coding"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Younger students usually come because of their parents&amp;rsquo; interest in developing an extracurricular. Logistics aside, the students are here partly to have fun. Having fun is most commonly reflective of something silly happens or as a result of delayed gratification → they manage to create a complex project.&lt;/p&gt;</description></item><item><title>Values</title><link>https://vhmp.dev/programming/teaching/programming-fundamentals/values/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/programming-fundamentals/values/</guid><description>&lt;p&gt;This page was created with the assistance of &lt;a href="https:openai.com/index/gpt-5-6/"&gt;GPT-5.6 Sol&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="values"&gt;Values&lt;a class="anchor" href="#values"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This is the first programming concept that student learns. The prerequisites are omitted. Any difficulty in understanding would come from a lack of vocabulary due to age or the lack of engagement of innate intuition.&lt;/p&gt;&#10;&lt;h3 id="why-values-are-the-first-thing-you-understand"&gt;Why Values Are the First Thing You Understand&lt;a class="anchor" href="#why-values-are-the-first-thing-you-understand"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;There is no way to directly represent what a value is in any programming language. One might say that in programming language X, I can make a variable that is assigned a value. While that is functionally accurate, a value is more so an idea of the kind of information a computer can store, pass around, choose, change, remove, etc.&lt;/p&gt;</description></item><item><title>Zettelkasten</title><link>https://vhmp.dev/productivity/zettelkasten/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/productivity/zettelkasten/</guid><description>&lt;h2 id="zettelkasten"&gt;Zettelkasten&lt;a class="anchor" href="#zettelkasten"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This is a standardized way of note-taking where information come from readings and fleeting ideas, which are then organized and developed in permanence, building a critical mass. When put into work, the ideas are further distilled into projects which are writings meant to be published and scrutinized. This is more flexible than elementary systems of (1) taking everything into permanence, (2) the lack of a system thereof where ideas are unprocessed, and (3) notes inefficiently distributed into projects that are archived and disjointed from the knowledge frame at a whole. It is more efficient than that of an infinite canvas of mind-maps because it can be indexed and more easily converted into writing; mind-maps in this format is still a powerful format of fleeting notes that should be deleted when processed.&lt;/p&gt;</description></item><item><title>Data Types</title><link>https://vhmp.dev/programming/teaching/programming-fundamentals/data-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/programming-fundamentals/data-types/</guid><description>&lt;p&gt;This page was created with the assistance of &lt;a href="https://openai.com/index/gpt-5-6/"&gt;GPT-5.6 Sol&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="data-types"&gt;Data Types&lt;a class="anchor" href="#data-types"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;After learning &lt;a href="https://vhmp.dev/programming/teaching/programming-fundamentals/values/"&gt;values&lt;/a&gt; are, it&amp;rsquo;s likely that you have already &lt;a href="https://vhmp.dev/programming/teaching/programming-fundamentals/#what-about-the-first-programming-language"&gt;chosen a programming language&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Most general-purpose programming languages share a small set of common basic data types.&lt;/p&gt;&#10;&lt;blockquote class='book-hint note'&gt;&#10;&lt;p&gt;&lt;strong&gt;General-Purpose&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;If you choose a programming language that&amp;rsquo;s attractive to beginners, they are most definitely &lt;code&gt;general-purpose&lt;/code&gt;.&#10;Domain-specific language (DSL) is another type of programming language. These languages cannot build any type of software (yes, even JavaScript, a general-purpose language can build an operating system that&amp;rsquo;s extremely inefficient).&lt;/p&gt;</description></item><item><title>Variables</title><link>https://vhmp.dev/programming/teaching/programming-fundamentals/variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/programming-fundamentals/variables/</guid><description>&lt;h2 id="variables"&gt;Variables&lt;a class="anchor" href="#variables"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Think of variables as a tracker of values. Typically, we say that we &lt;code&gt;create&lt;/code&gt; a variable and we &lt;code&gt;assign&lt;/code&gt; a value to that variable. We also often can say that we &lt;code&gt;intialize&lt;/code&gt; a variable with a &lt;code&gt;value&lt;/code&gt; if we want to be specific and say that memory is allocated to a variable and it will automatically keep track of a specific &lt;code&gt;value&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;To use a variable, you have to make sure it is declared (and most likely defined in the same process).&lt;/p&gt;</description></item><item><title>Namespaces</title><link>https://vhmp.dev/programming/teaching/programming-fundamentals/namespaces/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/programming-fundamentals/namespaces/</guid><description>&lt;h2 id="namespaces"&gt;Namespaces&lt;a class="anchor" href="#namespaces"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class='book-hint warning'&gt;&#10;&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This is a more complex topic that can be skipped over for the first time you learn a programming language. It becomes important if you&amp;rsquo;re learning the historical trend of how unmanaged languages are designed which includes especially C, C++, Rust&amp;hellip;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Namespaces prevent naming conflict and they categorize different and names (synonymously labels, or &lt;code&gt;identifiers&lt;/code&gt;).&lt;/p&gt;&#10;&lt;p&gt;We generalize &lt;a href="https://vhmp.dev/programming/teaching/programming-fundamentals/variables/"&gt;variables&lt;/a&gt; to introduce the term &lt;code&gt;identifiers&lt;/code&gt;. A variable is a type of identifier. An identifier syntactic form of a name of a code element like function, variables, classes&amp;hellip; In C++ variables without a specified &lt;code&gt;namespace&lt;/code&gt; is inside the &lt;code&gt;global namespace&lt;/code&gt;. Standard C does use the term &amp;ldquo;namespace&amp;rdquo; but it is a different meaning than C++; &lt;code&gt;namespace&lt;/code&gt; in C is just a categorization of identifier while &lt;code&gt;C++ namespaces&lt;/code&gt; can group any identifiers together in a way that a programmer define instead of as mechanic of the compiler.&lt;/p&gt;</description></item><item><title>Scope</title><link>https://vhmp.dev/programming/teaching/programming-fundamentals/scope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/programming-fundamentals/scope/</guid><description>&lt;p&gt;Different from &lt;a href="https://vhmp.dev/programming/teaching/programming-fundamentals/namespaces/"&gt;namespaces&lt;/a&gt;, scope rules the declarations the computer can look up at a particular point in the translation unit. Scope does not have anything to do with access control which can deny the usage of a declaration if it&amp;rsquo;s for example &lt;code&gt;private&lt;/code&gt; or &lt;code&gt;protected&lt;/code&gt; in programming languages that you can set access control.&lt;/p&gt;&#10;&lt;blockquote class='book-hint note'&gt;&#10;&lt;p&gt;&lt;strong&gt;Declarations&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;A declaration introduces names (which include identifiers or non-identifiers) into a namespace (an existing classification or &lt;code&gt;arbitrary&lt;/code&gt; grouping defined by a programmer).&lt;/p&gt;</description></item><item><title>Stack (WIP)</title><link>https://vhmp.dev/programming/teaching/replit-cpp/stack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/replit-cpp/stack/</guid><description>&lt;h2 id="what-is-a-stack"&gt;What is a Stack?&lt;a class="anchor" href="#what-is-a-stack"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Stack is an abstract data type that collects data.&#10;The basic operation contract for this project details: O(1) for push, pop, peek.&#10;The student will decide the backing data structure on his own. Possible options are: singly linked list, dynamic array.&lt;/p&gt;&#10;&lt;blockquote class='book-hint tip'&gt;&#10;&lt;p&gt;&lt;strong&gt;What kind of Stack?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;In this project, we&amp;rsquo;re making a Stack abstract data type that stores only integers.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="anchor" href="#prerequisites"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The student has to know how to write a class that will own a data structure that deals with allocation on the free store or heap. They should obviously know pointers and follow the rule of three. If they wish to implement the move assignment operator or the move constructor then that would be fulfill the move of 5 and make memory more efficient.&lt;/p&gt;</description></item><item><title>TheCoderSchool</title><link>https://vhmp.dev/programming/teaching/syllabi/tcs-syllabus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vhmp.dev/programming/teaching/syllabi/tcs-syllabus/</guid><description>&lt;h2 id="intro"&gt;Intro&lt;a class="anchor" href="#intro"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;This syllabus was created with the assistance of &lt;a href="https://openai.com/index/gpt-5-6/"&gt;OpenAI GPT-5.6 Sol&lt;/a&gt;. This is not an official syllabus of the franchised TheCoderSchool location in Irvine. It is an informal guide showing students and parents what working with &lt;strong&gt;Coach Huy&lt;/strong&gt; as a coding coach may look like.&lt;/p&gt;&#10;&lt;p&gt;As part of the TheCoderSchool experience, students learn coding while working toward a project of their choosing. Because of that flexibility, Coach Huy uses this syllabus as a loose structure for keeping sessions connected and making sure important programming concepts are reviewed and practiced.&lt;/p&gt;</description></item></channel></rss>