<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>computer-science &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/computer-science/</link>
	<description>Feed of posts on WordPress.com tagged "computer-science"</description>
	<pubDate>Wed, 25 Nov 2009 11:06:42 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Year 2 - Software Engineering - Software Testing Concepts]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-software-testing-concepts/</link>
<pubDate>Tue, 24 Nov 2009 22:29:28 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-software-testing-concepts/</guid>
<description><![CDATA[Software testing concepts The fundamental rule of testing is that &#8216;a successful test is one th]]></description>
<content:encoded><![CDATA[Software testing concepts The fundamental rule of testing is that &#8216;a successful test is one th]]></content:encoded>
</item>
<item>
<title><![CDATA[Final Demonstration of Prototype]]></title>
<link>http://justmyself.wordpress.com/2009/11/24/final-demonstration-of-prototype/</link>
<pubDate>Tue, 24 Nov 2009 18:27:13 +0000</pubDate>
<dc:creator>Mohsin</dc:creator>
<guid>http://justmyself.wordpress.com/2009/11/24/final-demonstration-of-prototype/</guid>
<description><![CDATA[Tomorrow, I ll have my final demos of prototype at Ericsson, Karlskrona . This will be my last task ]]></description>
<content:encoded><![CDATA[Tomorrow, I ll have my final demos of prototype at Ericsson, Karlskrona . This will be my last task ]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; Design Class Diagrams]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-design-class-diagrams/</link>
<pubDate>Tue, 24 Nov 2009 17:43:18 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-design-class-diagrams/</guid>
<description><![CDATA[Design / Object Classes A Design Class diagram is a way of modelling the domain to a level of detail]]></description>
<content:encoded><![CDATA[Design / Object Classes A Design Class diagram is a way of modelling the domain to a level of detail]]></content:encoded>
</item>
<item>
<title><![CDATA[Ano college org niyo?]]></title>
<link>http://iccttimes.wordpress.com/2009/11/24/ano-college-org-niyo/</link>
<pubDate>Tue, 24 Nov 2009 13:04:37 +0000</pubDate>
<dc:creator>icctstudent</dc:creator>
<guid>http://iccttimes.wordpress.com/2009/11/24/ano-college-org-niyo/</guid>
<description><![CDATA[Ano ang college org niyo? And if you do have one, nararamdaman niyo ba? May seminar ba o wala lang? ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ano ang college org niyo? And if you do have one, nararamdaman niyo ba? May seminar ba o wala lang?</p>
<p>May narinig ako na may nagbabalak magtayo ng computer org kaso meron na yata existing na org (meron palang org ang CS at IT, DI NAMIN RAMDAM), after reading their proposal and after learning about their proposed projects, I said WOW sana maaprubahan.</p>
<p>But if the admins still see it fit that they should just content themselves with the CES (FYI, CES is an acronym for Computer Explorers Society, hahaha parang high school club lang), kahit na di maramdaman ang presence nila.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[test post]]></title>
<link>http://luxypher.wordpress.com/2009/11/24/test-post/</link>
<pubDate>Tue, 24 Nov 2009 12:46:09 +0000</pubDate>
<dc:creator>luxypher</dc:creator>
<guid>http://luxypher.wordpress.com/2009/11/24/test-post/</guid>
<description><![CDATA[run linux!]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>run linux!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Software Engineering - Software Design Intro]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-software-design-intro/</link>
<pubDate>Mon, 23 Nov 2009 23:16:54 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-software-design-intro/</guid>
<description><![CDATA[Intro to software design Embury&#8217;s law Remember this? The software has bugs in it, we just don]]></description>
<content:encoded><![CDATA[Intro to software design Embury&#8217;s law Remember this? The software has bugs in it, we just don]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Software Engineering - Domain Modelling]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-domain-modelling/</link>
<pubDate>Mon, 23 Nov 2009 21:09:18 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-domain-modelling/</guid>
<description><![CDATA[Domain modelling Class diagrams Class diagrams show the different classes and the relationships betw]]></description>
<content:encoded><![CDATA[Domain modelling Class diagrams Class diagrams show the different classes and the relationships betw]]></content:encoded>
</item>
<item>
<title><![CDATA[explorer.exe]]></title>
<link>http://zlich.wordpress.com/2009/11/23/explorer-exe/</link>
<pubDate>Mon, 23 Nov 2009 17:17:15 +0000</pubDate>
<dc:creator>zlich</dc:creator>
<guid>http://zlich.wordpress.com/2009/11/23/explorer-exe/</guid>
<description><![CDATA[Nih pengalaman saat trouble shooting laptop teman yang pake OS Windows Vista Ultimate. Setelah saya ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Nih pengalaman saat trouble shooting laptop teman yang pake OS Windows Vista Ultimate. Setelah saya cek ternyata proses explorer.exe gagal diload saat start up. Hal ini bisa disebabkan karena virus atau sistem yang crash. Ciri-ciriya adalah saat komputer dinyalakan, sistem operasi berhasil booting namun tidak berhasil login melalui user yang ada. Pada layar hanya nampak pointer mouse. Untuk bisa login user harus menekan ctrl+alt+delete untuk menampilkan Task Manager dan kemudian menjalankan secara manual explorer.exe tiap kali login.<br />
Hal ini tentunya akan sangat merepotkan user, karena setiap kali login harus menjalankan explorer.exe secara manual melalui task manager.<br />
Salah satu cara yang bisa digunakan adalah ketika kita berhasil login, kita masuk ke Registry Editor. Masuk ke<br />
<code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon</code><br />
Cari Subkey <em><strong>Shell</strong></em>, dan edit value datanya menjadi <em><strong>explorer.exe </strong></em>saja, tanpa ada tambahan yang lain.<br />
Selamat mencoba dan semoga sukses!!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[C Guide - Comments]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/c-guide-comments/</link>
<pubDate>Mon, 23 Nov 2009 14:41:15 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/c-guide-comments/</guid>
<description><![CDATA[Comments are very important in programming. Could you imagine what you would do if you wrote a progr]]></description>
<content:encoded><![CDATA[Comments are very important in programming. Could you imagine what you would do if you wrote a progr]]></content:encoded>
</item>
<item>
<title><![CDATA[C Guide - Variables]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/c-guide-variables/</link>
<pubDate>Mon, 23 Nov 2009 14:40:43 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/c-guide-variables/</guid>
<description><![CDATA[We’ve all done Maths in high school, so you should know what a variable is? Say you had the formula:]]></description>
<content:encoded><![CDATA[We’ve all done Maths in high school, so you should know what a variable is? Say you had the formula:]]></content:encoded>
</item>
<item>
<title><![CDATA[C Guide &ndash; Hello World!]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/c-guide-hello-world/</link>
<pubDate>Mon, 23 Nov 2009 14:39:50 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/c-guide-hello-world/</guid>
<description><![CDATA[I was sat here, in my room – fairly bored to be honest… – and i started thinking, wouldn’t it be coo]]></description>
<content:encoded><![CDATA[I was sat here, in my room – fairly bored to be honest… – and i started thinking, wouldn’t it be coo]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; Use Case Diagrams / Descriptions]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-use-case-diagrams-descriptions/</link>
<pubDate>Sun, 22 Nov 2009 17:41:58 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-use-case-diagrams-descriptions/</guid>
<description><![CDATA[UML &amp; Use Cases UML stands for Unified Modelling Language. They are diagrams to help aid the cre]]></description>
<content:encoded><![CDATA[UML &amp; Use Cases UML stands for Unified Modelling Language. They are diagrams to help aid the cre]]></content:encoded>
</item>
<item>
<title><![CDATA[Why I Dislike JavaScript]]></title>
<link>http://immanentizing.wordpress.com/2009/11/22/why-i-dislike-javascript/</link>
<pubDate>Sun, 22 Nov 2009 16:48:46 +0000</pubDate>
<dc:creator>Austin McDonald</dc:creator>
<guid>http://immanentizing.wordpress.com/2009/11/22/why-i-dislike-javascript/</guid>
<description><![CDATA[There are so many reasons I dislike JavaScript, I can&#8217;t hope to go into all of them.  But I]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>There are so many reasons I dislike JavaScript, I can&#8217;t hope to go into all of them.  But I&#8217;ll try to address the high-level ones here.  These criticisms are meant to address client-side web programming.  I realize there are excuses for why a lot of these things exist, but that doesn&#8217;t mean they should persist in a modern Web environment.  I think, with the exception of some Mozilla engineers (Mozilla is responsible for maintaining the language), most Web developers agree that JavaScript is horribly flawed.</p>
<p>In the interests of full disclosure, I am not a Web developer.  I thought about getting into it, but when I saw how horrifying JavaScript is, I backed away quickly.  But the opinions expressed below are very common in the Web developer community.</p>
<h1>Not Strongly Typed</h1>
<p>&#8220;Dynamically typed&#8221; languages are a bad idea.  They&#8217;re not dynamically typed, they&#8217;re &#8220;unityped.&#8221;  As Pastor Bob Harper says, you&#8217;re fetishizing one particular type to the detriment of all the others.  When you&#8217;re writing dynamically-typed code, you still have to worry about the type of things &#8211; you just have to worry about it at a much lower granularity &#8211; whether something implements function X instead of whether it&#8217;s a number.  I don&#8217;t understand why people think dynamic typing is more convenient; in particular, you have to give up type safety for it, the lack of which causes a whole new class of problems called &#8220;runtime type errors.&#8221;  JavaScript&#8217;s problems with typing show up in its almost-but-not-quite-the-same objects, ie. &#8220;primitive strings&#8221; vs. &#8220;string objects.&#8221;</p>
<p>For a language like JavaScript, where efficiency is so important, not using a strong typing system is unforgivable.</p>
<h1>Writing Efficient JS Code Requires Massive Inside Knowledge</h1>
<p>I found Dmitriy Baranovskiy&#8217;s post on <a href="http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/">&#8220;bloopers&#8221; in Google&#8217;s Closure library</a> indispensible for this section.</p>
<h2>Looping</h2>
<p>The following loops all do the same thing, but all have very different runtimes:</p>
<pre>for (var i = fromIndex; i &#60; arr.length; i++) {
  ...blah...
}

for (var i = fromIndex, ii = arr.length; i &#60; ii; i++) {
  ...blah...
}
<pre>var i = arr.length;
while (i--) {
  ...blah...
}
</pre>
</pre>
<p>The third runs faster than the second, which runs faster than the first.  Is there a justifiable reason for making the language perform differently for these different looping constructs?  One might suggest that, in the first loop, you might want to iterate over an array with changing length.  In that case, you aren&#8217;t really iterating over the array, you&#8217;re using some other metaphor, and shouldn&#8217;t be in a for loop.</p>
<h2>Object.prototype</h2>
<p>You&#8217;re allowed to add things to Object.prototype.  But doing so will break not only your own code, but everybody else in the world&#8217;s code as well.  This is one of the beautiful flaws with object prototyping.</p>
<h2>String Conversion</h2>
<p>Why is</p>
<pre>var replacement = String(arguments[i]).replace(…);
</pre>
<p>slower than</p>
<pre>var replacement = (arguments[i] + "").replace(…);
</pre>
<p>?</p>
<h1>Weird Idiosyncracies</h1>
<h2>Automatic Semicolon Insertion</h2>
<p>The rules for when JavaScript will automatically insert semicolons are basically &#8220;We automatically put in semicolons if the statement would be illegal without it.&#8221;  The problem is, this is impossible to predict in practice (except for JS gurus, of course).  It&#8217;s a very common source of bugs in JS.  Why is this feature in here?</p>
<h2>When is JavaScript code loaded?</h2>
<p>It depends on where in the HTML file the JavaScript code is referenced (or whether it&#8217;s loaded dynamically in the JavaScript).  Thus, you need to spread your JS throughout your HTML document to get desired behavior (usually).</p>
<h2>Browser compatibility</h2>
<p>It&#8217;s a shame that you need to write different code for different browsers, but to JS&#8217;s credit the (basically mandatory) third-party libraries tend to let you gloss over this.  Which reminds me&#8230;</p>
<h2>Mandatory Third-Party Libraries</h2>
<p>It&#8217;s impossible to write useful JS code without using a third-party library like jQuery or Closure that provides all the features missing from the core language (which must then be included in every web page that uses it).  Of course, this is a criticism you can level at a lot of languages.</p>
<h1>Towards a Solution</h1>
<p>The problem is, if JS weren&#8217;t so entrenched in our browsers, something better would&#8217;ve supplanted it a long time ago.  Combating this entrenchment will be a real problem for any web language hopeful.</p>
<p>I think we should look at JavaScript as more like assembly language than any real modern programming language.  For example, JavaScript is one of the very few languages where the size of your source code matters.  Today, it&#8217;s very important to &#8220;compile&#8221; your JavaScript with a minimizer for production.  However, it&#8217;s not mandatory &#8211; and it should be.  Once you&#8217;ve got a compilation step in, why bother writing JavaScript at all?  This is the approach Google has taken with their <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>.</p>
<p>I think this is the right approach.  A first step would be a Language X to JavaScript compiler (some possible Language X&#8217;s: Java (GWT), OCaml, or Haskell (YHC)).  Web developers could then write in a high-level, safe language without worrying about all the crap JavaScript makes you deal with.  You&#8217;d also get minimized, efficient code as a result (without worrying what kind of loop construct to use, for example).</p>
<p>The next step would be for browser makers to recognize that supporting Language X natively would be a big performance increase.  Then we&#8217;d have a hybrid Web, where some pages are in JavaScript (old-style of compiled-from-X) and others will detect that you&#8217;re capable of reading Language X directly and just send you that.  A browser plugin would be a great intermediary between these two steps.</p>
<p>Finally, one day we could eventually see JavaScript phased out altogether.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[TSTC Publishing Hosts Two Workstudy Interns]]></title>
<link>http://tstcpublishing.wordpress.com/2009/11/22/tstc-publishing-hosts-two-workstudy-interns/</link>
<pubDate>Sun, 22 Nov 2009 15:33:41 +0000</pubDate>
<dc:creator>sheilatstc</dc:creator>
<guid>http://tstcpublishing.wordpress.com/2009/11/22/tstc-publishing-hosts-two-workstudy-interns/</guid>
<description><![CDATA[TSTC Publishing staff members enjoy working with all the interns. Earlier posts introduced TSTC and ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://tstcpublishing.wordpress.com/files/2009/11/andres-torres1.jpg"><img class="alignleft size-full wp-image-1089" title="Andres Torres" src="http://tstcpublishing.wordpress.com/files/2009/11/andres-torres1.jpg" alt="" width="90" height="100" /></a><a href="http://tstcpublishing.wordpress.com/files/2009/11/1laina3.jpg"><img class="alignleft size-full wp-image-1090" title="1Laina" src="http://tstcpublishing.wordpress.com/files/2009/11/1laina3.jpg" alt="" width="90" height="100" /></a>TSTC Publishing staff members enjoy working with all the interns. Earlier posts introduced TSTC and Baylor interns. This posting introduces you to Andres Torres and Laina Juarez, our workstudy interns.<!--more--><strong>Andres Torres</strong> is a computer science technology major from Grand Prairie, Texas. As a work study intern, Andres works with everyone on the publishing team, assisting with special projects. Andres is now well-experienced in the Highrise program, He describes his level of expertise as “just below a Jedi.” Andres said he chose TSTC because it will help him reach his ultimate goal to program for a big company. In the future, Andres sees himself working for Microsoft or Blizzard.</p>
<p>When he gets a little free time, Andres likes to play sports, video or computer games, and indulge in his love for science fiction. Andres loves the adventures of science fiction because he likes to imagine himself as the character, and being a part of “all of the amazing stuff that happens on the adventures.”</p>
<p>Arlington native <strong>Laina Juarez</strong> works as a data entry intern at TSTC Publishing. Laina is a computer science major. She hopes to work as a database administrator. “My dad is a database administrator and has the flexibility of working at home,” said Laina.</p>
<p>Originally furthering her education at Ball State University in Indiana, Laina transferred back to Texas after her freshman year, and began studying computer science at TSTC Waco. She said she thought would be more advantageous to have a two-year degree in computer science than a four-year degree in psychology, so she made the move to TSTC.</p>
<p>When Laina isn’t studying or working, she enjoys reading the “Twilight” saga and “Great and Terrible Beauty.” She also enjoys playing pool at Clicks.</p>
<p>Although she hasn’t planned her future completely, Laina knows she wants to stay in Texas. She has family in Florida, and “it snows too much in Indiana,” she said. Laina plans to graduate with a degree in computer science in the summer or fall of 2010.</p>
<p>Kristin and Alyssa</p>
<p><iframe src='http://digg.com/api/diggthis.php?u=http%3A%2F%2Fdigg.com%2Farts_culture%2FTSTC_Publishing_Hosts_Two_Workstudy_Interns' height='82' width='55' frameborder='0' scrolling='no' style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'></iframe></p>
<p><a rel="#someid8" href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=602685&#38;loc=en_US">Click Here to Subscribe to Our Blog Posts by Email</a></p>
<p class="getsocial" style="text-align:left;"><a title="Add to Facebook" href="http://www.facebook.com/sharer.php?u=http://tstcpublishing.wordpress.com/2009/11/22/tstc-publishing-hosts-two-workstudy-interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4014.png" alt="Add to Facebook" /></a><a title="Add to Newsvine" href="http://www.newsvine.com/_wine/save?u=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;h=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4024.png" alt="Add to Newsvine" /></a><a title="Add to Digg" href="http://digg.com/submit?phase=2&#38;url=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;title=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4034.png" alt="Add to Digg" /></a><a title="Add to Del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;title=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4044.png" alt="Add to Del.icio.us" /></a><a title="Add to Stumbleupon" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;title=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4054.png" alt="Add to Stumbleupon" /></a><a title="Add to Reddit" href="http://reddit.com/submit?url=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;title=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4064.png" alt="Add to Reddit" /></a><a title="Add to Blinklist" href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&#38;Description=&#38;Url=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;Title=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4074.png" alt="Add to Blinklist" /></a><a title="Add to Twitter" href="http://twitter.com/home/?status=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns+%40+http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4084.png" alt="Add to Twitter" /></a><a title="Add to Technorati" href="http://www.technorati.com/faves?add=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4094.png" alt="Add to Technorati" /></a><a title="Add to Furl" href="http://www.furl.net/storeIt.jsp?u=http%3A%2F%2Ftstcpublishing.wordpress.com%2F2009%2F11%2F22%2Ftstc-publishing-hosts-two-workstudy-interns&#38;t=TSTC%20Publishing%20Hosts%20Two%20Workstudy%20Interns" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/02/gs4104.png" alt="Add to Furl" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering - Requirements]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-requirements/</link>
<pubDate>Sun, 22 Nov 2009 15:13:51 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-requirements/</guid>
<description><![CDATA[What? Gathering requirements is very important, as they are a way of finding out what the new system]]></description>
<content:encoded><![CDATA[What? Gathering requirements is very important, as they are a way of finding out what the new system]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 – Operating Systems – Operating Systems Concepts]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-operating-systems-operating-systems-concepts/</link>
<pubDate>Sun, 22 Nov 2009 15:13:21 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-operating-systems-operating-systems-concepts/</guid>
<description><![CDATA[Computer Hardware There are many components within a computer, all of which have to communicate with]]></description>
<content:encoded><![CDATA[Computer Hardware There are many components within a computer, all of which have to communicate with]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering - Methodologies]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-methodologies/</link>
<pubDate>Sun, 22 Nov 2009 15:12:11 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-methodologies/</guid>
<description><![CDATA[Fail to Prepare – Prepare to Fail Software projects are HUGE, if you just sat down at your computer ]]></description>
<content:encoded><![CDATA[Fail to Prepare – Prepare to Fail Software projects are HUGE, if you just sat down at your computer ]]></content:encoded>
</item>
<item>
<title><![CDATA[RC4 Encryption]]></title>
<link>http://zlich.wordpress.com/2009/11/22/rc4-encryption/</link>
<pubDate>Sun, 22 Nov 2009 14:58:32 +0000</pubDate>
<dc:creator>zlich</dc:creator>
<guid>http://zlich.wordpress.com/2009/11/22/rc4-encryption/</guid>
<description><![CDATA[Berikut ini adalah source code sederhana untuk enkripsi RC4. Source code ini dibuat menggunakan baha]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Berikut ini adalah source code sederhana untuk enkripsi <a href="http://en.wikipedia.org/wiki/RC4">RC4</a>. Source code ini dibuat menggunakan bahasa pemrograman Java.</p>
<p><code><br />
import java.io.*;<br />
//import java.lang.Character;<br />
/**<br />
 *<br />
 * @author zlich<br />
 */<br />
public class RC4 {<br />
    public static void main (String [] args) throws IOException {<br />
        int [] key = null;<br />
        int keylen = 0;<br />
        int k = 0;<br />
        int [] SBox = new int [256];        </p>
<p>        DataInputStream input = new DataInputStream(System.in);</p>
<p>        //inisialisasi S-Box<br />
        for (int i = 0; i 0) {<br />
            key = new int [keylen];<br />
        }<br />
        for (k=0; k&#60;keylen; k++) {<br />
            key[k] = kunci.charAt(k);</p>
<p>            System.out.print(key[k] + &#34; &#34;);<br />
        }</p>
<p>        //permutasi S-Box<br />
        int i, j = 0;<br />
        for (i=0; i&#60;256; i++) {<br />
            j = (j + SBox[i] + key[i % key.length]) % 256;            </p>
<p>            //swap<br />
            int temp = SBox[i];<br />
            SBox[i] = SBox[j];<br />
            SBox[j] = temp;<br />
        }</p>
<p>        //Input Plaintext<br />
        System.out.println(&#34;\nPlaintext: &#34;);<br />
        String plaintext = input.readLine();      </p>
<p>        //PRGA<br />
        int a = 0;<br />
        int b = 0;<br />
        for (i=0; i&#60;plaintext.length(); i++) {<br />
            a = (a + 1) % 256;<br />
            b = (b + SBox[a]) % 256;</p>
<p>            //swap<br />
            int temp = SBox[a];<br />
            SBox[a] = SBox[b];<br />
            SBox[b] = temp;</p>
<p>            //pseudorandom generation<br />
            int pseudo = SBox[(SBox[a] + SBox[b]) % 256];<br />
            int chartext = plaintext.charAt(i);</p>
<p>            //XOR<br />
            int chiper = pseudo ^ chartext;<br />
            System.out.print(Integer.toHexString(chiper).toUpperCase()); //chipertext<br />
            //System.out.print(Character.toChars(chiper));<br />
        }<br />
    }<br />
}<br />
</code></p>
<p>Source codenya masih menggunakan prosedural, untuk pendekatan OOP sedang diusahakan.</p>
<p>Kalau dicompile terus dieksekusi outputnya kayak gini:<br />
<code>Key:<br />
pwd12<br />
112 119 100 49 50<br />
Plaintext:<br />
Math 310 Proves!<br />
6CA86FE3CBC33C162595C3E78B9C97BC<br />
</code></p>
<p>Selamat Mencoba!!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The challenge of trying to get a real science of computing in our schools]]></title>
<link>http://tekkie.wordpress.com/2009/11/22/the-challenge-of-trying-to-get-a-real-science-of-computing-in-our-schools/</link>
<pubDate>Sun, 22 Nov 2009 13:02:21 +0000</pubDate>
<dc:creator>Mark Miller</dc:creator>
<guid>http://tekkie.wordpress.com/2009/11/22/the-challenge-of-trying-to-get-a-real-science-of-computing-in-our-schools/</guid>
<description><![CDATA[Once again, I return to the technique of using a metaphor created by a recent South Park episode (Se]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Once again, I return to the technique of using a metaphor created by a recent South Park episode (Season 13, Episode 10) to illustrate the way things are (in an entirely different subject). <strong><em>Warning:</em><span style="font-weight:normal;"> There is adult, offensive language in the video clips I use below. My usual admonition applies. If you are easily offended, please skip them.</span></strong></p>
<p><strong><span style="font-weight:normal;">The episode is about the popular perception of wrestling, promoted by the WWF, vs. the real sport. It uses the same theme as an <a href="http://tekkie.wordpress.com/2008/06/10/the-culture-of-air-guitar/" target="_self">earlier episode I used</a>, which satirized Guitar Hero: The pop culture is taking something which involves discipline and hard work, with some redeeming quality, and turning it into something else entirely with no redeemable value. Rather than challenging us to be something more, it revels in what we are.</span></strong></p>
<p>This is a follow-up post to <a href="http://tekkie.wordpress.com/2009/08/12/does-computer-science-have-a-future/" target="_self">&#8220;Does computer science have a future?&#8221;</a> It fleshes out the challenge of trying to promote a real science in computing&#8230;with some satire.</p>
<p>I&#8217;ve been getting more exposure to the evolution of CS in universities, which extends to the issue of propping up CS in our high schools (which often just means AP CS), though there&#8217;s been some talk of trying to get it into a K-12 framework.</p>
<p>University CS programs have been hurting badly since the dot-com crash of 2001. Enrollments in CS dropped off dramatically to levels not seen since the 1970s. We&#8217;re talking about the days when mainframes and minicomputers seemed to be the only options. It&#8217;s not too much of a stretch to say that we&#8217;ve returned to that configuration of mainframes and terminals, and the thinking that <a href="http://blogs.sun.com/Gregp/entry/the_world_needs_only_five" target="_blank">&#8220;the world needs only 5 computers&#8221;</a>.</p>
<p>After looking at the arc of the history of computing over the last 30 years, one could be excused for thinking that an open network like the internet and an open platform like the personal computer were all just a &#8220;bad trip&#8221;, and that things have been brought back to a sense of reasonable sobriety. This hides a deeper issue: Who is going to understand computing enough to deal with it competently? Can our universities orient themselves to bring students who have been raised in an environment of the web, video game consoles, iPods, and smart phones&#8211;who have their own ideas about what computers are&#8211;to an understanding of what computing is, so they can carry technological development forward?</p>
<p>Going even deeper, can our universities bring themselves to understand the implications of computing for their own outlook on the world, and convey that to their students? I ask this last question partly because of my own experience with computing and how it has allowed me to think and perceive. I also ask it because Alan Kay has brought it up several times as an epistemological subject that he&#8217;d like to see schools ponder, and in some way impart to students: thinking about systems in general, not just in computers.</p>
<p>The point of the internet was to create a platform upon which networks could be built, so they could be used and experimented with. It wasn&#8217;t just built so that people could publish porn, opinion, news, music, and video, and so that e-commerce, information transfer, chat, and internet gaming could take place.</p>
<p>The personal computer was not just created so that we could run apps. on it, and use it like a terminal. It was created with the intent of making a new medium, one where ideas could be exchanged and transactions could take place, to be sure, but also so that people could mold it into their own creation if they wanted. People could become authors with it, just as with pen, paper, and the typewriter, but in a much different sense.</p>
<p>But, back to where we are now&#8230;</p>
<p>Most high schools across the country have dropped programming courses completely, or they&#8217;re just hanging on by a thread (and in those cases an AP course is usually all that&#8217;s left). The only courses in computer literacy most schools have offered in the last several years are in how to use Microsoft Word and Excel (and <em>maybe</em> how to write scripts in Office using VBA), and how to use the web, Google, and e-mail.</p>
<p>CS departments in universities are desperate to find something that gives them relevance again, and there&#8217;s a sense of &#8220;adapt or die&#8221;. I&#8217;ve had some conversations with several computing educators at the university and high school level about my own emerging perspective on CS, which is largely based on the material that Alan Kay and Chris Crawford have put forward. I&#8217;ve gotten the ear of some of them, but only a rare few seem to have the background and open mindedness to understand and consider what I have to say. These few like entertaining the ideas for a bit, but then forget about it, because they don&#8217;t translate into their notions of productive classroom activities (implementations). I must admit I don&#8217;t have much of a clue about how to translate these ideas into classroom activities yet, either, much less how to sell them to curriculum committees. I&#8217;m just discovering this stuff as I go. I guess I thought that by putting the ideas out there, along with a few other like-minded people, that at least a few teachers would catch on, become inspired, and start really thinking about translating them into curriculum and activities.</p>
<p>I&#8217;ve been getting a fair sense from afar about how hard it is for computing educators to even think about doing this. I&#8217;ve been surprised, because I&#8217;ve always thought that it&#8217;s the teachers who come up with the curriculum, and in this &#8220;time of crisis&#8221; for CS they would be interested in a new perspective. It&#8217;s actually an old perspective, but it hasn&#8217;t been implemented successfully on a wide scale yet, and it&#8217;s a more advanced perspective than what has been taught in CS in most places for decades.</p>
<p>The challenge is understandable to me now at one level, because any alternative point of view on CS, even the ones currently being taught in some innovative university programs, run into the buzz saw of the pre-existing student perspective on computing (prepare, there&#8217;s an analogy coming):</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.3717177' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></p>
<p>Trying to teach anything akin to &#8220;the real thing&#8221; (using computing in deep and creative ways to create representations of our ideas and test them, and possibly learn something new in the process) tends to get weird looks from students (though not from all):</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.3717173' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></p>
<p>There&#8217;s a temptation on the part of some to take away from this experience the idea that the material they&#8217;re presenting is no longer relevant, and that the students&#8217; perspectives should be folded into what&#8217;s taught. I agree with this up to a point. I think that the presentation of the material can be altered to help students better relate to the subject, but I draw the line at watering down the end goal. I think that subjects have their own intrinsic worth. Rather than trying to find a way to help more students pass by throwing out subjects that seem too difficult, there should instead be remedial support that helps willing students rise up to a level where they can understand the material. To me, the whole idea of a university education is to get students to think and perceive at a more sophisticated level than when they came in. CS should be no different. You&#8217;d be surprised, though, how many CS professors think the more important goal is to teach only about existing technology and methodologies.</p>
<p>Talking to most other CS educators at the high school and university level has been an eye-opening and disheartening experience, because we get our terminology confused. I mean to say one thing, and to my amazement I get people who honestly think I&#8217;m saying the complete opposite. In other cases we have a different understanding of the same subject, and so the terms we use get assigned different meanings, and I come to a point where I realize we can&#8217;t understand each other. The background material for where we&#8217;re coming from is just too different.</p>
<p>Many CS professors (whom I have not met, though I&#8217;ve been hearing about them) apparently think all of this &#8220;real thing&#8221; stuff is quaint, but they have <em>real</em> work to do, like &#8220;training IT professionals for the 21st century&#8221;. Phah! Guess what, people. Java is the new Cobol (in lieu of Fortran, no less&#8230;). Web apps. are the new IBM 3270 apps. Remember those days? Welcome to the 1970s! And by the way, isn&#8217;t CS starting to look like CIS? Just an observation&#8230;</p>
<p>(A little background on the clip below: In the story, after the failed attempt at learning real wrestling (in the clip above), the South Park kids form their own &#8220;wrestling show&#8221;, which is just play acting with violence, complete with the same scandal-ridden themes of the &#8220;WWE wrestling&#8221; they admire so much. A bunch of &#8220;redneck&#8221; adults in South Park gather around to watch in rapt attention.)</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.3717214' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></p>
<p>Note I am not trying to call anyone &#8220;stupid&#8221; (the wrestling teacher in South Park has a penchant for calling people that), though I share in the character&#8217;s frustration with people who are unwilling to challenge their own assumptions.</p>
<p>I get a sense that with many CS professors the bottom line is it&#8217;s all about supporting the standard curriculum in order to turn out what they believe are trained IT professionals who are capable of working with existing technology to create solutions employers need. I wonder if they&#8217;ve talked to any software developers who work out in the field. I&#8217;m sure they&#8217;d get an earful about how <a href="http://www.codinghorror.com/blog/archives/000781.html" target="_blank">CS graduates tend to not be of high quality</a> anymore.</p>
<p>The faculty support their departmental goals and the existing educational field. The belief is, &#8221;Dammit! We&#8217;ve gotta have <em>something</em> called &#8216;CS&#8217;, because something is better than nothing.&#8221; This ends up meaning that they accommodate the dominant perspective that students have on computing. This ultimately goes back to the dominant industry vision, which now has nothing to do with CS.</p>
<p>When I&#8217;ve found a receptive CS professor, what I&#8217;ve suggested as a remedy, along with &#8220;moving the needle&#8221; back to something resembling a real science, is that the CS community needs to invent educational tools: Their own educational artifacts, and their own programming languages. This still goes on, though it&#8217;s not happening nearly as much as it did 40 years ago. I think that the perspectives of students need to be taken into consideration. The models used for teaching need to create a bridge between how they think of computing coming in, and where the CS discipline can take them.</p>
<p>The standard languages that most CS departments have been using for the past 14 years or so are C++, and now Java. C++ came from Bell Labs. Java came from Sun Microsystems. Both were created for industrial use by professionals, <em>not</em> people who&#8217;ve never programmed a computer before in their lives! In addition, they&#8217;re not that great for doing &#8220;real CS&#8221;. I&#8217;ve only heard of Scheme being recommended for that (along with some select course material, of course). I haven&#8217;t worked with it, but Python seems to get recommended from time to time by innovative people in CS. It&#8217;s now used in the introductory CS course at MIT. My point is, though, there needs to be more of an effort put into things like this in the CS academic community.</p>
<h3><span style="text-decoration:underline;">What&#8217;s at stake</span></h3>
<p>In my previous post I link to above I asked the question, which Alan Kay asked in his presentation, &#8220;Does CS have a future?&#8221; I kind of punted, giving a general answer that&#8217;s characterized the field through the last several decades. I figured it would continue to be the case. This is going to sound real silly, but this next scene in South Park actually helped me see what Kay was talking about: We could lose it all! The strand that spans the gulf between ignorance and &#8220;the real thing&#8221; (a connection which is already extremely tenuous) could snap, and CS would be all but dead:</p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.3717222' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></p>
<p>What came to mind is that it wouldn&#8217;t necessarily mean that the programs called &#8220;CS&#8221; would be dead, but what they teach would end up being something so different and shallow as to not even resemble the traditional CS curriculum that&#8217;s existed for 30+ years.</p>
<p><span style="font-weight:normal;font-size:13px;">What I&#8217;ve learned is there&#8217;s a lot of resistance to bringing a more powerful form of CS into universities and our school system. This is not only coming from the academics. It&#8217;s also coming from the students. This is because, ironically, it&#8217;s seen as weak and irrelevant. I&#8217;ve already given you a feel for where the student perspective is at. Alan Kay identified a reason why most CS academics don&#8217;t go for it: They think what they&#8217;re teaching<em> </em><span style="text-decoration:underline;">is it</span>! They think they&#8217;re teaching &#8220;real CS&#8221;. They have little to no knowledge of the innovative CS that was done in the 1960s and 70s. They couldn&#8217;t even recall it if they tried, because they never studied it. They&#8217;re historically illiterate, just like our industry.</span></p>
<p>High school &#8220;CS&#8221; teachers (why not just call their courses &#8220;programming&#8221;. That&#8217;s what they used to be called) are hapless followers of the university system. They&#8217;re less educated than the CS professors about what they do. From what I&#8217;ve heard about the standards committees that govern curriculum for the public schools, they&#8217;d have no clue about what &#8220;real CS&#8221; is if it was shown to them. This isn&#8217;t so much a gripe of mine as an acknowledgment that the public schools are not designed for teaching the different modes of thought that have been invented through the ages. There&#8217;s no point in complaining about a design, except to identify that it&#8217;s flawed, and why. The answer is to redesign the system and then criticize it if the intent of the design is not being met.</p>
<p>My sense of the historical ignorance in our field, having been a part of it since I was a teenager, is people take it as an article of faith that there&#8217;s been a linear progression of technological improvement. So why look at the old artifacts? They&#8217;re old and they&#8217;re obviously worse than what we have now. That&#8217;s the thinking. They don&#8217;t have to verify this notion. They know it in their bones. If they&#8217;re exposed to technical details of some of the amazing artifacts of the past, they&#8217;ll find fault with the design (from their context). How the design came about is not seen as valuable in and of itself. Only the usefulness that can be derived from it is seen as worthy. Most CS academics are not too distant from this level of ignorance. I get a sense that this comes from their own sense of inadequacy. They know they couldn&#8217;t design something like it. They wouldn&#8217;t expect themselves to. As far as they&#8217;re concerned electrical engineers and programming &#8220;gods&#8221; created that stuff. They also tend to not have the first clue about the context in which it was designed. They&#8217;ll pick out some subsystem that&#8217;s antiquated by what&#8217;s used now and throw the baby out with the bathwater, calling the whole thing worthless, or at best an antique that should be displayed dead in a museum. You may get the concession out of them that it was useful as a prototype for its time, but what&#8217;s the point in studying it now? The very idea of understanding the context for the design is an alien thought to them.</p>
<p>The designs of these old systems weren&#8217;t perfect. They were always expected to be works in progress. What gets missed is the sheer magnitude of the improvement that occurred, the leaps in thinking about computing&#8217;s potential, and what these new perspectives allowed the researchers to think about in terms of improving their designs, the quality of which were orders of magnitude greater than what came <em>before</em> them (that point is often missed in modern analysis). Technologists often have the mindset of, &#8220;What can this technology do for me <em>now</em>?&#8221; They take for granted what they have, as in, &#8220;Now that I know how to use and do this, that old thing over there is <em>ancient</em>! My god. Why do you think that thing is so amazing?&#8221;</p>
<p>Another thing I&#8217;ve seen people dismiss is the idea that the people who created those amazing artifacts had an outlook that&#8217;s any different from their own, except for the fact that they were probably &#8220;artists&#8221;. That&#8217;s a polite way of dismissing what they did. Since they were so unique and &#8220;out there&#8221;, many of their ideas can be safely ignored, rather like how many in the open source community politely dismiss the ideas of the Free Software Foundation, and Richard Stallman. The stance is basically, &#8220;Thanks, but no thanks.&#8221; Yes, they came up with some significant new ideas, but it&#8217;s only useful to study them insofar as some of their ideas helped expand the marketability of technology. Their other ideas are too esoteric to matter. In fact we secretly think they&#8217;re a little nuts.</p>
<p>As I have written about on this blog, I share Kay&#8217;s view that computing has great historical and societal significance. What I&#8217;ve come to realize is that most CS academics don&#8217;t share that view. Sure, they think computing is significant, but only in terms of doing things faster than we once did, and in allowing people to communicate and work more efficiently at vast distances. The reasons are not as simple as a closed-mindedness. Kay probably nailed this: Their outlook is limited.</p>
<p>What it comes down to is most computer science academics are not scientists in any way, shape, or form. They&#8217;re not curious about their field of work. They&#8217;re not interested in examining their own assumptions, the way scientists do. Yet they dominate the academic field.</p>
<p>I&#8217;ve given some thought to some analogies for the CS major, as it exists today. One that came to mind is it&#8217;s like an English major, because the main focus seems to be on teaching students to program, and to do it well. As I&#8217;ve said before, programming in the realm of computing is just reading and writing. Where the English major excels beyond what CS teaches is there&#8217;s usually a study of some classics. This doesn&#8217;t happen in most CS curricula.</p>
<p>In discussions I&#8217;ve heard among CS academics, they now regard the field as an engineering discipline. That sounds correct. It fits how they perceive their mission. What generally goes unrecognized is that good engineering is backed by good science. Right now we have engineering backed by <em>no science</em>. All the field has are rules of thumb created from anecdotal evidence. The evidence is not closely scrutinized to see where the technique fits in other applications, or if it could be improved upon.</p>
<p>I am not arguing for a field that is bereft of an engineering focus. Clearly engineering is needed in computing, but without a science behind it, the engineering is poor, and will remain poor until a science is developed to support it.</p>
<p>My own vision of a science of computing could be described as a &#8220;science of design&#8221;, whose fundamental area of study would be architectures of computing. Lately Alan Kay has been talking about a &#8220;systems science&#8221;, which as he talked about in the presentation I link to above, includes not just architecture, but a &#8220;psychology of systems&#8221;, which I translated to mean incorporating a concept of collective &#8220;behavior&#8221; in a system of interactive systems. Perhaps that&#8217;s a shallow interpretation.</p>
<p>As you can tell, I now hold a dim view of traditional CS. However, I think it would be disruptive to our society to just say &#8220;let it die&#8221;. There are a lot of legacy systems around that need maintaining, and some of them are damn important to our society&#8217;s ability to function. There&#8217;s a need for knowledgeable people to do that. At the same time, Kay points ahead to the problem of increasing system complexity with poor architectural designs. It&#8217;s unsustainable. So it&#8217;s not enough to just train maintainers. Our technological society needs people who know how to design complex systems that can scale, and if nothing else, provide efficient, reliable service. That&#8217;s just a minimum. Hopefully one day our ambitions will go beyond that.</p>
<h3><span style="text-decoration:underline;">The discussion we&#8217;re not having</span></h3>
<p>I happened to catch a presentation on C-SPAN last month by the National Academy of Engineering and the National Research Council on bringing engineering education into the K-12 curriculum (the meeting actually took place in September). I&#8217;m including links to the two-part presentation here, because the people involved were having the kind of discussion that I think that CS academics should be having, but they&#8217;re not. The quality of the discussion was top notch, in my opinion.</p>
<p><a href="http://www.c-spanvideo.org/program/288775-1" target="_blank">Engineering in K-12 Education, Part 1</a>, 3 hours</p>
<p><a href="http://www.c-spanvideo.org/program/288775-2" target="_blank">Engineering in K-12 Education, Part 2</a>, 2 hours</p>
<p>What was clear in this presentation, particularly in Part 2, was that the people promoting engineering in K-12 have a LOT of heavy lifting to do to achieve their goals. They are just at the infant stage right now.</p>
<p>Readers might be saying, &#8220;How can they possibly think of teaching engineering in primary school? What about all the other subjects they have to learn?&#8221; First of all, the organizations that held this event said that they weren&#8217;t pressing for adding on classes to the existing curriculum, because they understand that the existing school structure is already full of subjects. Rather, they wanted to try integrating engineering principles into the existing course structure, particularly in math and science. Secondly, they emphasized the engineering principles of design and systems thinking. So it didn&#8217;t sound like it would involve shoving advanced math down the throats of first graders, though teaching advanced math principles (again, principles, not drill and practice) in a fashion that young students can understand wouldn&#8217;t be such a bad idea. Perhaps that could be accomplished through such a curriculum.</p>
<p>I had a <a href="http://computinged.wordpress.com/2009/10/19/update-on-counting-cs-for-high-school-graduation-requirements-in-georgia/" target="_blank">discussion</a> recently with Prof. Mark Guzdial, some other CS professors, and high school teachers on his blog, related to this subject. Someone asked a similar question to what I posed above: &#8220;I agree [with what you say about a real science of computing]. But how in the world do you sell that to a K-12 education board?&#8221; I came to a similar conclusion as the NAE/NRC: Integrate CS principles wherever you can. For example, I suggested that by introducing linguistics into the English curriculum, it would then be easier to introduce concepts such as parse trees and natural language processing into it, and it would be germane. Linguistics is an epistemological subject. Computing and epistemology seem to be cousins. That was just one example I could think of.</p>
<p>If CS academics would actually think about what computing is for a while, and its relevance to learning, they wouldn&#8217;t have to ask someone like me these questions. I&#8217;m just a guy who got a BSCS years ago, went into IT for several years, and is now engaged in independent study to expose himself to a better form of CS in hopes of fulfilling a dream.</p>
<p>Universities need to be places where students actually get educated, not just &#8220;credentialed&#8221;. Even if we&#8217;re thinking about the economic prospects of the U.S., we&#8217;re fooling ourselves if we think that just by handing a student a diploma that they&#8217;re being given a bright future. Our civil and economic future is going to be built on our ability to think, perceive, and create, even if most of us don&#8217;t realize it. Our educational systems had best spend time understanding what it will take to create educated citizens.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Using the Phone as a Primary Development Platform]]></title>
<link>http://immanentizing.wordpress.com/2009/11/22/using-a-phone-as-a-primary-development-platform/</link>
<pubDate>Sun, 22 Nov 2009 03:35:17 +0000</pubDate>
<dc:creator>Austin McDonald</dc:creator>
<guid>http://immanentizing.wordpress.com/2009/11/22/using-a-phone-as-a-primary-development-platform/</guid>
<description><![CDATA[Paul Graham wrote an article criticizing Apple for driving programmers away from their App Store.  I]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Paul Graham wrote an article <a href="http://www.paulgraham.com/apple.html">criticizing Apple for driving programmers away from their App Store</a>.  I think I mostly agree with him.  His primary point is that, for a platform to succeed, you have to have programmers that like it and will make software for it.  Driving them away is shooting yourself in the foot.</p>
<p>He muses about a &#8220;killer app&#8221; for mobile phones that you could use to lure programmers away from Apple.  He suggests one such app would be a mobile phone development environment.  This sounds like an interesting problem.</p>
<p>The problem: Can you design a device that is small enough to use as a phone, which means you&#8217;d be willing to carry it everywhere and take calls on it and do the million other things people do on their phones these days, and yet you would also be willing to use as a development machine?</p>
<div class="wp-caption alignright" style="width: 240px"><a href="http://en.wikipedia.org/wiki/ASUS_Eee_PC"><img title="Asus EEE PC" src="http://upload.wikimedia.org/wikipedia/commons/a/a8/ASUS_Eee_White_Alt-small.png" alt="Asus EEE PC" width="230" height="197" /></a><p class="wp-caption-text">Asus EEE PC</p></div>
<p>This isn&#8217;t as far-fetched as it sounds.  I would expect most people to still have a primary development machine that has a full-size monitor and full-size keyboard.  But most programmers I know develop on their laptops when they&#8217;re on the go (on the bus, plane, or train, or out of town).  I think a reasonable goal would be to make a device that programmers would feel comfortable enough using that they don&#8217;t need that laptop.  Already people are moving to netbooks to satisfy that need.</p>
<p>The most obvious problems are in the realm of hardware.  Would people be willing to write code on a 4&#8243; screen?  Would they be willing to write code with a tiny keyboard?  Do phones even have enough power to compile and/or test code?</p>
<p>First, the screen size.  I don&#8217;t think this is as much an issue as the screen resolution, honestly.  You can fit a lot onto modern high-quality screens, provided the resolution is high enough, and the user is willing to hold it pretty close to his/her face.  Modern phones have 4&#8243; screens with 854 x 480 resolution which is probably high enough to display a decent amount of text on at a comfortable size (I remember monitors running at 640 x 480, or even 320 x 240 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).  I think you&#8217;d have to test this to be sure, but that should be a pretty fast test.  If you&#8217;re willing to go the custom-device route, you could make something that has a foldout screen, or even a foldout secondary screen (a la the DS), at the cost of bulk.</p>
<div class="wp-caption alignleft" style="width: 270px"><a href="http://www.handykey.com/"><img title="Twiddler" src="http://www.tekgear.ca/images/products/large/0022.jpg" alt="Twiddler" width="260" height="195" /></a><p class="wp-caption-text">Twiddler chorded keyboard</p></div>
<p>As for input, the keyboard on a G1 or Droid might suffice.  I don&#8217;t think an external keyboard would be the way to go; I&#8217;d have a hard time holding the phone close enough to my face to see the text, and also typing.  I&#8217;m about a hand too short.  So I think the keyboard needs to be built into the device, or have a docking station for the device.  A full-size external keyboard with a slot for the phone would be one way to go, but having to lug around a full-size keyboard, even if foldable, might be too much of a hassle.  One alternative route that I particularly like is to build a <a href="http://en.wikipedia.org/wiki/Chorded_keyboard">chorded keyboard</a> into the back of the phone.  I&#8217;m picturing something with 6-12 primary buttons and some secondary buttons (like maybe a trackball), with a flip-down cover for when not in use.  For existing devices, a separate Bluetooth chorded keyboard could be used &#8211; phone in one hand, keyboard in another.  Finally, a fold-out full size keyboard might also be a solution.</p>
<p>One of the key pieces would be the IDE itself.  One of the keys to utilizing the small screen real estate would be a very well designed UI.  All the pieces should slide away when not in use, and be accessible quickly through the keyboard.  Good autocompletion would be required.</p>
<p>I personally think that most, if not all, applications should be web-based in the future.  After all, a development environment isn&#8217;t much more than a fancy text editor.  Mozilla seems to have been working on a web-based IDE called <a href="https://bespin.mozilla.com/">Bespin </a>recently; the just released the text-editor portion as a developer preview.  One could imagine a remote server running Bespin (or something similar) that you just logged into from your phone; compilation (if necessary) is performed remotely, and settings are maintained between your phone and your work computer.  Other JavaScript-based text editors (that seem to be farther along) include <a href="http://www.mdk-photo.com/editor/">MDK Editor</a> and <a href="http://marijn.haverbeke.nl/codemirror/">CodeMirror</a>.</p>
<p>In fact, this makes me wonder why Google Code doesn&#8217;t let you edit source directly from the project page.  I imagine they&#8217;ll move in that direction soon; they look to be partway there with their <a href="http://code.google.com/apis/ajax/playground/">Code Playground</a>.</p>
<p>These are just some thoughts on how you could pull something like this off.  Would you develop from your phone if you could?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Operating Systems - Synchronisation]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-synchronisation/</link>
<pubDate>Sat, 21 Nov 2009 22:38:42 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-synchronisation/</guid>
<description><![CDATA[Process / Thread Synchronisation Note: This works the same way for processes and threads, so when I ]]></description>
<content:encoded><![CDATA[Process / Thread Synchronisation Note: This works the same way for processes and threads, so when I ]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; An Introduction]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/21/year-2-software-engineering-an-introduction/</link>
<pubDate>Sat, 21 Nov 2009 22:02:52 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/21/year-2-software-engineering-an-introduction/</guid>
<description><![CDATA[What is Software Engineering Software Engineering is basically just an engineering approach to build]]></description>
<content:encoded><![CDATA[What is Software Engineering Software Engineering is basically just an engineering approach to build]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Operating Systems - Process &amp; Thread Scheduling]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-process-thread-scheduling/</link>
<pubDate>Sat, 21 Nov 2009 21:33:32 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-process-thread-scheduling/</guid>
<description><![CDATA[Process &amp; Thread Scheduling Basic concepts If there are 2 processes in the ready state and only ]]></description>
<content:encoded><![CDATA[Process &amp; Thread Scheduling Basic concepts If there are 2 processes in the ready state and only ]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Operating Systems - Process Management]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-process-management/</link>
<pubDate>Sat, 21 Nov 2009 17:42:56 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/21/year-2-operating-systems-process-management/</guid>
<description><![CDATA[Process management This is handled by the process manager of the OS (see here) First a little histor]]></description>
<content:encoded><![CDATA[Process management This is handled by the process manager of the OS (see here) First a little histor]]></content:encoded>
</item>

</channel>
</rss>
