<?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>AesTerra &#187; software design</title>
	<atom:link href="http://aesterra.com/index.php/tag/software-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://aesterra.com</link>
	<description>Words in the Sea of Electrons</description>
	<lastBuildDate>Mon, 18 Jan 2010 23:38:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Personal Work Study</title>
		<link>http://aesterra.com/index.php/2009/10/07/personal-work-study/</link>
		<comments>http://aesterra.com/index.php/2009/10/07/personal-work-study/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 02:50:21 +0000</pubDate>
		<dc:creator>Goldkin</dc:creator>
				<category><![CDATA[computer science]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[software design]]></category>

		<guid isPermaLink="false">http://aesterra.com/?p=182</guid>
		<description><![CDATA[While my job situation continues1, I find myself in an interesting spot.

Specifically, I am between professional careers, attempting to move from what was essentially a startup, to a higher paid, professional organization. Of these, I hope to get into Microsoft or Google, but I&#8217;ll settle for anything that lets me get my hands dirty with [...]]]></description>
			<content:encoded><![CDATA[While my job situation continues<sup>1</sup>, I find myself in an interesting spot.<br />
<br />
Specifically, I am between professional careers, attempting to move from what was essentially a startup, to a higher paid, professional organization. Of these, I hope to get into Microsoft or Google, but I&#8217;ll settle for anything that lets me get my hands dirty with programming for a livable paycheck.<br />
<br />
With programming in mind, I&#8217;ve discovered that skills atrophy if you don&#8217;t use them. Having finished a Master&#8217;s degree in Business (because it was free<sup>2</sup>), I&#8217;ve discovered that not only have my implementation skills declined since 2006, but that I require a crash course in Computer Science.<br />
<br />
I&#8217;ve decided to give myself precisely that. I&#8217;m already a reasonably good implementer and designer, having shipped professional products and an award-winning game.<sup>3</sup> However, I acknowledge that I lack a good background in theory, particularly related to the analysis of algorithms, complexity theory, and software design methodologies.<br />
<br />
<br />
In the interests of being entirely open about this process, and so others might benefit, here&#8217;s the &quot;curriculum&quot; I planned for myself. Where appropriate, I&#8217;ve noted any supplemental materials or abuses of notation:<br />
<br />
<ul><li> Analysis of Algorithms<br />
<ul><li> Basic Conceptual Analysis and Mathematical Theory<br />
<li> Asymptotic Analysis<sup>4</sup><br />
<ul><li> (Big) Θ Notation: <a href="http://wordpress.org/extend/plugins/easy-latex/" target="_blank" title="f(n) = \Theta(g(n))"><img src="http://l.wordpress.com/latex.php?latex=f%28n%29%20%3D%20%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" style="vertical-align:-20%;" class="tex" alt="f(n) = \Theta(g(n))" /></a>; <a href="http://www.Thulasidas.com/latex" target="_blank" title="\Theta(g(n))"><img src="http://l.wordpress.com/latex.php?latex=%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" style="vertical-align:-20%;" class="tex" alt="\Theta(g(n))" /></a> is a set tightly binding <a ><img src="http://l.wordpress.com/latex.php?latex=f%28n%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" style="vertical-align:-20%;" class="tex" alt="f(n)" /></a><br />
<li> (Big) Ω Notation: <img src="http://l.wordpress.com/latex.php?latex=f%28n%29%20%3D%20%5COmega%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="f(n) = \Omega(g(n))" style="vertical-align:-20%;" class="tex" alt="f(n) = \Omega(g(n))" />; <img src="http://l.wordpress.com/latex.php?latex=%5COmega%28g%28n%29%29%20%5Cle%20%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="\Omega(g(n)) \le \Theta(g(n))" style="vertical-align:-20%;" class="tex" alt="\Omega(g(n)) \le \Theta(g(n))" />; <img src="http://l.wordpress.com/latex.php?latex=%5COmega%28g%28n%29%29%20%5Csubseteq%20%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="\Omega(g(n)) \subseteq \Theta(g(n))" style="vertical-align:-20%;" class="tex" alt="\Omega(g(n)) \subseteq \Theta(g(n))" /><br />
<li> (Big) O Notation: <img src="http://l.wordpress.com/latex.php?latex=f%28n%29%20%3D%20O%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="f(n) = O(g(n))" style="vertical-align:-20%;" class="tex" alt="f(n) = O(g(n))" />; <img src="http://l.wordpress.com/latex.php?latex=O%28g%28n%29%29%20%5Cge%20%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="O(g(n)) \ge \Theta(g(n))" style="vertical-align:-20%;" class="tex" alt="O(g(n)) \ge \Theta(g(n))" />; <img src="http://l.wordpress.com/latex.php?latex=O%28g%28n%29%29%20%5Csubseteq%20%5CTheta%28g%28n%29%29&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="O(g(n)) \subseteq \Theta(g(n))" style="vertical-align:-20%;" class="tex" alt="O(g(n)) \subseteq \Theta(g(n))" /><br />
<li> Dominating sets (ω and o), topically<br />
</ul><li> Complexity Analysis<br />
<ul><li> Study of time and space complexity from <a href="http://www.cs.princeton.edu/theory/complexity/" target="_blank" title="CS Theory @ Princeton: &quot;Computational Complexity: A Modern Approach&quot;">AB2007</a>,<sup>5</sup> especially Turing machines, <img src="http://l.wordpress.com/latex.php?latex=P&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="P" style="vertical-align:-20%;" class="tex" alt="P" />, <img src="http://l.wordpress.com/latex.php?latex=NP&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="NP" style="vertical-align:-20%;" class="tex" alt="NP" />, and conjecture related to <img src="http://l.wordpress.com/latex.php?latex=P%20%5Cneq%20NP&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="P \neq NP" style="vertical-align:-20%;" class="tex" alt="P \neq NP" /><br />
</ul><li> Every interesting algorithm shared by <a href="http://books.google.com/books?id=NLngYyWFl_YC" target="_blank" title="Google Books: &quot;Introduction to Algorithms, Second Edition&quot;">CLRS 2001</a> and <a href="http://books.google.com/books?id=qhaOxkQANEgC" target="_blank" title="Google Books: &quot;Algorithms in a Nutshell&quot;">HPS 2008</a><sup>5</sup><br />
<li> Study of the problem archive from <a href="http://www.topcoder.com" target="_blank" title="TopCoder: Main Page">TopCoder.com</a> (requires login). <br />
<li><a href="http://www.spoj.pl/" target="_blank" title="Sphere Online Judge: Main Page"><em>SPOJ</em></a> and <a href="http://uva.onlinejudge.org/" target="_blank" title="UVa Online Judge: Main Page"><em>UVa Online</em></a> Judge have also been suggested to me. Thanks, <a href="http://kistaro.livejournal.com/" target="_blank" title="LiveJournal: Kistaro Windrider, Reptillian Situation Assessor"><em>Kistaro</em></a>!<br />
<br />
<br />
</ul><li> Architecture and Implementation<br />
<ul><li> A complete read of <a href="http://books.google.com/books?id=gYlQAAAAMAAJ" target="_blank" title="Google Books: &quot;Code: The Hidden Language of Computer Hardware and Software&quot;">Petzold 2000</a><br />
<li> Study of <em>The Elements of C++ Style</em>  (<a href="http://books.google.com/books?id=Qx2-GiRSq6oC" target="_blank" title="Google Books: &quot;The Elements of C++ Style&quot;">MBG 2004</a>), for notational and software clarity <br />
<li> A refresher of x86 Assembly, regarding compilers and low-level implementation<br />
<li> A refresher of C implementation, regarding memory management and language structure<br />
<li> A refresher of C++ implementation, particularly class structure and problems of inheritance<br />
<li> Implementations of the more useful algorithms in C++<sup>6</sup><br />
<li> A refresher project, consistent with my interests in 3D design<br />
<ul><li> Simple <a href="http://en.wikipedia.org/w/index.php?title=Scene_graph&#038;oldid=303665985" target="_blank" title="Wikipedia: &quot;Scene graph&quot; (303665985)">scene graph</a> utility, culminating in what I hope will be a networked game<br />
<br />
<br />
</ul></ul><li> Design Theory, Methodologies, and Practicalities:<br />
<ul><li> In no deliberate order, <a href="http://books.google.com/books?id=Rvl0QQAACAAJ" target="_blank" title="Google Books: &quot;The Mythical Man-Month: Essays on Software Engineering&quot;">Brooks 1995</a>, <a href="http://www.pragprog.com/the-pragmatic-programmer" target="_blank" title="PragProg.com: &quot;The Pragmatic Programmer: From Journeyman to Master&quot;">HT 1999</a>, <a href="http://www.pragprog.com/titles/pad/practices-of-an-agile-developer" target="_blank" title="PragProg.com: &quot;Practices of an Agile Developer&quot;">SH 2006</a>, and related books<br />
<li> A read of <em>Programming Interviews Exposed</em> (<a href="http://books.google.com/books?id=KJ1PAAAAMAAJ" target="_blank" title="Google Books: &quot;Programming Interviews Exposed: Secrets to Landing Your Next Job&quot;">MS 2000</a>), so I can actually make it in the door<br />
</ul></ul><br />
<br />
The prerequisites I bring to the table: <br />
<ul><li>Three professional years with C/C++ and Python<br />
<li>A familiarity with Windows and Linux from the kernel level forward<br />
<li>Practical experience in industry, from my former position <br />
<li>A significant mathematical and 3D background, from Engineering and Second Life development</ul><br />
<br />
Is there anything I&#8217;ve missed that might be interesting here? If so, let me know, so I may add it to the list.<br />
<br />
<br />
Thanks for reading.<br />
<br />
&#8212;<br />
<br />
Notes:<br />
<br />
<sup>1</sup> See <a href="http://goldkin.livejournal.com/3204.html" title="http://goldkin.livejournal.com/3204.html" target="blank">http://goldkin.livejournal.com/3204.html</a>.<br />
<br />
<sup>2</sup> By family faculty benefit. I was given an ultimatum to finish my studies prior to the end of the year, so I chose to use my existing credits for a one year degree. Since the college closed their MIS program, that left me with a generic MBA.<br />
<br />
<sup>3</sup> The details are not listed here, in order to keep a search barrier between work and my personal life.<br />
<br />
<sup>4</sup> Notational abuse of equality consistent with <a href="http://books.google.com/books?id=NLngYyWFl_YC" target="_blank" title="Google Books: &quot;Introduction to Algorithms, Second Edition&quot;">CLRS 2001</a>. <a href="http://en.wikipedia.org/w/index.php?title=Big_O_notation&#038;oldid=317645733#Matters_of_notation" target="_blank" title="Wikipedia: &quot;Big O Notation, Matters of Notation (317645733)&quot;">Wikipedia</a> states this in terms of set notation (<img src="http://l.wordpress.com/latex.php?latex=%5Cin&#038;bg=e7d9b2&#038;fg=000000&#038;s=0" title="\in" style="vertical-align:-20%;" class="tex" alt="\in" />), but I find the method used in CLRS to be more elegant in formal notation.<br />
<br />
<sup>5</sup> Restating the material contained in these books would be tedious in what is already a long post. I may, however, post interesting implementations from my own code tree in future posts.<br />
<br />
<sup>6</sup> This necessitates discussion on my workflow for a future post. For now, I use a mixture of Emacs, GCC, Subversion, and the <a href="http://en.wikipedia.org/w/index.php?title=GNU_build_system&#038;oldid=313371533" target="_blank" title="Wikipedia: &quot;GNU build system (313371533)&quot;">GNU build system</a>.<br />
<br />
This post excludes reference books, such as <em>Design Patterns</em>, manuals, and programming documentation.]]></content:encoded>
			<wfw:commentRss>http://aesterra.com/index.php/2009/10/07/personal-work-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
