Personal Work Study
Oct. 7th, 2009 02:50 amOriginally published at AesTerra. You can comment here or there.
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’ll settle for anything that lets me get my hands dirty with programming for a livable paycheck.
With programming in mind, I’ve discovered that skills atrophy if you don’t use them. Having finished a Master’s degree in Business (because it was free2), I’ve discovered that not only have my implementation skills declined since 2006, but that I require a crash course in Computer Science.
I’ve decided to give myself precisely that. I’m already a reasonably good implementer and designer, having shipped professional products and an award-winning game.3 However, I acknowledge that I lack a good background in theory, particularly related to the analysis of algorithms, complexity theory, and software design methodologies.
In the interests of being entirely open about this process, and so others might benefit, here’s the "curriculum" I planned for myself. Where appropriate, I’ve noted any supplemental materials or abuses of notation:
- Analysis of Algorithms
- Study of time and space complexity from AB2007,5 especially Turing machines,
,
, and conjecture related to
- A complete read of Petzold 2000
- Study of The Elements of C++ Style (MBG 2004), for notational and software clarity
- A refresher of x86 Assembly, regarding compilers and low-level implementation
- A refresher of C implementation, regarding memory management and language structure
- A refresher of C++ implementation, particularly class structure and problems of inheritance
- Implementations of the more useful algorithms in C++6
- A refresher project, consistent with my interests in 3D design
- Simple scene graph utility, culminating in what I hope will be a networked game
- Simple scene graph utility, culminating in what I hope will be a networked game
- In no deliberate order, Brooks 1995, HT 1999, SH 2006, and related books
- A read of Programming Interviews Exposed (MS 2000), so I can actually make it in the door
The prerequisites I bring to the table:
- Three professional years with C/C++ and Python
- A familiarity with Windows and Linux from the kernel level forward
- Practical experience in industry, from my former position
- A significant mathematical and 3D background, from Engineering and Second Life development
Is there anything I’ve missed that might be interesting here? If so, let me know, so I may add it to the list.
Thanks for reading.
—
Notes:
1 See http://goldkin.livejournal.com/3204.html.
2 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.
3 The details are not listed here, in order to keep a search barrier between work and my personal life.
4 Notational abuse of equality consistent with CLRS 2001. Wikipedia states this in terms of set notation (
5 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.
6 This necessitates discussion on my workflow for a future post. For now, I use a mixture of Emacs, GCC, Subversion, and the GNU build system.
This post excludes reference books, such as Design Patterns, manuals, and programming documentation.