<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Breadth courses in computer science</title>
	<atom:link href="http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=breadth-courses-in-computer-science</link>
	<description>You don&#039;t understand something until you&#039;ve taught a teenager to teach a computer to do it.</description>
	<lastBuildDate>Wed, 25 Jan 2012 03:01:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Ben Chun</title>
		<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/comment-page-1/#comment-123</link>
		<dc:creator>Ben Chun</dc:creator>
		<pubDate>Mon, 17 May 2010 02:50:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.helenemartin.com/?p=285#comment-123</guid>
		<description>Great post. It sums up a lot of things I struggle with as well. Two quick ideas: 

1. Including entrepreneurship projects in a class like this could be appropriate. It&#039;s not computer science but than again great software doesn&#039;t pay for itself. There has to be some business model and there are roles in that business besides being a programmer. Everyone in an organization (especially programmers!) benefits from a deeper understanding of this reality. I also think there&#039;s huge relevance in studying various licensing schemes, creative commons, GPL, etc. and in looking at case studies of software businesses. Chances are, no one else in their high school experience is going to be able to teach them about this as well as you.

2. Your question: &quot;When it comes to assignment ideas, a lot of what the textbooks cited above do are a mix of web publishing and “web scavenger hunts.” I always feel uncomfortable with these types of tasks — are they computer science?&quot; prompted another thought. The answer is no. But writing HTML could be a starting point for students to see how an input affects an output -- the browser is an interpreter, and it follows a set of rules to parse the HTML and CSS and display results. I&#039;ve found that because these languages are declarative, students have an easier time grasping the initial concepts, and then I can use that understanding to build up to more sophisticated concepts like the CSS selectors, etc. After a while, it can start to feel pretty computer sciencey, even though we aren&#039;t implementing any algorithms.</description>
		<content:encoded><![CDATA[<p>Great post. It sums up a lot of things I struggle with as well. Two quick ideas: </p>
<p>1. Including entrepreneurship projects in a class like this could be appropriate. It&#8217;s not computer science but than again great software doesn&#8217;t pay for itself. There has to be some business model and there are roles in that business besides being a programmer. Everyone in an organization (especially programmers!) benefits from a deeper understanding of this reality. I also think there&#8217;s huge relevance in studying various licensing schemes, creative commons, GPL, etc. and in looking at case studies of software businesses. Chances are, no one else in their high school experience is going to be able to teach them about this as well as you.</p>
<p>2. Your question: &#8220;When it comes to assignment ideas, a lot of what the textbooks cited above do are a mix of web publishing and “web scavenger hunts.” I always feel uncomfortable with these types of tasks — are they computer science?&#8221; prompted another thought. The answer is no. But writing HTML could be a starting point for students to see how an input affects an output &#8212; the browser is an interpreter, and it follows a set of rules to parse the HTML and CSS and display results. I&#8217;ve found that because these languages are declarative, students have an easier time grasping the initial concepts, and then I can use that understanding to build up to more sophisticated concepts like the CSS selectors, etc. After a while, it can start to feel pretty computer sciencey, even though we aren&#8217;t implementing any algorithms.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Everything Is Changing in CS Education</title>
		<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/comment-page-1/#comment-79</link>
		<dc:creator>Everything Is Changing in CS Education</dc:creator>
		<pubDate>Fri, 02 Apr 2010 21:24:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.helenemartin.com/?p=285#comment-79</guid>
		<description>[...] here) which is more of a breath course in computer science. Hélène Martin has her own take on breath courses in computer science on her blog. It really deserves a close read as well. For her it is a question, to some degree, of [...]</description>
		<content:encoded><![CDATA[<p>[...] here) which is more of a breath course in computer science. Hélène Martin has her own take on breath courses in computer science on her blog. It really deserves a close read as well. For her it is a question, to some degree, of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hélène Martin</title>
		<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/comment-page-1/#comment-78</link>
		<dc:creator>Hélène Martin</dc:creator>
		<pubDate>Fri, 02 Apr 2010 13:07:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.helenemartin.com/?p=285#comment-78</guid>
		<description>Maybe we can respectfully disagree on some things, Michelle. =)

I agree that learning, for example, search and sort concepts with non-programming examples and exercises has tremendous value and I have absolutely no doubt that your students understand it.  I just think it takes a very zen student to accept that these ideas have any value without implementation.  Does that make sense?  Humans are massively parallel so we don&#039;t do search and sort (among many other things) the way computers do so we can&#039;t argue that it&#039;s helpful in that regard.  Heck, computers may not do search and sort the way they currently do in a few years.  So in that sense, presenting search and sort divorced from implementation is not only extremely abstract but also a form of emphasizing a particular tool.  Our search and sort algorithms are tools appropriate for carrying out a class of tasks on current computing architecture.

I&#039;m not entirely sure I agree that programming is not transferable.  If the &#039;big ideas&#039; are presented with enough generality initially, I don&#039;t think switching languages needs to be too painful, as long as it&#039;s done once students have enough background in one.  What I would worry about is doing something like two weeks of Scheme, three weeks of assembly and two weeks of Python with students who have no existing fluency.  I think that&#039;s extremely dangerous because, as you say, students have no time to internalize language idiosyncrasies and can&#039;t transfer any knowledge from one to the other.

I agree 100% that students come in with programming being a foreign language.  How could it not be?  The conclusion I draw from that is that it&#039;s important to treat it as such and to be very deliberate about isolating, explaining and practicing every concept from assignment to iteration to parameterization -- even if it seems &quot;obvious&quot; to we experts.  None of it is obvious and moreover it&#039;s beautiful and useful and motivating.  Of course, I recognize that this goes directly against constructivism and open-ended teaching and other things that I know you value -- our disagreement may be somewhat more fundamental!  I guess the way I see it, it&#039;s possible to learn French by picking up phrases on an as-needed basis and doing a lot of reading but it&#039;s probably faster and more gratifying to spend an hour a day with a native speaker who can logically sequence topics and force conversation.  

I&#039;d like to hear a little bit more about your vision for a breadth course.  The examples you mentioned are all reasoning about computation and I would argue that&#039;s actually pretty narrow -- programming without the formalism of a language (which is not a problem).  When I say breadth, I mean a month of AI, a month of formal logic, a month of web publishing, a month of ethics etc.

And again, just to be clear, I&#039;m just reporting what I&#039;ve seen in my classroom which certainly have to do with a lot of things including my pre-existing biases (though I would argue I was most excited and dedicated to Exploring).  I think it&#039;s pretty telling that I have over 100 students signed up for programming next year and something like 20 for Exploring Computer Science!  One experiment worked very well and the other was no complete failure, but not as successful.</description>
		<content:encoded><![CDATA[<p>Maybe we can respectfully disagree on some things, Michelle. =)</p>
<p>I agree that learning, for example, search and sort concepts with non-programming examples and exercises has tremendous value and I have absolutely no doubt that your students understand it.  I just think it takes a very zen student to accept that these ideas have any value without implementation.  Does that make sense?  Humans are massively parallel so we don&#8217;t do search and sort (among many other things) the way computers do so we can&#8217;t argue that it&#8217;s helpful in that regard.  Heck, computers may not do search and sort the way they currently do in a few years.  So in that sense, presenting search and sort divorced from implementation is not only extremely abstract but also a form of emphasizing a particular tool.  Our search and sort algorithms are tools appropriate for carrying out a class of tasks on current computing architecture.</p>
<p>I&#8217;m not entirely sure I agree that programming is not transferable.  If the &#8216;big ideas&#8217; are presented with enough generality initially, I don&#8217;t think switching languages needs to be too painful, as long as it&#8217;s done once students have enough background in one.  What I would worry about is doing something like two weeks of Scheme, three weeks of assembly and two weeks of Python with students who have no existing fluency.  I think that&#8217;s extremely dangerous because, as you say, students have no time to internalize language idiosyncrasies and can&#8217;t transfer any knowledge from one to the other.</p>
<p>I agree 100% that students come in with programming being a foreign language.  How could it not be?  The conclusion I draw from that is that it&#8217;s important to treat it as such and to be very deliberate about isolating, explaining and practicing every concept from assignment to iteration to parameterization &#8212; even if it seems &#8220;obvious&#8221; to we experts.  None of it is obvious and moreover it&#8217;s beautiful and useful and motivating.  Of course, I recognize that this goes directly against constructivism and open-ended teaching and other things that I know you value &#8212; our disagreement may be somewhat more fundamental!  I guess the way I see it, it&#8217;s possible to learn French by picking up phrases on an as-needed basis and doing a lot of reading but it&#8217;s probably faster and more gratifying to spend an hour a day with a native speaker who can logically sequence topics and force conversation.  </p>
<p>I&#8217;d like to hear a little bit more about your vision for a breadth course.  The examples you mentioned are all reasoning about computation and I would argue that&#8217;s actually pretty narrow &#8212; programming without the formalism of a language (which is not a problem).  When I say breadth, I mean a month of AI, a month of formal logic, a month of web publishing, a month of ethics etc.</p>
<p>And again, just to be clear, I&#8217;m just reporting what I&#8217;ve seen in my classroom which certainly have to do with a lot of things including my pre-existing biases (though I would argue I was most excited and dedicated to Exploring).  I think it&#8217;s pretty telling that I have over 100 students signed up for programming next year and something like 20 for Exploring Computer Science!  One experiment worked very well and the other was no complete failure, but not as successful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wicked Teacher of the West</title>
		<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/comment-page-1/#comment-77</link>
		<dc:creator>Wicked Teacher of the West</dc:creator>
		<pubDate>Fri, 02 Apr 2010 05:29:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.helenemartin.com/?p=285#comment-77</guid>
		<description>I&#039;m a big fan of breadth over depth and I don&#039;t think it has to dumb down the class.

Programming is the language of CS, but because it is a foreign language to introductory students, they aren&#039;t fluent in it. Thus, they can&#039;t really tackle interesting, deep, computational thinking problems while programming. My students understand searching and sorting just fine, thank you, through hands-on activities, describing algorithms in English (paragraphs, lists, flowcharts, their choice). I grade them on things like the quality of the thought they demonstrated in the writing - which is far more complete than any program they could write. I put questions on the exam like, &quot;given the two sorting algorithms described [in English] below, which is more efficient and why? Defend your answer.&quot; No code required, but a sophisticated understanding of the differences in efficiency - say, space vs. time - might be. 

I want my students to have an understanding of what kinds of problems computers solve well, how to think about problems and solutions in order to get a computer to solve them, and what kinds of problems computers don&#039;t solve well. They&#039;ll understand something like P vs NP way better through discussion and hands-on activities than they ever will by writing programs. 

Finally, even if we pretend that every student could succeed at programming if they just tried it with a good teacher, programming is not a transferable skill. Knowing how to write a search algorithm in Java doesn&#039;t mean you can write a search-and-replace macro in Applescript. Knowing how to code an animation in Python doesn&#039;t mean you can make an Open GL visualization in C. Either of those transfers requires hours of time, mostly in learning a new syntax and language requirements. Might learning programming help them to learn more programming later? Sure, but how many of them will learn more programming later, vs. ask someone else to program something for them? Understanding how to ask for what they want seems like a better skill.

I agree with you that there&#039;s no inherent reason for students to know any one particular piece of information, like lossy vs. lossless compression. The important thing is for them to THINK about the problems in computer science - that will prepare them to think about future problems they encounter, or even to anticipate those problems. (&quot;After I got my new 300 megapixel camera, I ran out of space on my hard drive. It&#039;s the weirdest thing! Stupid computers.&quot;)</description>
		<content:encoded><![CDATA[<p>I&#8217;m a big fan of breadth over depth and I don&#8217;t think it has to dumb down the class.</p>
<p>Programming is the language of CS, but because it is a foreign language to introductory students, they aren&#8217;t fluent in it. Thus, they can&#8217;t really tackle interesting, deep, computational thinking problems while programming. My students understand searching and sorting just fine, thank you, through hands-on activities, describing algorithms in English (paragraphs, lists, flowcharts, their choice). I grade them on things like the quality of the thought they demonstrated in the writing &#8211; which is far more complete than any program they could write. I put questions on the exam like, &#8220;given the two sorting algorithms described [in English] below, which is more efficient and why? Defend your answer.&#8221; No code required, but a sophisticated understanding of the differences in efficiency &#8211; say, space vs. time &#8211; might be. </p>
<p>I want my students to have an understanding of what kinds of problems computers solve well, how to think about problems and solutions in order to get a computer to solve them, and what kinds of problems computers don&#8217;t solve well. They&#8217;ll understand something like P vs NP way better through discussion and hands-on activities than they ever will by writing programs. </p>
<p>Finally, even if we pretend that every student could succeed at programming if they just tried it with a good teacher, programming is not a transferable skill. Knowing how to write a search algorithm in Java doesn&#8217;t mean you can write a search-and-replace macro in Applescript. Knowing how to code an animation in Python doesn&#8217;t mean you can make an Open GL visualization in C. Either of those transfers requires hours of time, mostly in learning a new syntax and language requirements. Might learning programming help them to learn more programming later? Sure, but how many of them will learn more programming later, vs. ask someone else to program something for them? Understanding how to ask for what they want seems like a better skill.</p>
<p>I agree with you that there&#8217;s no inherent reason for students to know any one particular piece of information, like lossy vs. lossless compression. The important thing is for them to THINK about the problems in computer science &#8211; that will prepare them to think about future problems they encounter, or even to anticipate those problems. (&#8220;After I got my new 300 megapixel camera, I ran out of space on my hard drive. It&#8217;s the weirdest thing! Stupid computers.&#8221;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carl</title>
		<link>http://www.helenemartin.com/2010-04-breadth-courses-in-computer-science/comment-page-1/#comment-75</link>
		<dc:creator>Carl</dc:creator>
		<pubDate>Fri, 02 Apr 2010 03:16:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.helenemartin.com/?p=285#comment-75</guid>
		<description>I enjoyed reading about your struggles with breadth and depth, something I have come to struggle with also. 

Because I am the only computer lab teacher at my middle school, I teach many things, keyboarding, (which should have been done in elementary), introduction to MS Office, but I do have students build up web pages, and we had nine weeks of Scratch this year. I built up my course in Moodle so it will be easy for me to arrange topics and projects for my students. Unfortunately, most of my students generally chose the &quot;light&quot; way out of their final projects, only doing minimally challenging activities.  

So, I have some thinking to do to encourage more in-depth programming. Of course, I would like to work more in line with what high school teachers would like to have happen in an introductory unit. Lots of things to think about.

Carl</description>
		<content:encoded><![CDATA[<p>I enjoyed reading about your struggles with breadth and depth, something I have come to struggle with also. </p>
<p>Because I am the only computer lab teacher at my middle school, I teach many things, keyboarding, (which should have been done in elementary), introduction to MS Office, but I do have students build up web pages, and we had nine weeks of Scratch this year. I built up my course in Moodle so it will be easy for me to arrange topics and projects for my students. Unfortunately, most of my students generally chose the &#8220;light&#8221; way out of their final projects, only doing minimally challenging activities.  </p>
<p>So, I have some thinking to do to encourage more in-depth programming. Of course, I would like to work more in line with what high school teachers would like to have happen in an introductory unit. Lots of things to think about.</p>
<p>Carl</p>
]]></content:encoded>
	</item>
</channel>
</rss>

