views:

336

answers:

8

Hi everyone! Im new here and also new to developing software and programming, and with new I mean 0 experience or schooling for it.

As Im currently studying medicine via internet and I use a computer on an average of about 8-9 hours a day, this has lead me to get very interested in programming. I got a link from a fellow Redditor and I got some questions before I dive into this project.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm

  1. Is this too much/hard for a beginner?
  2. Is Python™ programming language the way to go or would I be better off learning some other kind of language to begin with?
  3. What other ways of learning basic programming by myself is there? Are there any better ways for a complete beginner to start off?

Thank you for your time!

+7  A: 

Python is a great language to learn with.

Ignacio Vazquez-Abrams
+6  A: 

IMHO, Python is the way to go. You can have a look at Google's introduction courses to Python which are pretty useful.

Good luck!

Emilien
+3  A: 

Being medicine your primary field, a language with a nearly flat learning curve as Python is the best choice for you.

You can get open source tutorials and books like A bite of python, Dive into python, The python intro by Norman marloff and others (just google for python tutorials). The series of How to Think like Computer Scientist books try to introduce you in program design. The last incarnation for python is Think Python: An Introduction to Software Design.

Although these tutorials are very useful, for a more academic and comprehensive learning of the language I would recommend Learning Python from Mark Lutz.

For the practice of research in medicine, you should also study a lot of maths, specially statistics, including methods for data representation. Maths are also a must for any computer science curriculum. Python offers you very good libraries for that such as numpy/scipy and matplotlib. Matplotlib has a very complete tutorial.

If you are directing your studies to the more molecular side of biomedical research, Python will provide you of very powerful tools. For example, take a look at biopython for handling genomic and proteomic data. There is an interesting tutorial on Python for biologist from the Pasteur Institute

joaquin
A: 

There are a lot of languages that are good for beginners, and you can learn the same concepts from any of them. A good programmer with good instincts should be able to learn to use any language. You didn't explain enough on what it is you want to do with programming, since each language is strong for a particular purpose.

I'm personally a fan of either Python or Java. C/C++ are tougher to start with.

One drawback of Python is that some of its error messages are, IMHO, more cryptic than those of Java. This can be frustrating as a developer. Python also, in my opinion, needs to get its act together in terms of compatibility. There's Python 2.* and Python 3.*, and they're not fully compatible and in some ways evolve indirectly.

If you want to learn more about computer science rather than programming, pick up a good algorithms book like CLR.

Uri
Python 3.* is _designed_ to be partially incompatible with Python 2.* (what everybody actually use while batteries get ported to py3k) -- that's the whole point about the major version number change. Backwards compatibility can be a huge burden: http://docs.google.com/viewer?url=http://www.informit.com/content/images/9780321440303/samplechapter/Chen_bonus_ch01.pdf
badp
+3  A: 

Wow, so many Python advocates!

Whichever language you choose, the most important thing to remember is that you should start off small and learn the basics first. Starting with a language like Python that has a small learning curve will help you to cement the basics, without getting bogged down in the more advanced concepts that may put you off - however this doesn't mean that starting off with something more advanced is going to hinder you!

I personally started off with Java (with a bit of C/C++ on the side), and don't feel this has restricted my development in any way...

The course spec that you gave seems like a good start in Object Orientated Programming, and I would also recommend supplementing your learning with some additional reading on the various types of languages that are used, and why each one is useful. You may not understand a lot of the concepts at first, but keep referring back to them and soon enough you will start to get an idea of how and why things are working they way they are.

Above all: Practice, practice, practice - I can't state this enough! Every single line of code you write, every book you read will teach you something new. Every new language you attempt to learn will contribute towards your understanding of programming, and programming design!

The best example to get you going (you will learn to love/hate this) is the "Hello World" program that forms the starting point for all programming languages since the dawn of time - Python example, Java example.

soulBit
@soulBit: I’ve taken the liberty of fixing the hyperlinks. Good answer!
Konrad Rudolph
-1 not enough python :P
badp
(The above comment is a humorous reference to http://www.doxdesk.com/img/updates/20091116-so-large.gif)
badp
@Konrad: Thanks for fixing this, although it seems I have enough reputation now to do it myself :)
soulBit
+1  A: 

Course 6.00 (your link) looks like a general introduction to programming. It uses Python, rather than being a Python tutorial. Probably a good start to see if you're really interested in this topic.

If you want a solid foundation to writing and understanding programs (as opposed to the syntax of a particular language), course 6.01, Structure and Interpretation of Computer Programs, is classic. It uses Scheme as its language and will probably take a lot more work to get through than 6.00. On the other hand, you'll get a lot more out of it.

mpez0
A: 

I too am brand new to programming though have chosen the C# route due to me having done a module at high school in C.

I have learnt primarily from a book (Beginning C# 3.0, by Jack Purdum), i have been studying this book since February this year and took my first delivered course last week. It was a Microsoft Introduction to C# (MS2069), having done alot of work in my own time it gave me a leg up when hitting the course last week, although these are introductory courses they cover alot of content alot of which i don't, and didn't understand. The pace of the courses varies, though i found mine very fast, i would always advise doing some prior studying of your own before enrolling, and paying for a 3rd party course to maximise your chances of getting everything you can from the course.

I would also recommend C# as a first language, without any prior programming experience i am finding C# remarkably easy to read and understand, ever new code seems to make sense whilst i am reading through it.

Stephen Murby
A: 

I like your enthusiasm. I started my career in computer science not by learning a programming language but the fundementals like below 1) computer organisation 2) operating systems theory 3) fundementals of programming (any prog langauge) 4) data structures 5) Compiler design and principles 6) dbms concepts

Pangea