<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I am ... unhindered by talent &#187; software development</title>
	<atom:link href="http://UnhinderedByTalent.com/Phi/archives/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://UnhinderedByTalent.com/Phi</link>
	<description>Not all battles are fought with a sword</description>
	<lastBuildDate>Thu, 17 May 2012 02:57:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Looking for (text)book recommendations: OS, Networking, Sysadmin; Fuzzy logic; and Refactoring</title>
		<link>http://UnhinderedByTalent.com/Phi/archives/2009/06/20/looking-for-textbook-recommendations-os-networking-sysadmin-fuzzy-logic-and-refactoring/</link>
		<comments>http://UnhinderedByTalent.com/Phi/archives/2009/06/20/looking-for-textbook-recommendations-os-networking-sysadmin-fuzzy-logic-and-refactoring/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 00:03:11 +0000</pubDate>
		<dc:creator>Phi</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[assembly language]]></category>
		<category><![CDATA[computing systems]]></category>
		<category><![CDATA[core courses]]></category>
		<category><![CDATA[fuzzy logic]]></category>
		<category><![CDATA[fuzzy sets]]></category>
		<category><![CDATA[models of computing systems]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[students]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[teaching]]></category>
		<category><![CDATA[textbook]]></category>
		<category><![CDATA[textbook orders]]></category>
		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://UnhinderedByTalent.com/Phi/?p=1012</guid>
		<description><![CDATA[Some deluded people believe that textbook orders for Fall Semester were due a month ago, but I&#8217;m never, ever close to on-time on these things, and am just now getting to it in a serious way. I&#8217;m teaching three courses &#8230; <a href="http://UnhinderedByTalent.com/Phi/archives/2009/06/20/looking-for-textbook-recommendations-os-networking-sysadmin-fuzzy-logic-and-refactoring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/nicmcphee/97150393/"><img alt="Foundations of Genetic Programming by Langdon and Poli" src="http://farm1.static.flickr.com/22/97150393_42a89de26c_m.jpg" title="Langdon and Poli" width="240" height="157" align="right" hspace='10' /></a><br />
Some deluded people believe that textbook orders for Fall Semester were due a month ago, but I&#8217;m never, ever close to on-time on these things, and am just now getting to it in a serious way.  I&#8217;m teaching three courses in the fall:</p>
<ul>
<li>Models of Computing Systems</li>
<li>Fuzzy logic and fuzzy sets</li>
<li>Refactoring</li>
</ul>
<p>I&#8217;ve taught Refactoring several times and have a pretty good handle on that.  Fuzzy Logic I&#8217;ve taught once before and am pretty comfortable with.  The Systems course, however, is one I&#8217;ve never taught before and am still struggling with on a number of levels, including the textbook.</p>
<p>Any suggestions and ideas on any of these would most certainly be appreciated.  I&#8217;ll say a little more about each course below the fold for those who want all the gory details.</p>
<p><span id="more-1012"></span></p>
<p><strong>Models of Computing Systems</strong> This is one of our three core courses (the others being Algorithms and Computability, and Software Design and Development), is a 5 credit course (4 hours of lecture and a 2 hour lab each week), and is intended to expose students to computing systems using a layer model that includes as major topics</p>
<ul>
<li>Assembly language and a quickie overview of basic architecture</li>
<li>Operating systems basics, with an emphasis on processes, process management, and threading/concurrancey</li>
<li>Computer networks</li>
<li>System administration, including the installation, configuration, and management of common tools like web servers</li>
</ul>
<p>I&#8217;m planning to use x86 assembly for the first item, and the sysadmin work will happen on Linux boxes.  I&#8217;m planning (still in a vague way at the moment) to try to use computer security issues to motivate/illustrate a number of key concepts in this course.  Things like file system and disk structure can be pretty abstract, for example, but I&#8217;m thinking that doing a lab where we see how those decisions lead to lots of &#8220;erased&#8221; data being recoverable might make it seem more &#8220;real&#8221; and significant.</p>
<p>I realize that no book is going to cover all these things, and on-line resources plus lecture can provide the necessary background for several of these.  This course has typically using a &#8220;standard&#8221; OS book like <a href="http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0471694665/ref=sr_1_3?ie=UTF8&#038;s=books&#038;qid=1245540247&#038;sr=1-3">Silberschatz, et al</a>, but this is large and expensive and really only addresses one of the four topics.  If anyone knows of a good book that would touch meaningfully on more than one of these areas, though, that would be really helpful.</p>
<p><strong>Fuzzy logic</strong> This is a 2 credit elective course, and should provide a reasonable background in the theoretical definitions and concepts in fuzzy logic, as well as giving the students a chance to apply those ideas.  (My current plan is to write robot race car drivers using fuzzy notions of concepts like fast, slow, near, and straight.)</p>
<p>I&#8217;m probably more interested in solid coverage of the theoretical material than the applications side.  The students will benefit from a good introduction and reference on the mathematical material, and I can probably handle the motivation and application side in class pretty well.</p>
<p>When I last taught this (Spring, 2006) I used <a href="http://www.amazon.com/Introduction-Fuzzy-Logic-Practical-Applications/dp/0387948074/ref=sr_1_2?ie=UTF8&#038;s=books&#038;qid=1245539204&#038;sr=1-2"><em>An Introduction to Fuzzy Logic for Practical Applications</em> by Kazuo Tanaka, translated by T. Niimura</a>.  That book actually worked quite decently.  There were some predictable translation issues, but nothing that we couldn&#8217;t manage.</p>
<p><strong>Refactoring</strong> This is also a 2 credit elective course.  I&#8217;ve taught this course several times, and I&#8217;m likely to again use a combination of <a href="http://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Technology/dp/0201485672/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1245541541&#038;sr=1-1">Fowler&#8217;s <em>Refactoring</em></a> and <a href="http://www.amazon.com/Refactoring-Patterns-Addison-Wesley-Signature-Kerievsky/dp/0321213351/ref=sr_1_2?ie=UTF8&#038;s=books&#038;qid=1245541541&#038;sr=1-2">Kerievsky&#8217;s <em>Refactoring to Patterns</em></a>.  Fowler is the &#8220;standard&#8221; in the field; the first five chapters of his book are absolutely classic material on the realities of software development and should be read by pretty much anyone who aspires to write good software.  Kerievsky&#8217;s book builds on Fowler and does a really nice job of demystifying design patterns, converting them from magical insights codified by geniuses into things you could discover on your own through careful refactoring.  When I last taught it I think I had Kerievsky as the required text and Fowler as the optional book.  Given that together they still add up to less than $100, I&#8217;m tempted to require them both.  We have lots of copies of Fowler in the lab, though, so I might just require Kerievsky again.  Ideas/thoughts on this would definitely be appreciated.</p>
<p>One of the problems we&#8217;ve run into in this course in the past has been attempting refactorings on code with limited automated testing.  Without good tests you lose your courage to refactor mercilessly, or you have false courage and end up breaking things without realizing it until (sometimes much) later.  With only 2 credits to work with, however, you don&#8217;t want to spend two weeks writing unit tests for a system before you can start refactoring it, especially when you don&#8217;t really understand what the units are and what they&#8217;re supposed to be doing.  This time I&#8217;m planning to use BDD tools like Cucumber, RSpec, and JBehave this time to more cheaply write high level acceptance/functional tests that exercise the key parts of the system in meaningful ways without getting bogged down in a bunch of poorly understood unit tests.  We&#8217;ll see how that goes.</p>
<p><strong>Wrap-up</strong></p>
<p>So, there they be.  Any thoughts, ideas, or suggestions would be greatly appreciated, especially on the Models of Computing Systems course.</p>
]]></content:encoded>
			<wfw:commentRss>http://UnhinderedByTalent.com/Phi/archives/2009/06/20/looking-for-textbook-recommendations-os-networking-sysadmin-fuzzy-logic-and-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Foot in what? ketchup.&#8221;</title>
		<link>http://UnhinderedByTalent.com/Phi/archives/2008/01/16/foot-in-what-ketchup/</link>
		<comments>http://UnhinderedByTalent.com/Phi/archives/2008/01/16/foot-in-what-ketchup/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 10:25:04 +0000</pubDate>
		<dc:creator>Phi</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Mildly amusing]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[neural networks]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[sad]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://UnhinderedByTalent.com/Phi/archives/2008/01/16/foot-in-what-ketchup/</guid>
		<description><![CDATA[A tale of mismanagement, overly enthusiastic love of buzz words and the Next Big Thing, and hiring good people and making them do stupid things. The pig go. Go is to the fountain. The pig put foot. Grunt. Foot in &#8230; <a href="http://UnhinderedByTalent.com/Phi/archives/2008/01/16/foot-in-what-ketchup/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/nicmcphee/469616761/" title="Working the problem by Unhindered by Talent, on Flickr"><img src="http://farm1.static.flickr.com/230/469616761_1b5c0876b7.jpg" width="450" alt="Working the problem" /></a></p>
<p><a href="http://thedailywtf.com/Articles/Classic-WTF-No-Quack.aspx">A tale of mismanagement, overly enthusiastic love of buzz words and the Next Big Thing, and hiring good people and making them do stupid things.</a></p>
<blockquote><p>
The pig go. Go is to the fountain. The pig put foot. Grunt. Foot in what? ketchup. The dove fly. Fly is in sky. The dove drop something. The something on the pig. The pig  disgusting. The pig rattle. Rattle with dove. The dove angry. The pig leave. The dove produce. Produce is chicken wing. With wing bark. No Quack.
</p></blockquote>
<p>Thanks to MJ for the pointer.  As he said &#8220;makes one weep for our kind&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://UnhinderedByTalent.com/Phi/archives/2008/01/16/foot-in-what-ketchup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A wonderfully different way to thing about computing</title>
		<link>http://UnhinderedByTalent.com/Phi/archives/2007/11/19/a-wonderfully-different-way-to-thing-about-computing/</link>
		<comments>http://UnhinderedByTalent.com/Phi/archives/2007/11/19/a-wonderfully-different-way-to-thing-about-computing/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 20:45:31 +0000</pubDate>
		<dc:creator>Phi</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[One Laptop Per Child]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://UnhinderedByTalent.com/Phi/archives/2007/11/19/a-wonderfully-different-way-to-thing-about-computing/</guid>
		<description><![CDATA[One of my constant struggles as an educator in computer science has been helping students see a bigger picture, look past the mundanities of yesterday&#8217;s &#8220;help wanted&#8221; page, and see what the world could be rather than what it has &#8230; <a href="http://UnhinderedByTalent.com/Phi/archives/2007/11/19/a-wonderfully-different-way-to-thing-about-computing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://laptopgiving.org/"><img src="http://laptopgiving.org/g1g1/logo_v2.gif" alt="One Laptop Per Child logo" align='right' hspace='10' vspace='10' /></a><br />
One of my constant struggles as an educator in computer science has been helping students see a bigger picture, look past the mundanities of yesterday&#8217;s &#8220;help wanted&#8221; page, and see what the world <em>could be</em> rather than what it <em>has been</em>.</p>
<p>One way this has often played out has been in debates over programming languages and development tools.  Students are (quite legitimately) concerned with their near term employment prospects, and so they tend to focus what they&#8217;ve heard of, and what they see in the job web sites.  Unfortunately that is almost always an exercise in looking backwards in time.  When I started in 1991, the problem was getting students out of Pascal and C and start thinking about objects.  Now we&#8217;re working to add things like Ruby and Python to our Java-heavy toolkit.  Constant throughout has been the difficult task of getting them to take (semi-) functional languages (Scheme, Haskell) seriously or, in fact, any language doesn&#8217;t have a &#8220;For dummies&#8221; book at their local mega-bookshop.</p>
<p>I need to be fair, though, and make it clear that we&#8217;ve always had students who could see the bigger picture, and have often pushed us faculty to open some important new doors.  I suspect that we&#8217;ve actually been luckier in that respect at UMM than many other programs.  That said, you still get groaners (often very vocal) who never seem to be happy unless you&#8217;re emphasizing whatever tool or language they&#8217;re firmly convinced is their only road to employment.</p>
<p>This is one of the reasons that it makes me so happy to see <a href="http://laptop.org/laptop/software/specs.shtml">the list of programming languages used in the One Laptop Per Child project</a>:</p>
<blockquote><p>
We will support five programming environments on the laptop: (1) Python, from which we have built our user interface and our activity model; (2) Javascript for browser-based scripting; (3) Csound, a programmable music and audio environment; (4) Squeak, a version of Smalltalk embedded into a media-rich authoring environment; and (5) Logo. We will also provide some support for Java and Flash.
</p></blockquote>
<p>OK, we can debate the details (and I&#8217;m sure people have and will), but let&#8217;s skip all that shall we?  Let&#8217;s instead note that <em>none</em> of these was a &#8220;heavy hitter&#8221; 5 or 10 years ago, and there are plenty of people who would (wrongly in my opinion) argue that none are terribly important today.  How many data structures classes in the U.S., for example, (a key &#8220;bread and butter&#8221; course in most computing curriculums) use any of these languages?  I&#8217;m sure there are a few (especially Python), but proportionally I bet it&#8217;s pretty tiny.  (Try searching either Amazon or the web for textbooks for such a course, for example.)</p>
<p>It&#8217;s also worth considering impact here.  Sure, I doubt that anyone&#8217;s likely to start building inventory control systems in Logo, but should that be the issue?  What&#8217;s the real opportunity for impact here?  How do I change the world?  By building accounting systems?  Or by contributing to a project that plans to put computers and software in the hands to <em>millions of kids all around the world</em>?</p>
<p>You want to make the world a better place?  You want to <em>really</em> fight terrorism?  Then give people hope, a chance to grow and make their world better.  Give them something to protect.  Contribute to a project like this.</p>
<p>And, if you&#8217;re contributing to this project, you apparently program in Python, JavaScript, CSound, Squeak and Logo.</p>
<p>So let&#8217;s put an end to the whining about these not being &#8220;real&#8221; programming languages and nobody building &#8220;real&#8221; programs with them.  I&#8217;ve written a crapload of Java code in my day that only a handful of people will ever use.  Some bright bulbs used Squeak to build <a href="http://scratch.mit.edu/">Scratch</a>, which I suspect will be used by millions.  Hmmm &#8230; which do I find more impressive?</p>
]]></content:encoded>
			<wfw:commentRss>http://UnhinderedByTalent.com/Phi/archives/2007/11/19/a-wonderfully-different-way-to-thing-about-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

