Self Taught Computer Science


Over the last year I've felt as if I've reached a plateau. I cannot put my finger on why this is or why IProgramming-Plateau.png feel like this but regardless of what programming language I use C/Perl/Java I feel like I'm just moving boxes. This is not the first time I have felt like this either.

I don't think this is a problem with the languages I'm using I think its more of a problem with me and the applications I tend to be working on.

After a while (not a very long while) developing CRUD applications loses its appeal. Developing network apps, GUI's etc.... they all start to look dull when you've done them a few times. My experience with GUI's is very limited so the above statement is an assumption in that regard.

I have no idea why this is but I'm sure that the more experienced programmer could probably shed some light on this. I personally think that unless something stretches your ability it will eventually lose it's novelty.

Though, surely as a programmer who loves to program I should be able to entertain myself in almost any application I write but for me this does not seem to be the case. I've never been one for mental wanking and I would prefer not to start. Over complicating an application just to keep it interesting doesn't appeal to me in the slightest. I watch programmers fall into this trap all the time and its sad to see them commit this cardinal sin. The worst thing is having to watch them explain their contraption as if it's a simple solution when it's obviously a complicated  mess of a thing. Don't get me wrong I've been guilty of this sin and in quite a few cases been oblivious of it. Its almost as bad as the Not Invented Here syndrome so prevalent in our trade.

I personally think my main problem is that I do not feel as if I am getting any better. I look at old applications and where I would normally see a dozen ways to improve it I see two or none. I know I've not learnt all there is to know and I know I will never learn all there is to know about this subject so why have I hit this wall. Have I reached the limits of my ability or is this a normal phenomenon that programmers go through?

My opinion is that I am seeing things through the wrong goggles. Most of my education has been self taught so its been led mostly by interest as opposed to formally taught. I've been studying with the Open University for several years now in order to get some background mathematics etc but I still think there are areas that I need to improve on in particular around Computer Science.

Unfortunately the Open University computing courses are more geared towards popular topics, Java etc in order to attract more students. Having done a few of their computing courses I wish I hadn't bothered because I gained more from my own work than I did from the taught courses. I cannot say the same thing about the mathematics though. I decided to start mathematics because I knew that whatever I learnt would be applicable regardless of the current fashion or trends in industry.

Having looked around this for some time I have decided that what I need to do is to start my own computer science program to build on the mathematics I'm doing with the Open University. The areas I'm really interested in is how to go about writing my own computer language, compiler, virtual machine etc so I've been looking around to see what other universities are doing and what books they are using in this area.

Having done a fair bit of looking I spotted a definite trend towards functional languages and the further I looked into this the more I noticed that All Roads Lead To Lisp. Or to scheme or to some variant thereof. Abstracting a bit further I am being steered towards learning a functional language. The two languages that interest me the most in this area are Scheme and Haskell. Now all I need to do is decide what books and resources I need to start a course in this area. Most resources online point towards Structure and Interpretation of Computer Programs (SICP) in order to get started so I am looking at this now. I am not sure if I'll try and tackle Haskell until I get a bit more familiar with scheme although having looked at Haskell the language is appealing to me.

Watch this space for more installments on my self taught Comp Sci education!

Add to delicious Digg This Add to My Yahoo! Add to Google Add to StumbleUpon
| | Comments (2) | TrackBacks (0)

0 TrackBacks

Listed below are links to blogs that reference this entry: Self Taught Computer Science.

TrackBack URL for this entry: http://www.hjackson.org/mt/mt-tb.fcgi/269

2 Comments

Paul Nasrat Author Profile Page said:

You might want to look at the courseware available at MIT, some include audio/video lectures

http://ocw.mit.edu/OcwWeb/web/home/home/index.htm

For CompSci:

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm

It just has supporting docs for SICP:

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm

Intro to Algorithms has lectures:

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/index.htm

If you want a remote "study buddy" I'm also interested in pushing myself further this year, SICP seems like a good starting place.

Glen Scott Author Profile Page said:

Very interesting post, Harry.

I think learning a new language is a great way to get past those brick walls that we can hit every once in a while. I played around with Lisp several years ago after becoming bored with C++ and Java, and it was a great experience. I can't say that I ever wrote anything particularly useful in Lisp, but it was the experience that was refreshing and made me come back to more familiar languages with new approaches and ideas.

Interesting that you mention SICP. There is a little review of it here, along with some other recommendations for hackers: http://grok-code.com/11/the-top-9-in-a-hackers-bookshelf/

Leave a comment

About this Entry

This page contains a single entry by Harry published on December 7, 2008 9:04 PM.

Reading was the previous entry in this blog.

Learning Computer Science is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.01