goldkin: i has book (Default)
[personal profile] goldkin

Originally 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
    • Basic Conceptual Analysis and Mathematical Theory
    • Asymptotic Analysis4
      • (Big) Θ Notation: f(n) = \Theta(g(n)); \Theta(g(n)) is a set tightly binding f(n)
      • (Big) Ω Notation: f(n) = \Omega(g(n)); \Omega(g(n)) \le \Theta(g(n)); \Omega(g(n)) \subseteq \Theta(g(n))
      • (Big) O Notation: f(n) = O(g(n)); O(g(n)) \ge \Theta(g(n)); O(g(n)) \subseteq \Theta(g(n))
      • Dominating sets (ω and o), topically
    • Complexity Analysis
      • Study of time and space complexity from AB2007,5 especially Turing machines, P, NP, and conjecture related to P \neq NP
    • Every interesting algorithm shared by CLRS 2001 and HPS 20085
    • Study of the problem archive from TopCoder.com (requires login).
    • SPOJ and UVa Online Judge have also been suggested to me. Thanks, Kistaro!


  • Architecture and Implementation
    • 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


  • Design Theory, Methodologies, and Practicalities:
    • 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 (\in), but I find the method used in CLRS to be more elegant in formal 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.

Date: 2009-10-12 03:31 am (UTC)
ext_366168: (pic#66894579 systems nerdy electronics)
From: [identity profile] zeightyfiv.livejournal.com
In Seattleland, you might try investigating what you can leech from the University of Washington, officially or surreptitiously -- they've got a really good CS program. If nothing else, there's the twice weekly speaker seminar which is pretty well open to the public... though that won't teach you basic theory. (There's also a good professional master's program, though that wouldn't do you any good until you have a job with tuition reimbursement.)

You could also start a company. :P

Date: 2009-10-13 08:17 am (UTC)
From: [identity profile] goldkin.livejournal.com
Possibly. I'm actually not terribly concerned about my lack of CS in the long term, nor am I looking to get another degree.

After all, folks like [livejournal.com profile] kistaro have been extremely helpful so far, and I have a mental framework that's adapted to teaching myself advanced topics. This is especially true when it comes to technical or mathematical subjects that are well documented.

The trouble is really twofold. The first issue is ensuring I'm up to snuff as a contributor, which is more than most people consider upon taking on a new job. The second is making sure I know all the right theory to be able to cut through a technical screen in a horrendous economy. That's much harder, given the process may be entirely irrational.

Overall, the most difficult task is overcoming my own paranoia. With the job market and my own relatives telling me I should give up and work retail, it's all I can do to stay focused and keep coding. And the more I do, the more likely I'll be picked up by a technical company.

...

By the way, are you out in Seattleland, Z?

Date: 2009-10-25 07:48 am (UTC)
ext_366168: (Default)
From: [identity profile] zeightyfiv.livejournal.com
Hm. I know there's no way I'd be able to stay focused through that much material. Would wander off on a tangent or forget about the whole enterprise. :P

Randomly, you might not want to put an emphasis on gamey stuff now. Consumer luxuries get hit hard during recessions, and game investments tend to have a short half-life. (E.g. most of MS's layoffs were in consumer stuff and games, afaik, while Windows is still hiring.)

No, not in Seattle nowabouts. Grew up there, though. Stop by every so often.

Date: 2009-10-26 02:14 am (UTC)
From: [identity profile] goldkin.livejournal.com
So noted. I seem to have passed the phone screen, so we'll see what happens beyond that! :)
From: (Anonymous)
www.buynice.org - Оптовый поставщик минеральной косметики Мёртвого моря по всему миру|Интернет-магазин Health and Beaute

October 2015

S M T W T F S
    12 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 01:51 am
Powered by Dreamwidth Studios