views:

98

answers:

5

I'm a marketer and have been messing around in PHP/MySQL for years. Recently (the last several months) I've been making my own scripts/programs in Python and I've really enjoyed the whole problem solving process.

I've read(skimmed) some books and understand the basics of OOP, polymorphism, etc.. I have a general interest in AI and Natural Language in particular but it seems these things require a masters in Computer Science. My knowledge of math is poor. The last class I took was calculus, and I've forgotten the majority of it.

Basically I'm looking for things to learn that will help me think in a more analytic way, and maybe see solutions where I didn't before. Improving my ability to program in Python would be nice too.

I don't need to learn a specific language or something for employment, just enjoyment. Although my work often involves web development so some utility would be nice. I don't like learning concepts by just reading them. I need to apply them, even if the examples are contrived. A recommendation of a couple good books or other resources would be nice. :)

Apologies if this is too vague/misplaced...

+1  A: 

I've read(skimmed) some books and understand the basics of OOP, polymorphism, etc.

Exercise that knowledge by writing in an OO language, and that additional language will itself bring new options to your coding. (With a base of PHP, the obvious choice would be using JavaScript to put functionality into the clients of your web application).

Once you are happy with that second language add a third, and a fourth, ... There is a lot to be said for learning a new language every year. (And it will take time to understand new paradigms, there is a lifetime of learning out there.)

Richard
+1  A: 

I have a general interest in AI and Natural Language in particular but it seems these things require a masters in Computer Science.

Not really. Research breakthroughs in artificial Intelligence and natural language are rare. No one knows how to do these things really well, although progress and improvements have been made in the last 50 years or so. These are hard topics.

Basically I'm looking for things to learn that will help me think in a more analytic way, and maybe see solutions where I didn't before.

This is general problem solving. This skill is not limited to computer programming.

You're probably past this, but here's a general problem-solving process.

Pick one computer language. After you've spent about 6 months studying the syntax of the language, study the design patterns for that language. Learning the design patterns will definitely help you think in a more analytic way.

Gilbert Le Blanc
+1  A: 

Go to projecteuler.com, try to solve them.

Lajla
+2  A: 

You need a project to do. That will limber up your problem-solving skills. Some project ideas I used to suggest in class:

  • A little "banking" program to keep track of household finances.
  • A little program to keep track of investments.
  • Some sort of game, like a little baseball simulation, or an adventure game with rooms and doors.
  • A science program, like a program to simulate genetics.
  • Simulate a sailboat race.
  • A program to play music.
  • A program to draw interesting pictures.
  • etc.

You fill in the details. It's got to be simple and fun. Don't "bite off more than you can chew", like real-time 3D graphics (unless you think you can do it).

I had one student, a sweet young Asian woman, who simulated a relationship - Barbie vs. Ken.
It was Brutal !! But it was educational...

Mike Dunlavey
A: 

The free book Think Python: How to Think like a Computer Scientist teaches many programming concepts like:

  • Encapsulation - grouping code into functions
  • Generalization
  • Composition - calling one function from another
  • Recursion - having a function call itself
  • Debugging concepts
  • Incremental development

At the same time it is full of practical examples and exercises. The answers to the exercises are given on the book's website.

Geoffrey Van Wyk