<?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>North Horizon &#187; Education</title>
		<atom:link href="http://northhorizon.net/category/education/feed/" rel="self" type="application/rss+xml" />
		<link>http://northhorizon.net</link>
		<description></description>
		<lastBuildDate>Sat, 12 Nov 2011 20:01:11 +0000</lastBuildDate>
		<language>en</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
		<generator>http://wordpress.org/?v=3.3</generator>
		<item>
			<title>The Qualifications for Writing Textbooks</title>
			<link>http://northhorizon.net/2009/the-qualifications-for-writing-textbooks/</link>
			<comments>http://northhorizon.net/2009/the-qualifications-for-writing-textbooks/#comments</comments>
			<pubDate>Tue, 07 Apr 2009 19:48:37 +0000</pubDate>
			<dc:creator>Daniel</dc:creator>
			<category><![CDATA[Coding]]></category>
			<category><![CDATA[Education]]></category>
			<category><![CDATA[Computer Science]]></category>
			<category><![CDATA[Databases]]></category>
			<category><![CDATA[Textbooks]]></category>
			<guid isPermaLink="false">http://northhorizon.net/?p=122</guid>
			<description><![CDATA[It&#8217;s certainly true that there are many unqualified authors that the self-taught programmer has to look out for, but what about the textbooks we read at universities? I won&#8217;t argue for a second that tenured professors are the least bit unqualified to discuss the intricacies of algorithms and abstract data structures, but who writes the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s certainly true that there are many <a href="http://video.google.com/videoplay?docid=-4408250627226363306">unqualified authors</a> that the self-taught programmer has to look out for, but what about the textbooks we read at universities? I won&#8217;t argue for a second that tenured professors are the least bit unqualified to discuss the intricacies of algorithms and abstract data structures, but who writes the book on using real world implementations? Who is qualified to write the book on Java or SQL Server? I&#8217;d want to see someone who has been using the technology for several years or a good portion of the technology&#8217;s life if it&#8217;s relatively new. Unfortunately, I find this is rarely the case.<span id="more-122"></span> I think publishers could run a pitch like this:</p><blockquote><p>From the people who confused you with the most elementary algorithms comes a series of things you really need to know to do your job! Watch, mystified, as the book which you have a test on in eight hours <em>invents</em> symbols to explain the details of single digit addition! You might have been top of your class in high school and showed promise through your core and basic classes, but just you wait! Our authors have learned and mastered techniques to simultaneously insult your intelligence and dumbfound you with a needless amount of abstraction and complexity! All this can be yours for the low-low price of $280 for our 120 page full color, hardcover book!</p></blockquote><p><span>I&#8217;ve always been upset with textbook publishers, ever since my days in Computer Science 1, sophomore year in high school. The authors of that poorly constructed book (the binding literally only lasted about six months before self-destructing) took some kind of sadistic enjoyment in coming up with unintelligible vocabulary, patterns, and practices in which to subject students. In those days our teacher was our savior; no matter how mind-gratingly stupid and dull the book was, Mr. Patterson invariably sorted things out and never hesitated to say the book was moronic. I have to thank him for saving my sanity or, at least, staving off the inevitable future.</span></p><p>This semester, I draw particular complaint with <a href="http://www.amazon.com/Fundamentals-Database-Systems-Ramez-Elmasri/dp/0321369572/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1238532060&amp;sr=8-1">the book in my databases class</a>, inappropriately named &#8220;Fundamentals of Database Systems (5e),&#8221;  by <span>Ramez Elmasri and Shamkant B. Navathe. I&#8217;ve been writing SQL for about four years now, but it wasn&#8217;t untill my last job that I think I really learned the full potential of a database system. My old boss was an absolute <em>god </em>in writing SQL and I  made certain that the learning experience more than accounted for the pay. It was under his tutelage that I learned how well-designed database systems were made and how to retrieve amazing data no one thought possible. I wouldn&#8217;t consider myself a sage in designing databases, but I think that I&#8217;m definitely qualified to pass judgment on most designs, especially the ones that would be considered &#8220;fundamental.&#8221;</span></p><p><span>During the early stages of my class, my professor discussed the all-important topic of table keys. (For my non-programmer friends, you use database keys to look up data in a particular table. Since some tables can have millions of rows, you have to choose a key that is unique and is as small as possible for quick lookup.) It&#8217;s a well-held practice in modern databases that the database is really the best agent to tell you what the keys are, so in general, what you want to do is tell it what your data is, and, like a coat-check, it gives you a little token (a 32-bit signed integer) to get your data again. Because the database chooses the key, you can be assured that it is both unique and small enough to quickly look things up. This is known as an auto-increment integer primary key column, mainly because the integer that you&#8217;re given is 1 (or some increment) more than the key that was given out last. Even though it&#8217;s not a traditional mechanism in database research, every major database (MSSQL, Oracle, MySQL, Protegé) has some incarnation of it. Traditionally, the programmer chooses one or more fields that combined are unique. While this is effective, it takes significantly longer for the server to prepare the key to look up the data and the number of fields that must be duplicated on tables so the original data can be found becomes tremendous. My database professor still disagrees with me, but I have faith that he&#8217;ll have an epiphiny sometime and understand and regret the error of his ways.</span></p><p><span>So why is it that these authors, from whom my professor quotes, have got it all wrong? In lieu of real research, I did some investigative Googling to find the qualifications of these men.</span></p><h3><span>Ramez Elmarsi</span></h3><ul><li>B.S., Electrical Engineering, Alexandria University (Egypt, 1972)</li><li>M.S., Ph.D., Computer Science, Stanford University (1980)</li></ul><p>Elmarsi has spent the bulk of his life in research while consulting for Honeywell developing a distributed database testbed and associated tools from 1982 to 1987. He now teaches at the University of Texas at Arlington and consults for various law firms.</p><h6>Source: <a href="http://ranger.uta.edu/~elmasri/">http://ranger.uta.edu/~elmasri/</a></h6><h3>Shamkant B. Navathe</h3><ul><li>Ph.D., Industrial and Operations Engineering, University of Michigan (1976)</li><li>M.S., Computer and Information Science, Ohio State University (1970)</li><li>B.E., Electrical Communications Engineering, Indian Institute of Science (1968)</li><li>B.Sc., Physics, Mathematics, University of Poona (India, 1965)</li></ul><p>Navathe was a Systems Engineer for IBM from 1968-1969 before working for Electronic Data Systems in 1971. Starting in 1975, Navathe began teaching at NYU as an associate professor and then moved to the University of Florida for a few years until he ultimately settled at the Georgia Institute of Technology, where he teaches now.</p><h6>Source: <a href="http://www.cc.gatech.edu/computing/Database/faculty/sham/">http://www.cc.gatech.edu/computing/Database/faculty/sham/</a></h6><p>There&#8217;s no doubt that these men have the academic prowess demanded by their degrees and both have an extensive list of published works. But what really disturbs me is their professional résumé. Navathe stopped working professionally in 1971 and Elmarsi has never worked as a full-time employee at <em>any</em> company. This is when I understood exactly why my book is heavy on unintuitive mathematical symbols wielded like a bat with barbed wire and light on intelligence or edifying information. This field changes dramatically every couple years and unless you can keep up to date on the very latest technology, you are willing yourself into obsolescence. But yet some <span style="text-decoration: line-through;">charlatans</span> authors have the audacity to publish texts advising the unsuspecting student to continue using the old technologies of yore, rather than using what is new and efficient. Perhaps even more inexcusable is the book selection committee at my university choosing textbooks no one can read, let alone understand to remind all of us undergrad students that we&#8217;re not Ph.D.&#8217;s and we haven&#8217;t joined their elite clique.</p><p>I think this problem is far more widespread than I have broached here. A year or so ago, I wrote a letter I never delivered to my dean, more or less as a venting exercise. I think I&#8217;m going to clean it up and discuss my points here, in the event someone who can do something stumbles upon my humble blog.</p>]]></content:encoded>
			<wfw:commentRss>http://northhorizon.net/2009/the-qualifications-for-writing-textbooks/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		</item>
		<item>
			<title>The Definition of Computer Science</title>
			<link>http://northhorizon.net/2009/the-definition-of-computer-science/</link>
			<comments>http://northhorizon.net/2009/the-definition-of-computer-science/#comments</comments>
			<pubDate>Sat, 14 Mar 2009 05:37:24 +0000</pubDate>
			<dc:creator>Daniel</dc:creator>
			<category><![CDATA[Coding]]></category>
			<category><![CDATA[Education]]></category>
			<category><![CDATA[Computer Science]]></category>
			<category><![CDATA[Software Engineering]]></category>
			<guid isPermaLink="false">http://northhorizon.net/?p=106</guid>
			<description><![CDATA[What is Computer Science? It&#8217;s always interesting to see how different people answer the question. Especially people who have or plan to have degrees in it. Dictionary.com defines it as: the science that deals with the theory and methods of processing information in digital computers, the design of computer hardware and software, and the applications [...]]]></description>
			<content:encoded><![CDATA[<p>What is Computer Science?</p><p>It&#8217;s always interesting to see how different people answer the question. Especially people who have or plan to have <em>degrees</em> in it. Dictionary.com defines it as:</p><blockquote><p>the science that deals with the theory and methods of processing information in digital computers, the design of computer hardware and software, and the applications of computers.</p></blockquote><p>I see this broken down into:</p><ul><li>Science</li><li>Theory</li><li>Design of hardware and software</li><li>Applications for computation</li></ul><p>Normally, I&#8217;d say fighting the dictionary on definitions would be rather fruitless, but this is by far one of the most vague definitions I&#8217;ve ever seen. I think a good analog for CS is math and physics. In that much more mature field, mathematics provides laws that say <em>x</em> should exist. It is then up to the applied physicist to prove in a lab that the theory is true. Even <em>then</em>, it is up to a company and its engineers to productize and actually use the fruits of science. Computer Science, in stark contrast according to this definition, is all of those things rolled up into one. It&#8217;s no wonder why no one in this field knows what it means.<span id="more-106"></span></p><p>To me, the entire term &#8220;Computer Science&#8221; is a huge misnomer. It&#8217;s certainly not science. Science, at least to me, involves creating a hypothesis, setting up an experiment, and proving the truth of your assumptions. Last time I checked, there was no such thing in CS. Nobody sits around and hypothesizes about algorithms, let alone commercial programs. I think upper management would have a conniption if their products were experiments.</p><p>So what about computers? Surely you use computers in CS! I suppose most of my professors didn&#8217;t get that memo, and, historically, that really hasn&#8217;t been the case either. Edsger Dijkstra, one of the most renowned computer scientists in our short history, never used a computer. Even his musings, as late as 2001, were handwritten. Dijkstra had a very particular view of CS. To him, Computer Science was purely theory &#8211; really quite close to a real science in terms of algorithm design and such. It was his opinion that all these programs we run on our computers are perversions of computation. In the spirit of our forerunner, my professor in Advanced Data Structures forwent computers in favor of the more conventional pencil and paper. To be fair, I&#8217;m almost certain he <em>was</em> a machine, based upon his ability to do the most tedious and mundane calculations <em>ad nauseum</em> with the patience of any of Intel&#8217;s creations.</p><p>Since it seems my degree is almost as ambiguous as a Liberal Arts degree, I will posit my suggestions for changing it. Fortunately, unlike my comparison, <em>my</em> degree is both useful and salvageable.</p><p>My university has done a good job of trying to distill the ideas that I&#8217;ve covered here, and, for that, I commend them. It is, however, nothing short of unprovidential that they&#8217;ve managed to distill one form of mud into two forms of mud. The school offers degrees in Computer Science and Software Engineering. Despite what you might think, SE is hardly its namesake. What they ended up with is a theory-application mix (CS) and a application-business mix (SE). At least it&#8217;s a step in the right direction.</p><p>I think we need three degrees, as you have probably noticed that I&#8217;ve been hinting all along:</p><ol><li>Theoretical Computation</li><li>Software Engineering</li><li>Software Management</li></ol><p>Theoretical Computation would focus on algorithm design and computability, as its name suggests. It&#8217;s not a science, and it has no computers in it &#8211; just <em>computability</em>, or the ability for something to be derived from calculations and deterministic processes.</p><p>Software Engineering would actually live up to its name. Programming would be king, like the pencil is to the artist. Software architecture would be a major emphasis, as well as applied algorithm design, which could reach over into Theoretical Computation.</p><p>Finally comes Software Management. Because software planning is a huge issue for any company that writes software, be it boxed or internally distributed, we need people who are trained to help the process along. These people need to be business savvy to communicate deadlines and goals to the non-technical arm(s) of the company. Furthermore, Software Management majors have to be technical enough to be able to choose good employees.</p><p>A lot of people in the field feel that there will be a strong resistance to change for such a degree plan, even if it makes sense. I can understand the impetus, but at the same time the degree itself hasn&#8217;t existed for forty years, so there is always hope for reorganization.</p>]]></content:encoded>
			<wfw:commentRss>http://northhorizon.net/2009/the-definition-of-computer-science/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		</item>
		<item>
			<title>Respond in blue ink: Requiring Tools in Computer Science</title>
			<link>http://northhorizon.net/2009/respond-in-blue-ink-requiring-tools-in-computer-science/</link>
			<comments>http://northhorizon.net/2009/respond-in-blue-ink-requiring-tools-in-computer-science/#comments</comments>
			<pubDate>Tue, 03 Mar 2009 22:46:13 +0000</pubDate>
			<dc:creator>Daniel</dc:creator>
			<category><![CDATA[Coding]]></category>
			<category><![CDATA[Education]]></category>
			<category><![CDATA[Grading]]></category>
			<category><![CDATA[Java]]></category>
			<category><![CDATA[JUDE]]></category>
			<category><![CDATA[Object Oriented Analysis and Design]]></category>
			<category><![CDATA[Object Oriented Programming Systems]]></category>
			<category><![CDATA[Tools]]></category>
			<category><![CDATA[Visio]]></category>
			<category><![CDATA[Waterfall]]></category>
			<guid isPermaLink="false">http://northhorizon.net/?p=82</guid>
			<description><![CDATA[This semester I&#8217;m taking several electives to finish up my degree. One of the courses I&#8217;m taking is Object Oriented Programming Systems, formerly Object Oriented Analysis and Design. I have yet to find a suitable explanation as to why OOaD was cut and reformed at the graduate level, but I&#8217;m assuming it was because it [...]]]></description>
			<content:encoded><![CDATA[<p>This semester I&#8217;m taking several electives to finish up my degree. One of the courses I&#8217;m taking is Object Oriented Programming Systems, formerly Object Oriented Analysis and Design. I have yet to find a suitable explanation as to why OOaD was cut and reformed at the graduate level, but I&#8217;m assuming it was because it was a bit too advanced for <span style="text-decoration: line-through;">some</span> many of the people I find in my major. In its stead, we now have a much more aptly abbreviated course.</p><p>In any case, my professor is a big proponent of Java, the Waterfall <a href="http://en.wikipedia.org/wiki/Software Development Life Cycle" title="Software Development Life Cycle" >SDLC</a> (which he dubs &#8220;the generic SDLC.&#8221; I wasn&#8217;t aware wet sand was considered &#8220;the generic foundation&#8221;) and, of course, all the misery that comes with it.<span id="more-82"></span></p><p>For one of our more recent homework assignments, we were given the trivial task of converting a four Java classes from a previous assignment into UML diagrams. We were obviously applying what we learned in class by putting the cart in front of the horse. Our assignment was to be done in <a href="http://en.wikipedia.org/wiki/Jude (UML Tool)" title="Jude (UML Tool)" >JUDE</a> of <a href="http://jude.change-vision.com/jude-web/product/img/er_index_en.jpg">all things</a>. In the interests of full disclosure, I am completely spoiled in terms of tools to use. Microsoft, through its godsend of <a href="http://en.wikipedia.org/wiki/MSDNAA" title="MSDNAA" >MSDNAA</a> makes Christmas just about every day of the year for me. Sure I know it&#8217;s a form of product marketing &#8211; analogous to giving crack to kids &#8211; but have you <em>used</em> their stuff? It&#8217;s head and shoulders above <em>everything</em> else, and in many cases is the paradigm to which the industry <strong>only seeks to make parity with</strong>. With that being said, I&#8217;m hoping you&#8217;ll understand my&#8230; disposition against Fischer Price&#8217;s JUDE product. Instead of trudging through the installation of a clearly inferior product, ripping my hair out trying to understand the UI, and eventually producing a diagram that my 5-year-old cousin could have drawn better, I decided that I would use Visio instead. I made my diagrams down to the letter and they looked <em>beautiful</em>. I spent extra time making sure that the positioning of each class reduced the nmber of times connections intersected and made especially sure that everything was clear. I saved it out as a PDF, so as to be platform agnostic, and submitted it.</p><p>I wasn&#8217;t nearly as surprised as I was <em>livid </em>when I found out that I had been deducted 50% credit on the <em>sole</em> basis of, &#8220;it&#8217;s not a .jude file.&#8221; <em>That</em> is the kind of <a href="http://www.wsu.edu/~brians/errors/churchill.html">arrant pedantry</a> up with which I will not put. To me, it&#8217;s really the equivalent of me asking you to write a paper on Shakespeare in blue ink. I&#8217;d suppose a lot of people would remark, &#8220;well, I write in blue ink anyway, so it&#8217;s not a big deal,&#8221; and continue on. Still more would say, &#8220;normally I write in black ink, but I&#8217;ll comply because it seems like a trivial request, and not worth the fight.&#8221; This would probably leave me by myself stating emphatically that it is <em>unreasonable</em> to be concerned with the color of the ink that I write in juxtaposed against the magnitude of writing a paper on Shakespeare. Of course, I&#8217;d comply if the reasoning for the requirement of blue ink was enumerated, so long as it wasn&#8217;t arbitrary.</p><p>Perhaps even more important than the freedom aspect of the scenario is the abject <em>insanity</em> that revolves around diagrams. Who cares if your diagram was written in Visio, JUDE, Rhapsody, or on a whiteboard? <strong><em>It&#8217;s a diagram</em></strong>. The concept of <a href="http://en.wikipedia.org/wiki/WYSIWYG" title="WYSIWYG" >WYSIWYG</a> is almost an understatement. It might be argued that JUDE is an &#8220;enterprise application&#8221; and my good professor is trying to do me a favor by showing me a tool that&#8217;s used in the &#8220;real world.&#8221; I don&#8217;t think I would ever want to work for an employer that says, &#8220;We see  UML on your résumé, but while we think you&#8217;re smart enough to work on our codebase, we don&#8217;t think you&#8217;re smart enough to learn to use the UML tool we have.&#8221;</p><p>I think it&#8217;s more important to state the objectives of any assignment, be it professional or educational, and let the person doing the work choose the best way to accomplish it. Nobody likes a micromanager. Especially me.</p>]]></content:encoded>
			<wfw:commentRss>http://northhorizon.net/2009/respond-in-blue-ink-requiring-tools-in-computer-science/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
