6

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!

Andrei Fierbinteanu
  • 7,656
  • 3
  • 31
  • 45
Richard
  • 61
  • 1
  • 2

9 Answers9

8

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
  • 2,971
  • 2
  • 22
  • 32
7

Python is a great language to learn with.

Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358
6

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
  • 82,968
  • 29
  • 138
  • 152
3

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.

Community
  • 1
  • 1
soulBit
  • 438
  • 6
  • 15
1

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
  • 88,451
  • 51
  • 221
  • 321
  • 1
    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 May 25 '10 at 11:42
1

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
  • 2,815
  • 17
  • 12
0
  1. I haven't gone through that course but considering it is an Introductory course I would assume it is just fine for a beginner. And since it is an MIT course I can also guess that it is quite good.

  2. Python is a good language to start with because it is easy to pick up. However, on the flip side it is easier in part because it is a very high level language. This means that you might not learn some of the more basic and important programming concepts by learning Python. I started by learning C++, then the third language I learned was Python and it seemed sooo easy to learn Python after learning C++. But this gave me an understanding of why it is quicker and easier to use Python, because the language does some stuff for you that you have to do manually in C++, but knowing how to do those things is important because not every language is as high level as Python. Still though it makes the hurdle to getting acquainted with programming smaller.

  3. There are tons of great resources for beginners to learn programming. From MOOCs at sites like MIT OpenCourseWare, Udacity, Coursera, etc. to websites devoted to teaching coding like Code Academy, TreeHouse, CodeSchool, etc. to online books and tutorials like thenewboston.com, tutorialspoint.com, how to think like a computer scientist (book teaches python), How to Learn the Hard Way (a variety of languages have these tutorials), http://www.reddit.com/r/carlhprogramming/?count=375&after=t3_9ot7r (for learning programming basics and C), and so many more resources. Best to find them is just to google beginner programming resources.

theCodeBear
  • 79
  • 1
  • 5
0

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
  • 1,407
  • 3
  • 17
  • 37
0

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

Aravind Yarram
  • 78,777
  • 46
  • 231
  • 327