<?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>./cmsimike &#187; education</title>
	<atom:link href="http://www.cmsimike.com/blog/tag/education/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cmsimike.com/blog</link>
	<description>thoughts from a computer scientist</description>
	<lastBuildDate>Sun, 08 Jan 2012 22:20:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPhone Development &#8211; Is It Really That Easy? (fin)</title>
		<link>http://www.cmsimike.com/blog/2009/08/17/iphone-development-is-it-really-that-easy-fin/</link>
		<comments>http://www.cmsimike.com/blog/2009/08/17/iphone-development-is-it-really-that-easy-fin/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 22:04:46 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone development experiment]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[rapid development]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=166</guid>
		<description><![CDATA[I guess I&#8217;ve lagged on completing this blog entry series for long enough.
Indeed I was able to complete my application in the time frame I set out for. The application itself worked pretty well. I know I could have made it a lot better if I were actually able to get the application onto my [...]]]></description>
			<content:encoded><![CDATA[<p>I guess I&#8217;ve lagged on completing this blog entry series for long enough.</p>
<p>Indeed I was able to complete my application in the time frame I set out for. The application itself worked pretty well. I know I could have made it a lot better if I were actually able to get the application onto my iPhone during the development phase or have the simulator use the iTunes library as the basis for its library. I am now debating whether or not I want to put the application up on Apple&#8217;s App Store.</p>
<p><span id="more-166"></span></p>
<p>My final conclusion regarding the iPhone SDK and Objective-C shouldn&#8217;t be surprising &#8211; yes the SDK made development simple. Other than the weird memory management of Objective-C, it too was also fairly easy to learn. But at the end of the day, a language is just a language. The SDK has to be fairly robust in order to attract developers as well as help with the interaction of the phone. I&#8217;d almost say it was a pleasure to develop for the iPhone, but I won&#8217;t. I won&#8217;t because due to Apple&#8217;s policies on how the app gets onto a phone (even if you want to use a development phone), made developing for it pretty rough. Development would have been much better if I didn&#8217;t have a media player aspect to my application, however it did and since the simulator cannot simulate playing media off an iPhone&#8217;s library and since there were a thousand hoops that needed to be jumped through in order to get the app on the phone itself, it just made everything much rougher than it should have been. One can argue that you really only have to jump through the hoops once, but even in this case, once is far too much. Allow applications to be easily put on your own iPhone, Apple. Why do I have to pay you $100/year for the privilege of getting applications that I write onto my own phone?</p>
<p>I&#8217;m so glad that it is easy to jailbreak iPhones. Any developer that wants to develop applications for personal use for the iPhone should just jailbreak their iPhone and upload it that way. Don&#8217;t pay Apple money for something as asinine as this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/08/17/iphone-development-is-it-really-that-easy-fin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the Subjects of object == null and collection.size() == 0</title>
		<link>http://www.cmsimike.com/blog/2009/07/28/on-the-subject-of-object-is-null-and-collection-size-equals-0/</link>
		<comments>http://www.cmsimike.com/blog/2009/07/28/on-the-subject-of-object-is-null-and-collection-size-equals-0/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 20:38:12 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[mistake]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=161</guid>
		<description><![CDATA[Let&#8217;s just get one thing straight here people, an object that is null does not mean the same thing as a collection/array of length zero. I&#8217;m sort of seeing this more and more as I continue my existence on this planet and I say we put a stop to this now. Take this example method [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s just get one thing straight here people, an object that is null does not mean the same thing as a collection/array of length zero. I&#8217;m sort of seeing this more and more as I continue my existence on this planet and I say we put a stop to this now. Take this example method declaration (written in Java):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> Collection<span style="color: #339933;">&lt;</span>SearchResult<span style="color: #339933;">&gt;</span> getSearchResults<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> searchTerm<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Straight forward enough, I would hope. This method takes in a searchTerm String, magic happens (ah abstraction), and a Collection of type SearchResult is returned. Now here is the kicker: what happens if the search query resulted in no results? What should be returned? And why?</p>
<p><span id="more-161"></span></p>
<p>At this point, we essentially have two options if we want to successfully return from this method without using exceptions: return null or return a Collection of type SearchResult of size n | n >= 0;</p>
<p>When returning a Collection, the size indicates how many SearchResults there were. If someone were to search for &#8220;cows&#8221; and the Collection contained 23 SearchResult objects, then we should say that the search had 23 results. Contrary to that, if there are 0 SearchResult objects then we can say that the search had no results.</p>
<p>When null is returned instead of a Collection, that can only mean that something has gone wrong. For instance, the search could not be completed for any reason. This should be the only reason a null should be returned. </p>
<p>By returning a null if a search has been successfully completed, even if there are no results, tells the caller that there may have been an error, which is not what you want to communicate. Returning null should be the worst case scenario in a circumstance like this. It is the duty of the implementer of the getSearchResults method to fully communicate the actual status of things by returning what is the most correct in any situation. </p>
<p>Please do not return null lightly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/07/28/on-the-subject-of-object-is-null-and-collection-size-equals-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone Development &#8211; Is It Really That Easy? (part 4)</title>
		<link>http://www.cmsimike.com/blog/2009/07/18/iphone-development-is-it-really-that-easy-part-4/</link>
		<comments>http://www.cmsimike.com/blog/2009/07/18/iphone-development-is-it-really-that-easy-part-4/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 04:08:12 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone development experiment]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[rapid development]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=155</guid>
		<description><![CDATA[I didn&#8217;t post yesterday mainly because I knew I wasn&#8217;t going to be doing any development last night. I needed to take a night off, so this post is about what I did two nights ago.
A couple of nights ago I decided that I should just start with my application and learn as I go. [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t post yesterday mainly because I knew I wasn&#8217;t going to be doing any development last night. I needed to take a night off, so this post is about what I did two nights ago.</p>
<p>A couple of nights ago I decided that I should just start with my application and learn as I go. This actually turned out to be a pretty good idea. I didn&#8217;t have much time code at full stream, so I took the opportunity and what little time I had to set up the bare bones application, and by that I mean take what I learned in the &#8220;Hello, World&#8221; iPhone development example. I set up the buttons and label using Interface Builder as well as all the code that links up to the buttons and label.</p>
<p>There are two main parts left in my application: firing events and music control. Firing events I am working on right now which seems to be pretty straight forward. To be honest, if I wasn&#8217;t goofing around using NSLog I would probably be done with it right now. I am watching Star Wars as I code so my attention is split pretty evenly between the two.</p>
<p>Sunday, once I finish with some family time, I will get into the bulk of the music player. Thankfully I started this project after iPhone software 3.0 was released because, as it seems, controlling/playing music was not available to developers in earlier versions.</p>
<p>Wat?</p>
<p>Not sure how Apple could have thought that was a good idea. At least they saw the errors of their ways.</p>
<p>Thoughts so far: this is much easier than I had anticipated. Also setting up a new iPhone application from scratch and using Interface Builder is much easier the second time around.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/07/18/iphone-development-is-it-really-that-easy-part-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone Development &#8211; Is It Really That Easy? (part 3)</title>
		<link>http://www.cmsimike.com/blog/2009/07/15/iphone-development-is-it-really-that-easy-part-3/</link>
		<comments>http://www.cmsimike.com/blog/2009/07/15/iphone-development-is-it-really-that-easy-part-3/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 01:03:54 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone development experiment]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[rapid development]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=151</guid>
		<description><![CDATA[Having completed Apple&#8217;s Hello World tutorial application, I feel like the application I want to write will not be that hard to do. I just wish that I had more time to actually learn the language and SDK in its entirety before jumping into it. After running through the demo application, I think that the [...]]]></description>
			<content:encoded><![CDATA[<p>Having completed Apple&#8217;s Hello World tutorial application, I feel like the application I want to write will not be that hard to do. I just wish that I had more time to actually learn the language and SDK in its entirety before jumping into it. After running through the demo application, I think that the application that I want to write will be pretty easy to do using the language, but alas &#8220;easy to do&#8221; means nothing without fully knowing your tool set. But I guess that is the bulk of this experiment; can this application get done in such a short amount of time with very little prior knowledge?</p>
<p><span id="more-151"></span>Thoughts so far: Why did Apple take the idea of Visual Basic&#8217;s interface builder and seemingly make it more complicated to use? And really, a <a href="http://en.wikipedia.org/wiki/Interface_Builder" target="_blank">NIB file</a> (read about it)? Also, development without a mouse or a second monitor is barbaric. I think that the hardest part of this experiment is living without a second monitor or mouse. Sadly due to the way my environment is set up at home, a second monitor or mouse is not easy to use with a laptop.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/07/15/iphone-development-is-it-really-that-easy-part-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone Development &#8211; Is It Really That Easy? (part 2)</title>
		<link>http://www.cmsimike.com/blog/2009/07/14/iphone-development-is-it-really-that-easy-part-2/</link>
		<comments>http://www.cmsimike.com/blog/2009/07/14/iphone-development-is-it-really-that-easy-part-2/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 23:44:53 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone development experiment]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[rapid development]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=148</guid>
		<description><![CDATA[Yesterday, I began the (about) 10 day long experiment to see if I could  learn about the iPhone development process then actually write something useful. Though I haven&#8217;t written anything, I thought it would be important to at least get familiar with the language itself, Objective-C. I saw down with Apple&#8217;s Objective-C primer and [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I began the (about) 10 day long experiment to see if I could  learn about the iPhone development process then actually write something useful. Though I haven&#8217;t written anything, I thought it would be important to at least get familiar with the language itself, Objective-C. I saw down with Apple&#8217;s Objective-C primer and read through it. Though rather short, it did provide quite a bit of detail regarding the language syntax and semantics. Thankfully it no longer is totally foreign to me, but as I thought I still think the syntax is pretty hideous.</p>
<p><span id="more-148"></span></p>
<p>Tonight&#8217;s main objective is to get through the &#8220;Hello, World!&#8221; iPhone application and write that out long with the example and go through the demo application that kind of has to do with what I want to do with the application that I am writing. If there is time, I&#8217;d like to start the application tonight. I don&#8217;t think that will happen though, not because I am lazy, but looking up unknown Objective-C and iPhone API references will probably take a while. Getting familiar with Xcode also will be a hassle, I believe.</p>
<p>Thoughts so far: Why would anyone go to such far lengths to push their language onto everyone?</p>
<p>Note: If I get about half way into this and it is looking to be somewhat impossible, I will be switching gears and rewriting the application in another language, not because I am going to give up on iPhone development (unless what I want to do proves impossible due to Apple&#8217;s limitations on the iPhone SDK) but more so because I want this working application for a trip I am going on next Thursday (2009-07-23). I would continue with this application once I get back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/07/14/iphone-development-is-it-really-that-easy-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Development &#8211; Is It Really That Easy?</title>
		<link>http://www.cmsimike.com/blog/2009/07/13/iphone-development-is-it-really-that-easy/</link>
		<comments>http://www.cmsimike.com/blog/2009/07/13/iphone-development-is-it-really-that-easy/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 23:27:54 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone development experiment]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[rapid development]]></category>

		<guid isPermaLink="false">http://www.cmsimike.com/blog/?p=146</guid>
		<description><![CDATA[I&#8217;ve managed to avoid this dirty topic, however I shouldn&#8217;t any longer since I am going to begin on an experiment. How easy can it possibly be to make an iPhone application? Can a simple one be created in about 10 days time? Most would say &#8220;Yes,&#8221; however I have no prior experience with Objective-C, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve managed to avoid this dirty topic, however I shouldn&#8217;t any longer since I am going to begin on an experiment. How easy can it possibly be to make an iPhone application? Can a simple one be created in about 10 days time? Most would say &#8220;Yes,&#8221; however I have no prior experience with <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a>, let alone the <a href="http://developer.apple.com/iphone/index.action" target="_blank">iPhone SDK</a>, or <a href="http://developer.apple.com/tools/xcode/index.html" target="_blank">Xcode</a>. With all these unknowns, can sufficient knowledge be picked up and put to use to write a rather trivial application for the iPhone?</p>
<p><span id="more-146"></span>I am not really sure on how much detail I can get into without breaking Apple&#8217;s NDA (yes I should figure that out) but I estimate a prototype application to be written in a language that I already know in about 6-10 hours time. Since I will only have about 3-5 hours a night to sit down, learn Objective-C and the iPhone SDK, then apply everything I know I am actually pretty curious myself to see how this goes.</p>
<p>From this <a href="http://www.apple.com/pr/library/2008/06/09iphone_sdk.html" target="_blank">Apple press release</a>:</p>
<blockquote><p>“The SDK allowed us to build a groundbreaking new AIM client in record time,” said Kevin Conroy, executive vice president, AOL. “The platform’s elegance and ease of use has inspired our developers to create innovative new web and SDK based experiences for iPhone and iPod touch.”</p></blockquote>
<p>I can&#8217;t help but think what I want to do is simple and can be done in the allotted time. I think it is going to be pretty interesting getting over my own preconceived notions on Objective-C. That will probably be my first real order of business beyond sitting down with some &#8220;Learn Objective-C basics&#8221; webpages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2009/07/13/iphone-development-is-it-really-that-easy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn to Code with Google Code University</title>
		<link>http://www.cmsimike.com/blog/2008/03/19/learn-to-code-with-google-code-university/</link>
		<comments>http://www.cmsimike.com/blog/2008/03/19/learn-to-code-with-google-code-university/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 20:12:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[courses]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[opencourseware]]></category>

		<guid isPermaLink="false">http://www.xekm.com/blog/?p=13</guid>
		<description><![CDATA[One thing that I have yet to commented much on, at least in this blog, is my love of education. If I had the resources available to me right now, I would have already begun my Masters in Computer Science coursework, then promptly start my Ph.D. However at this point in my life that cannot [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that I have yet to commented much on, at least in this blog, is my love of education. If I had the resources available to me right now, I would have already begun my Masters in Computer Science coursework, then promptly start my Ph.D. However at this point in my life that cannot be [easily] done. How ever, thanks to free courses online, I never feel like I am missing out on further educating myself.</p>
<p><span id="more-13"></span></p>
<p>I was first turned on to this kind of online education with <a href="http://ocw.mit.edu/OcwWeb/web/home/home/index.htm" title="M.I.T. OpenCourseWare" target="_blank">M.I.T OpenCoruseware</a>. It provided a multitude of information at the right price, free. Although you do not end up with a degree at the end of taking these courses, it provides a great facility for anyone to spend time and learn. And really, what good is daily life if one doesn&#8217;t learn anything new? Well M.I.T. provides a great University perspective on this, but I always felt there needed to be another perspective available.</p>
<p>Today I came across <a href="http://code.google.com/edu/" title="Google Code University" target="_blank">Google Code University</a>. It is a series of online courses, much like M.I.T. is offering, however Google&#8217;s main focus is current technologies. From the website:</p>
<blockquote><p> This website provides tutorials and sample course content so CS students and educators can learn more about current computing technologies and paradigms. In particular, this content is Creative Commons licensed which makes it easy for CS educators to use in their own classes.</p></blockquote>
<p>It looks like Google is trying to expose people to more of the &#8220;real world&#8221; of computer science, which I am all for. Many are the students that graduate from computer science programs only to find out that what they have learned is not reflective of real world applications. With Google&#8217;s new course, it seems like they are trying to push for further education beyond the typical university level for individuals, as well as making it easier for universities to integrate Google&#8217;s courses into the actual university curriculum.</p>
<p>I have yet to sit down with Google&#8217;s online offering, but I do believe we already have a winner. Slow adaptation and integration of current technologies only leads to prolonged exposure to antiquated methodologies. Not to say that everyone should move to the latest and the greatest, because rarely is the latest ever the greatest, however through Google&#8217;s offering one is able to get a taste of current technologies and make an educated guess if the technology would work for a certain circumstance rather than blindly starting out and only finding out after 1/4 of the project time is over that the technology being used is completely wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmsimike.com/blog/2008/03/19/learn-to-code-with-google-code-university/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

