I was a Discoverer (Class of 2005) at the Academy. I am a computer scientist at the University of Tulsa, with a focus on security.
I am a sporadic programmer with moderate skill in perl and C. I also know Java, but I don't really use it much. I'm also interested in math and education. (I know a great deal regarding politics and religion, but the debates have lost their novelty, so it's not really an interest anymore. Besides, nothing ever changes. Anybody that participates in such debates is not going to change their mind, rendering the debate itself quite useless.)
- A website
- A livejournal
- A Xanga (I don't use it a whole terrible lot.)
- A Blogger
- A gmail
- A jabber account: firstname.lastname@example.org
- An AIM account: chrostephir <defunct>
- An MSN account: email@example.com
Computing and Whatnot
I have received a request for advice concerning taking up programming. Of course it's not going to work the same for two people, but I'll give you my suggestions:
I suggest coming up with algorithms (step by step instructions) for tasks that you see every day. Up until this past semester I had barely done any programming, but all the time I would break down tasks into algorithms just to see if I could. I find this helps greatly because then when I'm programming, the algorithms come to me on the fly, and I simply have to fight with a language to get it to do what I want it to.
Get a copy of Linux and learn the command line. Having your development environment pretty much indistinguishable from your OS has the wonderful benefit that it's simple to make a dippy little program, and try it out without waiting for some damn IDE to load. Some people can develop for Windows and like it, but I can't. (Many people prefer the unity of BSD to Linux. Whatever blows your skirt up.)
Pick a language based on what you want it to do and then learn it. I like things fast, so I use C a lot. For programs that don't require a ridiculous amount of computation, require complex string manipulation, or I just want to make fast, I'll use perl. Mike would suggest using Python, as it's a high level object-oriented language, but in the end it's more or less equivalent with perl. Other languages available include C++, Java, Ruby, Prolog, Fortran, and Lisp (if you're a masochist). There are really quite a lot, so you should read up on them and decide which one suits your purposes best. Don't be surprised when you need to learn more than one language for different projects. It would indeed be silly to use just one language when two languages are each ideal for two separate parts.
Now all you've got to do is find a project that grabs your interest and start coding. You can't learn by reading and then go code. Sure you're going to be in way over your head, but it feels great when you're done and you realize just how much you've learned.
If you're using C, I suggest Practical C Programming by O'Reilly and the GNU libc manual. If you're using perl, then the Camel and Ram are your best friends. (If you do get into perl, email me, for I have obtained some outstandingly useful documentation.)
Finally, you're going to get stuck, so you need people that can very bluntly point out where you're going wrong. Usenet is an excellent place to find this. Individual.net had a good selection of newsgroups. Unfortunately, they're no longer offering their services free of charge, so I'll get back to you when I find a new news server. LinuxQuestions is great place for simple questions, but don't be surprised when about half of the answers are useless/halfassed. If you're going with perl, perlmonks, CPAN, and perldoc are all great resources.
Anyway, hope this helped, tell me where it needs work, or if anything is inaccurate. -Chrax