<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Whats lacking in CS Degrees nowadays (Part 1)</title>
	<atom:link href="http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/</link>
	<description>Thoughts and factoids from the Real Shyam. You know, unlike those fake ones!!</description>
	<lastBuildDate>Wed, 21 Apr 2010 17:05:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Shyam</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-108</link>
		<dc:creator>Shyam</dc:creator>
		<pubDate>Fri, 21 Aug 2009 21:27:23 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-108</guid>
		<description>Oh I completely agree that the intent is to apply what theoretical knowledge we have gained back out in the field. But my gripe is that 1.) You seldom have the knowledge to know what else is available, ending up reimplementing something that already exists
2.) You are used to writing throwaway code or non maintainable code that becomes either your own or someone else&#039;s headache. Most people eventually do learn to become Software Engineers (though I shudder when I remember the ones that didn&#039;t make that leap), my argument is that it could very easily be alleviated by atleast some amount of coursework that is currently non existent.</description>
		<content:encoded><![CDATA[<p>Oh I completely agree that the intent is to apply what theoretical knowledge we have gained back out in the field. But my gripe is that 1.) You seldom have the knowledge to know what else is available, ending up reimplementing something that already exists<br />
2.) You are used to writing throwaway code or non maintainable code that becomes either your own or someone else&#8217;s headache. Most people eventually do learn to become Software Engineers (though I shudder when I remember the ones that didn&#8217;t make that leap), my argument is that it could very easily be alleviated by atleast some amount of coursework that is currently non existent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rezmason</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-107</link>
		<dc:creator>Rezmason</dc:creator>
		<pubDate>Fri, 21 Aug 2009 21:09:42 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-107</guid>
		<description>I think my previous post skipped a beat. I meant to say, we study computer science theory (and not metallic floating sandwiches) because we intend to apply CS theory to real computing. There is an inherent intent to apply what we study when we study it.</description>
		<content:encoded><![CDATA[<p>I think my previous post skipped a beat. I meant to say, we study computer science theory (and not metallic floating sandwiches) because we intend to apply CS theory to real computing. There is an inherent intent to apply what we study when we study it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rezmason</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-106</link>
		<dc:creator>Rezmason</dc:creator>
		<pubDate>Fri, 21 Aug 2009 21:06:48 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-106</guid>
		<description>I don&#039;t think there is a place for theory without some practical grounding. Bam, there. Maybe that hurts to hear, but someone has to say it.

Consider this. &quot;Theory&quot; may consist of anything one reasons about, but we choose to study the theoretical aspects of computing (instead of, say, the theoretical aspects of metallic floating sandwiches). Because of this, teachers who cover a theory are obligated to also eventually  demonstrate how that theory can be applied. This is so sensible, it seems obvious.

Now consider this. Every semester, hundreds of thousands of CS students sit in a course that teaches them about operating systems. They learn plenty, and although they themselves might never go on to create an OS, they hope to at least apply their knowledge to other, adjacent tasks.

But in real life, a product as complicated as an operating system is usually created by a whole group of people. Using the reasoning above, isn&#039;t it sensible that students expect from their teachers the practical knowledge that will allow them to contribute to such a group? Doesn&#039;t this go without saying?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think there is a place for theory without some practical grounding. Bam, there. Maybe that hurts to hear, but someone has to say it.</p>
<p>Consider this. &#8220;Theory&#8221; may consist of anything one reasons about, but we choose to study the theoretical aspects of computing (instead of, say, the theoretical aspects of metallic floating sandwiches). Because of this, teachers who cover a theory are obligated to also eventually  demonstrate how that theory can be applied. This is so sensible, it seems obvious.</p>
<p>Now consider this. Every semester, hundreds of thousands of CS students sit in a course that teaches them about operating systems. They learn plenty, and although they themselves might never go on to create an OS, they hope to at least apply their knowledge to other, adjacent tasks.</p>
<p>But in real life, a product as complicated as an operating system is usually created by a whole group of people. Using the reasoning above, isn&#8217;t it sensible that students expect from their teachers the practical knowledge that will allow them to contribute to such a group? Doesn&#8217;t this go without saying?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arun Srinivasan</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-75</link>
		<dc:creator>Arun Srinivasan</dc:creator>
		<pubDate>Tue, 04 Aug 2009 06:32:37 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-75</guid>
		<description>Computer science and engg in Colleges :

1. theory - the backend layer 
2. application, projects - the middleware
3. co-op and internship building you to be a better engineer - app layer.

However beautiful the app layer is, if the backend like db design or interaction layers sucks, u r bound to be a failure. Thats why it&#039;s easy (I am generalizing here) for an above avg engineer to become fully rounded prof than some above avg student (above avg, exceptions/anomalies  are bound to be found everywhere) from community college learning applications :)</description>
		<content:encoded><![CDATA[<p>Computer science and engg in Colleges :</p>
<p>1. theory &#8211; the backend layer<br />
2. application, projects &#8211; the middleware<br />
3. co-op and internship building you to be a better engineer &#8211; app layer.</p>
<p>However beautiful the app layer is, if the backend like db design or interaction layers sucks, u r bound to be a failure. Thats why it&#8217;s easy (I am generalizing here) for an above avg engineer to become fully rounded prof than some above avg student (above avg, exceptions/anomalies  are bound to be found everywhere) from community college learning applications <img src='http://theshyam.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Valeri Karpov</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-56</link>
		<dc:creator>Valeri Karpov</dc:creator>
		<pubDate>Thu, 30 Jul 2009 18:20:52 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-56</guid>
		<description>The answer is simple; you need to start with a solid background before building up your practical knowledge. In my mind, SWE is to CS as Physics is to Math - if you only study physics, you learn some bastardized math but learning new physics material is harder than it should be because you&#039;ve never sat down and learned the underlying math. I know quite a few kids who wanted to be physics majors but didn&#039;t like or understand math - they&#039;ve either dropped out of physics or are struggling through it.</description>
		<content:encoded><![CDATA[<p>The answer is simple; you need to start with a solid background before building up your practical knowledge. In my mind, SWE is to CS as Physics is to Math &#8211; if you only study physics, you learn some bastardized math but learning new physics material is harder than it should be because you&#8217;ve never sat down and learned the underlying math. I know quite a few kids who wanted to be physics majors but didn&#8217;t like or understand math &#8211; they&#8217;ve either dropped out of physics or are struggling through it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Clarence</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-54</link>
		<dc:creator>Clarence</dc:creator>
		<pubDate>Thu, 30 Jul 2009 07:09:36 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-54</guid>
		<description>One way for college students to learn quickly is to participate in open source projects. You get to learn how working developers code, have a chance to join in the discussion, and grow a thick skin when your submit get rejected repeatedly !</description>
		<content:encoded><![CDATA[<p>One way for college students to learn quickly is to participate in open source projects. You get to learn how working developers code, have a chance to join in the discussion, and grow a thick skin when your submit get rejected repeatedly !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shyam</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-50</link>
		<dc:creator>Shyam</dc:creator>
		<pubDate>Thu, 30 Jul 2009 02:31:31 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-50</guid>
		<description>So I&#039;m going to be a little lazy and reply to a bunch of comments, all of which seem to echo a similar idea that the Comp Sci degree is meant for academia or theoretical backgrounds, and internships and co ops. First things first, I started off as a Software Engineer major in college. I stuck through it for 2 years, before switching to a Comp Sci. Degree. The major reason for that was the Software Engineering courses (which I assumed would be more towards engineering good software) turned out to focus on the theoretical aspects of Software Engineering, most of which aren&#039;t applied in software development. Courses like requirements gathering and software testing are so out dated or out of touch that they end up talking generics which you end up chucking when you graduate, because &quot;thats not how you do it in real life&quot;. I have had so many people say that to me.

So I switched to comp sci, and I enjoyed the heck out of it. I ended up taking some graduate level courses even as an undergraduate, and I loved it. I even did an internship in the Financial industry in New York. But that experience at software development just worsened my skills, not improved it. Code that probably will be thrown away the next time someone works on it, a focus more on get things done right now and don&#039;t worry about who will work on this next, because you&#039;ll be mostly gone.

What I&#039;m getting at, is even in the industry, its not taught. For every engineer who&#039;s learnt through experience, there are 10 who just don&#039;t get it. Writing maintainable code is not different from company to company. Follow a few basic tenets, and it works out the same. Sure, there might be style guides and naming conventions, but I am not talking about that. And why should it be that the theoretical and practical aspects of something be separate ? People pay a few thousand dollars for their education, can it not teach them just enough to land them a good job? People complain about the lack of good candidates from college, but when colleges go and teach pure theory and no practical knowledge, what do you expect? Why can&#039;t there be a, say, special track for industry focussed graduates vs academia focussed students? Thats all I&#039;m saying. There has been almost no attempt at this.

I&#039;ll probably do a follow up article to this with an example of what my first code attempt was vs what it should have been. But I love this discussion, thanks for your opinions.</description>
		<content:encoded><![CDATA[<p>So I&#8217;m going to be a little lazy and reply to a bunch of comments, all of which seem to echo a similar idea that the Comp Sci degree is meant for academia or theoretical backgrounds, and internships and co ops. First things first, I started off as a Software Engineer major in college. I stuck through it for 2 years, before switching to a Comp Sci. Degree. The major reason for that was the Software Engineering courses (which I assumed would be more towards engineering good software) turned out to focus on the theoretical aspects of Software Engineering, most of which aren&#8217;t applied in software development. Courses like requirements gathering and software testing are so out dated or out of touch that they end up talking generics which you end up chucking when you graduate, because &#8220;thats not how you do it in real life&#8221;. I have had so many people say that to me.</p>
<p>So I switched to comp sci, and I enjoyed the heck out of it. I ended up taking some graduate level courses even as an undergraduate, and I loved it. I even did an internship in the Financial industry in New York. But that experience at software development just worsened my skills, not improved it. Code that probably will be thrown away the next time someone works on it, a focus more on get things done right now and don&#8217;t worry about who will work on this next, because you&#8217;ll be mostly gone.</p>
<p>What I&#8217;m getting at, is even in the industry, its not taught. For every engineer who&#8217;s learnt through experience, there are 10 who just don&#8217;t get it. Writing maintainable code is not different from company to company. Follow a few basic tenets, and it works out the same. Sure, there might be style guides and naming conventions, but I am not talking about that. And why should it be that the theoretical and practical aspects of something be separate ? People pay a few thousand dollars for their education, can it not teach them just enough to land them a good job? People complain about the lack of good candidates from college, but when colleges go and teach pure theory and no practical knowledge, what do you expect? Why can&#8217;t there be a, say, special track for industry focussed graduates vs academia focussed students? Thats all I&#8217;m saying. There has been almost no attempt at this.</p>
<p>I&#8217;ll probably do a follow up article to this with an example of what my first code attempt was vs what it should have been. But I love this discussion, thanks for your opinions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sharkey</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-49</link>
		<dc:creator>Sharkey</dc:creator>
		<pubDate>Thu, 30 Jul 2009 00:36:45 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-49</guid>
		<description>I completely disagree, likely because I consider myself an academic egghead (and because I&#039;m about to return to school to continue studying). You achieved a computer science degree, not a computer programming degree. You shouldn&#039;t have been studying refactoring or unit tests, you should have learned the fundamentals of what you can express in code; classes like Discrete Math, Data Structures, Algorithms, etc. describe the potential and the limits inherent in computational abstractions, whether they are expressed Java, C, Lua or Haskell. Unfortunately, there is a conflation between a software developer and a computer scientist, and perhaps schools should change to reflect that distinction.

In case it sounds like I&#039;m implying that developer is a &quot;lower class&quot;: I consider it the difference between an architecture degree and a materials science degree. It isn&#039;t the amount, difficulty or the general subject of the schooling, just the focus. Graduates of both programs may end up working on the same building with similar levels of expertise, but each with their own domain, and similarly with CS and Software Engineering.</description>
		<content:encoded><![CDATA[<p>I completely disagree, likely because I consider myself an academic egghead (and because I&#8217;m about to return to school to continue studying). You achieved a computer science degree, not a computer programming degree. You shouldn&#8217;t have been studying refactoring or unit tests, you should have learned the fundamentals of what you can express in code; classes like Discrete Math, Data Structures, Algorithms, etc. describe the potential and the limits inherent in computational abstractions, whether they are expressed Java, C, Lua or Haskell. Unfortunately, there is a conflation between a software developer and a computer scientist, and perhaps schools should change to reflect that distinction.</p>
<p>In case it sounds like I&#8217;m implying that developer is a &#8220;lower class&#8221;: I consider it the difference between an architecture degree and a materials science degree. It isn&#8217;t the amount, difficulty or the general subject of the schooling, just the focus. Graduates of both programs may end up working on the same building with similar levels of expertise, but each with their own domain, and similarly with CS and Software Engineering.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nolan</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-47</link>
		<dc:creator>Nolan</dc:creator>
		<pubDate>Wed, 29 Jul 2009 19:00:57 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-47</guid>
		<description>Nice article, and I agree. My first job was the same frustrating experience. In college, programming was easy. As long as it compiled and spit out the right answers, all was well. The computer science program at UNC-Chapel Hill had one course when I was there titled &#039;Software Engineering&#039;, but being more interested in the theoretical aspects opted not to take it. 

On a tangential note, could you give an example of what kind of things you had to change? As in why you built it one way, but the the manager needed it another way. Could be a good blog post...</description>
		<content:encoded><![CDATA[<p>Nice article, and I agree. My first job was the same frustrating experience. In college, programming was easy. As long as it compiled and spit out the right answers, all was well. The computer science program at UNC-Chapel Hill had one course when I was there titled &#8216;Software Engineering&#8217;, but being more interested in the theoretical aspects opted not to take it. </p>
<p>On a tangential note, could you give an example of what kind of things you had to change? As in why you built it one way, but the the manager needed it another way. Could be a good blog post&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron</title>
		<link>http://theshyam.com/2009/07/whats-lacking-in-cs-degrees-nowadays-part-1/comment-page-1/#comment-46</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Wed, 29 Jul 2009 18:54:04 +0000</pubDate>
		<guid isPermaLink="false">http://theshyam.com/?p=122#comment-46</guid>
		<description>I do agree with J.  This is exactly what an internship is for.  If you want to be ready for the real world by the time you graduate, get at least a year of work experience in through internships, or some other form of part-time work in your field.  And still get ready to be humbled by a senior engineer=)</description>
		<content:encoded><![CDATA[<p>I do agree with J.  This is exactly what an internship is for.  If you want to be ready for the real world by the time you graduate, get at least a year of work experience in through internships, or some other form of part-time work in your field.  And still get ready to be humbled by a senior engineer=)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
