<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx</link><description>I believe I received as good of a computer science education as exists. This essay is not targeted at my education, nor any other particular school, faculty, nor individual, but rather how computer science is generally taught across the board. In fact</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#508172</link><pubDate>Fri, 30 Dec 2005 11:11:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:508172</guid><dc:creator>Fredrik</dc:creator><description>I graduated from the Computer Science department at the University of Sheffield (England) earlier this year, and although I definitively agree with you we did actually have a fairly substantial amount of functional programming lectures (Prolog &amp;amp; Haskel most notably). Apart from those ventures however, the rest was Java (although I did my dissertation with .NET, and a few times we were allowed to choose what language to use for assignments).&lt;br&gt;&lt;br&gt;What I was missing however was less focus on the APIs themselves, and more on higher-level ideas that could be applied across the boards - design patterns and such. That said, the aspect of my course that dealt with software design, specifications and teamwork was excellent.</description></item><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#508207</link><pubDate>Fri, 30 Dec 2005 18:10:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:508207</guid><dc:creator>tzagotta</dc:creator><description>I agree with your basic thesis - that software engineers should be fluent with various languages - but I don't think the problem is as extreme as you state.  Most programming problems - say 80% - can be addressed efficiently with &amp;quot;conventional&amp;quot; OO programming, and realistically, any one of the top languages will do - C++, Java, C#, and VB.  Let's call that the &amp;quot;80% solution.&amp;quot;  In these cases, either the individual developer is free to choose the language they are most proficient at, or if they are part of a work group, they will typically accept the language choice already made by the group.  This is what you call the &amp;quot;everything looks like a nail syndrome.&amp;quot;  I think this is actually very practical.&lt;br&gt;&lt;br&gt;The balance of programming jobs are more interesting - maybe a scripting language like Perl or Phython is needed.  Maybe the &amp;quot;code&amp;quot; will run in an FPGA, so VHDL is needed.  Maybe assembly.  Maybe SQL or XQuery.  These are the cases where a software engineer proficient at picking up and using different languages, and being able to wrap their minds around different paradigms will be able to get the job done.&lt;br&gt;&lt;br&gt;In the CS degree, I agree that the job there is to provide the basic foundation for teaching the compartive differences between different paradigms - for example, what the difference is between C++ and XQuery - not at a syntax level, but a higher level.  I also thing that specialized classes should force students to learn a new language - for example, a database class should teach and the students should work in SQL, and not Java.  But for learning basic &amp;quot;traditional&amp;quot; OO programming, I don't think it makes any difference if students learn Java, C++, C#, or VB.</description></item><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#508219</link><pubDate>Fri, 30 Dec 2005 19:31:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:508219</guid><dc:creator>kanggatl</dc:creator><description>Hi tazagotta, I'm afraid I wasn't clear enough.  I agree that if you're doing OO programming simply knowing one or two OO languages is sufficient.  I was really trying to say that leaving college being proficient at OO only is not sufficient.  You really should be proficient at multiple paradigms, and fluent at various languages that can express these various paradigms.  Furthermore, you'll be able to examine different types of problems through that lens.  &lt;br&gt;&lt;br&gt;Using objects for every problem only makes sense when working through a textbook on object-oriented programming.  Unfortunately, most people use object-oriented programming for every task, when often a better solution may be more appropriate.  A good read is from Paul Graham here &lt;a rel="nofollow" target="_new" href="http://www.paulgraham.com/noop.html"&gt;http://www.paulgraham.com/noop.html&lt;/a&gt;.  &lt;br&gt;&lt;br&gt;If more people were proficient in more paradigms I think we'd see more solutions where we use more than just standard Algol languages, and the decisions on which paradigm to use would make sense because they thought through them.  &lt;br&gt;&lt;br&gt;But I do agree that if you're doing OO programming then using C++, C#, and VB.NET are your best bets.  But ask yourself -- why am I using objects?  Is this the best way to express the problem I'm trying to solve?  I think a lot of people would see they're cramming their problem space into a class hierarchy where they don't need one.</description></item><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#509193</link><pubDate>Wed, 04 Jan 2006 17:58:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:509193</guid><dc:creator>Harish</dc:creator><description>Kang,  &lt;br&gt;&lt;br&gt;In your opinion, would you not think that C++ is a multi-paradigm programming language.  &lt;br&gt;&lt;br&gt;For example, in C++ you can use the Procedural programming paradigm, you can use the Object Oriented Paradigm, and more recently you can now use the Generic programming paradigm all with in one language.&lt;br&gt;&lt;br&gt;Obviously, the problem space determines which paradigm is to be used.  &lt;br&gt;&lt;br&gt;One last thing:  sometimes it is not commercially viable to use a different programming language.  As an example, I haven't heard of any commercial software systems being implemented with the Eiffel programming language.  Although I may be completely wrong about this.&lt;br&gt;&lt;br&gt;Harish&lt;br&gt;</description></item><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#509463</link><pubDate>Thu, 05 Jan 2006 04:33:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:509463</guid><dc:creator>kanggatl</dc:creator><description>Hi Harish, I do consider C++ multiparadigm, although doesn't cover everything.&lt;br&gt;&lt;br&gt;There are software systems built with Eiffel.  Not many that I know of, but there are some. </description></item><item><title>perspectives from the industry</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#509873</link><pubDate>Fri, 06 Jan 2006 02:50:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:509873</guid><dc:creator>Wojtek</dc:creator><description>UBC used to be such a school - &lt;br&gt;year 1: scheme and C++&lt;br&gt;year 2: C++, perl and Java&lt;br&gt;year 3: scheme, C, C++, Java...&lt;br&gt;&lt;br&gt;had to program in at least 3 different langauges in any given semester after year 1. I found it very hard as there was not enough time to master either language.&lt;br&gt;&lt;br&gt;I don't fully agree with you though - it takes a lot of time and effort to learn one language well, and at least for me, it is pretty much impossible to master more than one. I used to be a pretty good Java programmer but had to switch to C++ 1.5 years ago. When I went back to write a small Java program 2 months ago, I found out, much to my dispair, that now I code Java using C++ idioms.&lt;br&gt;&lt;br&gt;Programming is tough and for an average guy siwtching from one language to another to implement a medium to large industrial strength application is not realistic. In fact my employer now has a policy of using just one language for all the development, something I disagree with, but understand the practical motives behind it.</description></item><item><title>re: What Should Change in Comp Sci Education</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#510532</link><pubDate>Sun, 08 Jan 2006 10:50:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:510532</guid><dc:creator>Robert W. Anderson</dc:creator><description>Good post, Kang Su. I talk about this a bit too in my post.  I'm waiting to hear what you have to say about MapReduce.&lt;br&gt;&lt;br&gt;Cheers,&lt;br&gt;Robert</description></item><item><title> Kang Su s Blog What Should Change in Comp Sci Education | debt solutions</title><link>http://blogs.msdn.com/kangsu/archive/2005/12/29/508166.aspx#9790319</link><pubDate>Fri, 19 Jun 2009 19:36:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9790319</guid><dc:creator> Kang Su s Blog What Should Change in Comp Sci Education | debt solutions</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://debtsolutionsnow.info/story.php?id=13481"&gt;http://debtsolutionsnow.info/story.php?id=13481&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>