From what I understand MIT has moved a lot of its basic material over to Python from Scheme. Thus, python is a good choice in your situation. I will cover a little more about python later.
Learning concepts is much more important than learning a specific language.
What you don't want is to master 1 language and only those concepts. There are lots of programmers out there in that situation, lucky for them Java is the new Fortran.
Hopefully your goal is to be a programmer, not a programming language end-user.
Every language has its pros and cons and approach different concepts in different ways, learning multiple languages teach you not only to look at things differently but help show the tradeoffs.
Except PHP, don't bother with that absolutely poorly-designed hacked-up mess of a language, seriously, stay away. Pretty much any other language is worth learning.
C and Lisp(CL, Scheme, Clojure,etc) will cover just about all the major concepts. If you only learned these two languages approaching competence, you would be able to move from language to language with little effort as job opportunities arise.
Learning an actual functional language like Haskell or Scala will prove useful. With more and more processor cores, functional languages are the way through until processor architecture changes. A pure functional language trivializes parallelism.
Erlang would also be a good choice for learning parallelism.
To learn OO, you really need an actual language that embraces what OO is about: passing messages. Smalltalk, Ruby or OCaml would be perfect, Python not as much and Java and C++ not at all as they have brain-dead OO and type systems.
Learning various type systems is valuable. Strongly typed languages like Python and Ruby are great to learn because of they are much less fragile and rigid like Java. Type-inference is something to be aware of as it cleans up the negatives of both statically and dynamically typed languages. Haskell, Scala and OCaml are examples of these.
Python isn't a bad language to learn programming concepts, much much better than Java and better than C#, although C# isn't a terrible choice. Python is much less verbose than Java or C++, and not nearly as flexible as Ruby or a Lisp. Both of those attributes make it an ideal newbie language. This shouldn't surprise since Python is based heavily on ABC, a teaching language.
It can and is used for for advanced applications. It is heavily used in scientific applications, has been used successfully for 3D games(Eve is an example) , lots of security and system tools, and on the web. Lots of desktop apps use Python, especially KDE apps.
Python also supports a little bit of the more advanced functional concepts, so Python will help ease your entrance into those concepts.
Now, I am not a huge fan of Python, because its rigidness annoys me to no end, but it is a very good language, in production or learning. So don't label me a Python fan boy.
In my first year of CS studies I got to use C, C++, Java, Python, NASM and SPIM when learning. Sadly my school didn't use any Lisp language so I had to dig into that on my own.
I forget who made the suggestion to learn at least 1 language a year, but it is good advice. Lisp and Ruby are the two languages I learned on my own that advanced my abilities more than anything else. Both give me such a wider view of computation than C or Java ever could. I have no intention of stopping learning new languages. This is a field where constant self-education is required, unless you want to be simply the aforementioned language end-user.
Python and C should cover you for a lot of what you will learn. If I were you I would stick to these two for a while and then slowly bring in other languages.
You can learn Java eventually, but even simple programs can have so much boilerplate that the concept you are trying to learn gets lost.
A few general suggestions
When you learn simple data structures like a linked list, C would be great because it would help you learn pointers. Same for recursion but recursion is used more in functional style languages.
Python's OO isn't so hot, try Smalltalk or Ruby to really learn OO principles.
Don't forget to learn some discrete mathematics, very helpful. Programming is mathematics.
Don't just learn SQL, learn the actual relational model, so many people misunderstand it due to lack of mathematical foundation in set and relational theory. /pet_peeve
Also learn a little about alternative data storage like the so called NoSQL systems.
Also do not forget to learn how memory works, from processor cache to virtual memory. Very important concept no matter what languages you end up using.