<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: No no, I said &#8216;critical examination&#8217;</title>
	<atom:link href="http://blog.tmorris.net/no-no-i-said-critical-examination/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tmorris.net/no-no-i-said-critical-examination/</link>
	<description>The weblog of Tony Morris</description>
	<pubDate>Tue, 06 Jan 2009 11:04:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: John "Z-Bo" Zabroski</title>
		<link>http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1754</link>
		<dc:creator>John "Z-Bo" Zabroski</dc:creator>
		<pubDate>Wed, 12 Dec 2007 04:41:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1754</guid>
		<description>"State of delusion" is a &lt;em&gt;little&lt;/em&gt; harsh.  People underestimate nuances.  Everyone acknowledges poor habits are easy to develop, and good habits are hard to maintain.  However, when programming, good habits do not map perfectly to other languages.

Good habits programming in C are poor habits programming in Java.  A linked list in C might use a null to indicate the end of the list, whereas a linked list in Java might define an List interface and define Cons and Empty as concrete List instances.  Doing it the right way in Java will prevent NullPointerException bugs and eliminate Dangling Composite bug patterns.

I've heard college professors tell me they hate teaching Java and wished they could teach C, and the biggest problem isn't their hatred of Java but their unwillingness to learn the Java way to do things.  Thus, you end up with Computer Science graduates who take Data Structures &#38;#38; Algorithms courses in Java where the code smells everywhere due to a Dangling Composite bug pattern.  The unfortunate thing is the professors advocate this form of programming, and they tell me "I know how to program, so it doesn't really matter what language I teach in, but I still hate teaching it in Java!"  Right now, there are many AP Computer Science teachers in the United States who used to teach C++ and are now teaching Java.  Many of these teachers are probably unwittingly making the same mistakes.

Again, the real problem is people do not realize how dramatic subtle nuances are.  The greatest offender of this is the "If you know C++, I can teach you Java!" books.  All too often, these books focus on superficial understanding of the syntax of the new language and not enough focus on the deeper meaning.  As a result, you have somewhat experienced programmers who understand basic concepts like recursion, stacks and heaps, but not enough experience to realize &lt;em&gt;it's what you want to say that matters most&lt;/em&gt;.  How you say something is a matter of realizing a sledgehammer isn't necessary when a few gentle taps of a hammer will do.

Nicole McNeil is a psychologist at Notre Dame University.  She has extensively studied the ways children learn math.  One thing she points out is that students often misinterpret the equals symbol as "calculate the total".  Thus, when a student sees 4 + ? = 11, the answer 15 might be given.  As a TA for Calculus 1 and 2 for three years at college, I saw similar problems in weaker students.  They would consistently use u-substitution method and avoid integration by parts.  My belief is that they had a poor understanding of the concept of substitution and principles of term rewriting systems.  Substitution is a threshold concept in entry-level calculus: Once students truly understand it, there abilities to solve problems increase dramatically.

None of my business, but did you buy an XO?  Several of my friends bought one for a niece or nephew.</description>
		<content:encoded><![CDATA[<p>&#8220;State of delusion&#8221; is a <em>little</em> harsh.  People underestimate nuances.  Everyone acknowledges poor habits are easy to develop, and good habits are hard to maintain.  However, when programming, good habits do not map perfectly to other languages.</p>
<p>Good habits programming in C are poor habits programming in Java.  A linked list in C might use a null to indicate the end of the list, whereas a linked list in Java might define an List interface and define Cons and Empty as concrete List instances.  Doing it the right way in Java will prevent NullPointerException bugs and eliminate Dangling Composite bug patterns.</p>
<p>I&#8217;ve heard college professors tell me they hate teaching Java and wished they could teach C, and the biggest problem isn&#8217;t their hatred of Java but their unwillingness to learn the Java way to do things.  Thus, you end up with Computer Science graduates who take Data Structures &#38;#38; Algorithms courses in Java where the code smells everywhere due to a Dangling Composite bug pattern.  The unfortunate thing is the professors advocate this form of programming, and they tell me &#8220;I know how to program, so it doesn&#8217;t really matter what language I teach in, but I still hate teaching it in Java!&#8221;  Right now, there are many AP Computer Science teachers in the United States who used to teach C++ and are now teaching Java.  Many of these teachers are probably unwittingly making the same mistakes.</p>
<p>Again, the real problem is people do not realize how dramatic subtle nuances are.  The greatest offender of this is the &#8220;If you know C++, I can teach you Java!&#8221; books.  All too often, these books focus on superficial understanding of the syntax of the new language and not enough focus on the deeper meaning.  As a result, you have somewhat experienced programmers who understand basic concepts like recursion, stacks and heaps, but not enough experience to realize <em>it&#8217;s what you want to say that matters most</em>.  How you say something is a matter of realizing a sledgehammer isn&#8217;t necessary when a few gentle taps of a hammer will do.</p>
<p>Nicole McNeil is a psychologist at Notre Dame University.  She has extensively studied the ways children learn math.  One thing she points out is that students often misinterpret the equals symbol as &#8220;calculate the total&#8221;.  Thus, when a student sees 4 + ? = 11, the answer 15 might be given.  As a TA for Calculus 1 and 2 for three years at college, I saw similar problems in weaker students.  They would consistently use u-substitution method and avoid integration by parts.  My belief is that they had a poor understanding of the concept of substitution and principles of term rewriting systems.  Substitution is a threshold concept in entry-level calculus: Once students truly understand it, there abilities to solve problems increase dramatically.</p>
<p>None of my business, but did you buy an XO?  Several of my friends bought one for a niece or nephew.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1753</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Wed, 12 Dec 2007 01:24:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1753</guid>
		<description>Thanks John for the advice. I really should correct myself and say, "my son is teaching himself using his own initiative." He first started exploring the mathematical properties of small numbers by asking me questions, then pointing out certain observations (for example, he told me that two numbers when added together yields the same result as swapping those numbers and adding them). Of course, I told him this has a name, "that addition is commutative".

I gave him Haskell to explore his own ideas of this nature (without telling him what it was he was doing - he still thinks computers are for games). However, I truly fear for the mental well-being of anyone (including my son) when I observe the behaviour of the general Java community. I truly find it difficult to have a meaningful discussion where there is a disagreement, with someone who is not even arguing their position very well (i.e. even I could do a better job).

It is this "state of delusion" that I wish to shield a vulnerable mind from, for now :)</description>
		<content:encoded><![CDATA[<p>Thanks John for the advice. I really should correct myself and say, &#8220;my son is teaching himself using his own initiative.&#8221; He first started exploring the mathematical properties of small numbers by asking me questions, then pointing out certain observations (for example, he told me that two numbers when added together yields the same result as swapping those numbers and adding them). Of course, I told him this has a name, &#8220;that addition is commutative&#8221;.</p>
<p>I gave him Haskell to explore his own ideas of this nature (without telling him what it was he was doing - he still thinks computers are for games). However, I truly fear for the mental well-being of anyone (including my son) when I observe the behaviour of the general Java community. I truly find it difficult to have a meaningful discussion where there is a disagreement, with someone who is not even arguing their position very well (i.e. even I could do a better job).</p>
<p>It is this &#8220;state of delusion&#8221; that I wish to shield a vulnerable mind from, for now <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John "Z-Bo" Zabroski</title>
		<link>http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1752</link>
		<dc:creator>John "Z-Bo" Zabroski</dc:creator>
		<pubDate>Tue, 11 Dec 2007 09:59:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/no-no-i-said-critical-examination/#comment-1752</guid>
		<description>The basic problem with education is students aren't learning enough &lt;a href="http://www.useit.com/alertbox/computer-skills.html" rel="nofollow"&gt;life-long skills&lt;/a&gt;.  Your 6 year old might end up becoming the next Alan Turing, but first make sure he is building up skills that will become instincts through practice.

Skills like search strategies, avoiding information overload, determining information credibility, troubleshooting, computer-assisted presentation skills, &#38;#38;c. are abilities you have acquired and probably now take for granted.  Information credibility seems to be what you are really concerned about.  The amount of bad information available regarding Java is overwhelming.  Therefore, I submit that you should teach your son how to identify intellectual garbage.

I don't really care if your son learns Java or not.  Personally, I wouldn't teach it to a 6 year old because Java is an ancient technology in today's ever changing world.  In addition, your argument for not teaching Java hinges on the either the behaviorist belief that learning is a result of operant conditioning, or the constructivist belief that learning is active, discovery-based, and knowledge-building.  In either case, teaching a 6 year old Java is an extremely difficult task.  One approach might be &lt;em&gt;Java: An Eventful Approach&lt;/em&gt; by Kim Bruce.  Bruce focuses on event-based programming, objects-first and concurrency instead of traditional line-by-line examples first illustrated in K&#38;#38;R.

A more general, more acceptable idea for me is that 6 year olds should be learning event-based programming instead of traditional line-by-line examples.  It's not about Java vs. Haskell; it's about messaging models and design.  Most approaches to Java continue to teach programming in the K&#38;#38;R style.  However, this is unnecessary.

At some point, make sure your son understands the evolution of good design.  These days, the prominent idea in computer science is to teach examples of good design (patterns) instead of how that good design came about (through a series of refactorings).  By only viewing good design and not evolution toward good design, there is understanding of how to achieve great design.  As my Albanian math professor would always say in a heavy accent, "How do you solve a problem you don't know how to solve?"  Pausing, he would answer lightly, "You go with what you know... you go with what you know."</description>
		<content:encoded><![CDATA[<p>The basic problem with education is students aren&#8217;t learning enough <a href="http://www.useit.com/alertbox/computer-skills.html" onclick="javascript:pageTracker._trackPageview('/outbound/comment/www.useit.com');" rel="nofollow">life-long skills</a>.  Your 6 year old might end up becoming the next Alan Turing, but first make sure he is building up skills that will become instincts through practice.</p>
<p>Skills like search strategies, avoiding information overload, determining information credibility, troubleshooting, computer-assisted presentation skills, &#38;#38;c. are abilities you have acquired and probably now take for granted.  Information credibility seems to be what you are really concerned about.  The amount of bad information available regarding Java is overwhelming.  Therefore, I submit that you should teach your son how to identify intellectual garbage.</p>
<p>I don&#8217;t really care if your son learns Java or not.  Personally, I wouldn&#8217;t teach it to a 6 year old because Java is an ancient technology in today&#8217;s ever changing world.  In addition, your argument for not teaching Java hinges on the either the behaviorist belief that learning is a result of operant conditioning, or the constructivist belief that learning is active, discovery-based, and knowledge-building.  In either case, teaching a 6 year old Java is an extremely difficult task.  One approach might be <em>Java: An Eventful Approach</em> by Kim Bruce.  Bruce focuses on event-based programming, objects-first and concurrency instead of traditional line-by-line examples first illustrated in K&#38;#38;R.</p>
<p>A more general, more acceptable idea for me is that 6 year olds should be learning event-based programming instead of traditional line-by-line examples.  It&#8217;s not about Java vs. Haskell; it&#8217;s about messaging models and design.  Most approaches to Java continue to teach programming in the K&#38;#38;R style.  However, this is unnecessary.</p>
<p>At some point, make sure your son understands the evolution of good design.  These days, the prominent idea in computer science is to teach examples of good design (patterns) instead of how that good design came about (through a series of refactorings).  By only viewing good design and not evolution toward good design, there is understanding of how to achieve great design.  As my Albanian math professor would always say in a heavy accent, &#8220;How do you solve a problem you don&#8217;t know how to solve?&#8221;  Pausing, he would answer lightly, &#8220;You go with what you know&#8230; you go with what you know.&#8221;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
