I learned Illustrator several years ago in a course at a local community college whose lab and classrooms computers are PCs using Windows XP. The college has one classrom that uses Apple computers.

The challenge is the college's Multimedia department uses mostly the latest version of Adobe applications including Photoshop, Illustrator, Flash, Dreamweaver, and Premiere Pro and teaches JavaScript and PHP programming.

The Computer Science department teaches C++ and Java programming and does not use Visual Studio and therefore does not teach either C# or VB in its programming coures.

Eight to twelve years ago this same college taught Visual Basic using Visual Studio.

While I have asked the college for several years to teach courses using Expression Studio, Visual Studio and SQL Server they simply do not have the budget to support credit courses with this software.

Microsoft must provide the software for at least three years to the local colleges or they will continue to be frozen out by Adobe applications, the Open Source crowd, and C++ , Java and PHP programming languages.

Microsoft giving the software away for free to students is a great idea.

Unfortunately, many colleges remain locked in to Adobe applications for implementing web sites with the JavaScript and PHP programming languages.

Looks like the same college might be teaching an ASP.NET in the spring.

However, to date they do not have the budget for buying Visual Studio and SQL Server.

Forget about them buying Expression Studio.

Suggest Microsoft give colleges for a period of five years the latest versions of Visual Studio, Expression Studio and SQL Server for free and have Microsoft Evangelists actively promote this and the free student software to as many colleges and universities
as possible.

For young students wanting to become web designers and web deveopers, many local colleges are not exposing students to Microsoft's applications for the simple reason they do not have the money to buy Microsoft software in addition to Adobe's.

Young and hip college students are in many instances not even aware of Microsoft Expression Studio and Visual Studio existence.

Besides the allocation and copying, there is potentially wasted space (and the larger your growth rate, the worse that will get), heap fragmentation, and potentially additional cache misses. In a managed environment such as Java or .Net there is also the
costs of zero-initializing the re-allocated array as well as added GC pressure (although this will likely be negligable).

Yes, in many cases this won't make much difference. But in some rare cases, it might. Never make assumptions, and always measure before you optimize.

By the way, you could run an algorithm O(nlogn) algorithm on a system that has no cache and have it outperform a system that has oodles of cache that is running a O(n^2) algorithm. You just need to increase the input size and it follows from limit laws in
Calculus that the lower complexity algorithm will be faster. Hacks like a cache or compiler optimizations will not change that.

Is Microsoft only offering it for free in Belgium or do other countries get the software for free too? If the Belgian government is subsidizing it, it really is not free, even though the costs are hidden from the university.

I think a lot of it happens to do with the web application trends ...as well as mobile projects. A lot the new guys coming out aren't even students. ...and they use languages like ruby...python, i'm actually enjoying Scala more than my initial look at
Ruby...(i'm actually just getting back into programming as I was interested in it in HS for a while and took a long hiatus) is still used, javascript is actually becoming popular and being looked at/designed? in new ways.

Also we're hitting at point where a lot of them don't want/desire to work for large companies but instead start their own *garage companies* and/or work in small teams.

Like when you look at a lot of the "popular" projects coming out...twitter, facebook, etc...while they're not necessarily popular for a lot of programmers,...it's a generational thing...they're obviously very popular and widely used. None of those things
are SEEMINGLY made with microsoft OR even 'apple'. Yes they may run OS, Apple, etc(I use linux exclusively for the last 3 years strangely enough). They just want to get it done. They want to make a cool project and by that I don't mean a 3d robot emulator
or some project that manipulates your clipboard. They want 'social' projects...so I think that's where the 'scare' articles are going. Honestly the way that I see it...and this is hard to explain so it's going to come out awful... There seems to be "creative
artist type that also decides to learn to program to make what he imagines" vs a "scientist or engineer" type battle. You have the guy that knows .NET very well and is excited about adding a certain encryption to his authentication system and then you have
someone that wants to 'start' the next facebook. The funny thing is both types need each other. Apple isn't really in the battle because they have their small niche of 'nuts'. Unless you're working on a ipod/ipad application, etc...you're not using XCode
and you're not spending $100 to HAVE THE RIGHTS TO LEARN HOW TO USE THE TOOL. As for M$ tools...they're so widely used they're not going anywhere BUT it would be a good idea for them to start looking at a more open arena *which they are* and aim more at not
just a microsoft crowd but one that allows people to build for whatever/where ever they want. Like if anyone watched Googles I/O conference yes they bragged and tooted the google horn but a lot of the really cool stuff had nothing to do with google and more
so html5(which yes google has it's hands on), javascript, etc and the fact that operating systems may play a much smaller role soon. [breathes...ok my rants over. there's my .30 cents, lol]

By the way, you could run an algorithm O(nlogn) algorithm on a system that has no cache and have it outperform a system that has oodles of cache that is running a O(n^2) algorithm. You just need to increase the input size and it follows from limit laws in
Calculus that the lower complexity algorithm will be faster. Hacks like a cache or compiler optimizations will not change that.

Which is why Big O notation isn't the end-all of performance evaluation that some people think it is.

If you go strictly by Big O notation, both Larry's second version of the string replacement algorithm and my alternative version with find are O(n). Yet Larry's version is obviously faster.

Big O ignores the constants which makes it of only very limited use in real world optimization.

Is Microsoft only offering it for free in Belgium or do other countries get the software for free too? If the Belgian government is subsidizing it, it really is not free, even though the costs are hidden from the university.

I've heard rumors that Microsoft developers like to get paid for their efforts to aquire luxuries like food and shelter. - But sure, that just means it isn't free for Microsoft!

That said, it makes perfect sense to pour free or inexpensive software on academia to capitalize on research and gain mind share.

Which is why Big O notation isn't the end-all of performance evaluation that some people think it is.

If you go strictly by Big O notation, both Larry's second version of the string replacement algorithm and my alternative version with find are O(n). Yet Larry's version is obviously faster.

Big O ignores the constants which makes it of only very limited use in real world optimization.

I think another issue with Big-O notation in real life application is that most of the time, we say something like resizing on average has little impact over time as n approaches infinity.

But, you usually know n or at least have a sense of what n will be under a given scenario. If you were to plot on a graph the growth rate of different pieces of an algorithm, you need not look at where the plot ends with very large n. You would deal with
some fixed frame at the very beginning of the plot, which might look completely different than what you would see with large n. In the case with resizing, it does have a performance impact for small n which probably should not be overlooked.