views:

150

answers:

6

Hi,

I'll be taking a Python-based computer science class next semester using my MacBook Pro. It will be centered around a custom-designed package for this class. The problem is that this package is being sponsored by Microsoft Research, so it was obviously designed with Windows in mind. Supposedly, it runs on Mac OS and Linux too, but they say they don't officially support Snow Leopard whatsoever.

My concern is that there will be some sort of miniscule differences between the Python code on a Mac and on a PC. The homework is submitted online, and is graded for results. Apparently, they don't actually look at the code itself.

Is this a concern? Should I install Windows in a VM/partition and be done with it? Or should I stay where I feel most comfortable? After all, switching back and forth constantly would be a huge hassle. Thanks for your help!

+9  A: 

If the class expects the code to run on Windows then I would install a VM with Windows on it since it is possible that some things may not work quite the same way (especially if you are doing system-specific things like file-system access or executing OS commands).

Classwork/homework always goes smoother when you have the exact same environment as the professor and the rest of the class.

Andrew Hare
My programming assignments (in C) for Operating Systems class were expected to run on our University server running Mac OS X. I wrote my code on my Linux machine but had to upload them and double check on the server. Turns out semaphores worked differently on the two systems. In any case, it's a good idea to at least have it to double check your results.
Corey D
Yeah, I figured this would probably be the best answer. You definitely make a good point though. Any slight variation could cause a huge headache, especially on group assignments. Thanks for your help!
Chris Long
+4  A: 

Definitely start with Mac. If it turns out that it really does need Windows, you can switch once you're sure. But Python development is definitely more natural on a Unix-based machine.

Most online graders will let you submit multiple times, and the first assignment is usually easy, so you should know pretty quickly if using a Mac is causing you problems. In the meantime though, you'll have a much smoother ride doing Python on a Mac than on Windows.

jboxer
+3  A: 

If they will be testing your code on windows then you really need to be targeting that platform. However if you feel more comfortable on the Mac, do your dev there but also run a virtual win machine so you can test on the target platform. I would suggest the excellent VirtualBox. You can share local folders with the VM, which reduces the pain of switching back and forth, once the VM has python setup you can just hop in and and run the code direct from the directory on the Mac you developed in.

Mark Pitchless
+3  A: 

From their site it looks like Mac is fully supported (up to 10.5 -- it's true that 10.6 is different enough to give occasional problems... I haven't upgraded yet even though I did buy a family pack of 10.5 to 10.6 upgrades, as I'm not looking for trouble right now). If you can use a Macbook with 10.5, I'd say to go for it -- the familiarity and extra productivity are worth the miniscule risk that despite all their claims of support something goes wrong (and you can in fact download and start testing right now!). If your Mac options are limited to 10.6, then I'd go for a VMWare or Parallels VM with a Windows (not sure if Windows 7 is fully supported yet, maybe XP is a more prudent option) installation instead.

Alex Martelli
Unfortunately, I already upgraded to 10.6. I guess I'll go with VMware. I don't think I could ever go back to Leopard now! ;)
Chris Long
A: 

Go Mac and never go back.

More seriously, a Mac offers UNIX environment, and Windows offers blue screens.

Arrieta
Apart from the Windows bashing, was there a point to this post?
Adam Luchjenbroers
+2  A: 

Develop and test on a Mac. If it works on the Mac, then test it on Windows before submitting. Done this tons of times with my own programming courses, albeit with a different set of languages and technologies.

Michael Aaron Safyan