<?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: Computer Science Education Is A Partnership</title> <atom:link href="http://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/feed/" rel="self" type="application/rss+xml" /><link>http://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/</link> <description>Living in a state of accord.</description> <lastBuildDate>Tue, 07 Feb 2012 01:07:58 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>By: ddoctor</title><link>http://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/comment-page-1/#comment-144141</link> <dc:creator>ddoctor</dc:creator> <pubDate>Wed, 30 Jan 2008 05:55:59 +0000</pubDate> <guid
isPermaLink="false">https://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/#comment-144141</guid> <description>Uni and the workplace are such different places. I was lucky enough to work in IT during my degree, so I got the benefits of both worlds and appreciated the difference.
If you work on a large team project at uni, you pretty much have to learn subversion or cvs. But, this is pretty easy - you just pick it up as you go. You don&#039;t need a class for it.
I don&#039;t think Software licensing is important to learn at uni. Yes, it&#039;s an issue, but there are far too many other important things to cram into a 3-4 year degree.
It&#039;s difficult for unis to balance the theoretical and practical. They have to deal with theoretical, so that students get the general skills they can apply to any technology. However, they have to also teach practical skills, so the students don&#039;t have their heads in the clouds, and don&#039;t have any marketable real-world skills. Its a tricky balance to strike... but, in the workplace is mainly practical, so uni should focus on theoretical.
Certainly, what I got from uni was a deep understanding of the theoretical side, and I wouldn&#039;t trade it for the world. It has helped me put every practical skill I know in perspective.
However, I naturally think very analytically and abstractly - as does AJ, I&#039;m sure. So, this type of person will thrive in this environment, and be able to apply it to more tangible skills.
Lots of people aren&#039;t like that - they need to learn the practical skills first, then abstract that to the general cases. On the one hand, these sorts of people should be catered for. On the other hand, IMHO, these types of people should not become engineers. :)
But, seriously, an engineer&#039;s job is to take abstract principles and apply them to a practical skill to solve a problem. The practical skill changes, but the abstract problem solving techniques do not. Especially for software engineering - I&#039;ve always thought that software engineering is one of the most pure abstract problem-solving pursuits there is.
There were a few things I would have liked to see added to my course:
- Learning TDD or at least automated testing, rather than quality principles. Still need quality principles hardcore... but I left uni with no practical testing skills. I learnt more about testing by doing the interview programming exercise for Ephox, than I did at uni.
- Learning how to maintain/refactor bad software. So much of uni is greenfield - start from scratch, design this application, you&#039;ll never have to maintain it. As well as this, I&#039;d like to see: you have legacy system x with heaps of faults. Inject a new feature into it. Refactor it. Extract and re-write subsystem y without breaking the tests.
- Web development. I know this is a very practical skill... but its very important these days. We had 2 year-long uni projects - both of mine were web apps, but we&#039;d learnt very little web stuff. I picked up some bad habits, and learnt lots of things the hard way. One subject would be heaps to avoid these pitfalls.</description> <content:encoded><![CDATA[<p>Uni and the workplace are such different places. I was lucky enough to work in IT during my degree, so I got the benefits of both worlds and appreciated the difference.</p><p>If you work on a large team project at uni, you pretty much have to learn subversion or cvs. But, this is pretty easy &#8211; you just pick it up as you go. You don&#8217;t need a class for it.</p><p>I don&#8217;t think Software licensing is important to learn at uni. Yes, it&#8217;s an issue, but there are far too many other important things to cram into a 3-4 year degree.</p><p>It&#8217;s difficult for unis to balance the theoretical and practical. They have to deal with theoretical, so that students get the general skills they can apply to any technology. However, they have to also teach practical skills, so the students don&#8217;t have their heads in the clouds, and don&#8217;t have any marketable real-world skills. Its a tricky balance to strike&#8230; but, in the workplace is mainly practical, so uni should focus on theoretical.</p><p>Certainly, what I got from uni was a deep understanding of the theoretical side, and I wouldn&#8217;t trade it for the world. It has helped me put every practical skill I know in perspective.</p><p>However, I naturally think very analytically and abstractly &#8211; as does AJ, I&#8217;m sure. So, this type of person will thrive in this environment, and be able to apply it to more tangible skills.</p><p>Lots of people aren&#8217;t like that &#8211; they need to learn the practical skills first, then abstract that to the general cases. On the one hand, these sorts of people should be catered for. On the other hand, IMHO, these types of people should not become engineers. :)</p><p>But, seriously, an engineer&#8217;s job is to take abstract principles and apply them to a practical skill to solve a problem. The practical skill changes, but the abstract problem solving techniques do not. Especially for software engineering &#8211; I&#8217;ve always thought that software engineering is one of the most pure abstract problem-solving pursuits there is.</p><p>There were a few things I would have liked to see added to my course:</p><p>- Learning TDD or at least automated testing, rather than quality principles. Still need quality principles hardcore&#8230; but I left uni with no practical testing skills. I learnt more about testing by doing the interview programming exercise for Ephox, than I did at uni.</p><p>- Learning how to maintain/refactor bad software. So much of uni is greenfield &#8211; start from scratch, design this application, you&#8217;ll never have to maintain it. As well as this, I&#8217;d like to see: you have legacy system x with heaps of faults. Inject a new feature into it. Refactor it. Extract and re-write subsystem y without breaking the tests.</p><p>- Web development. I know this is a very practical skill&#8230; but its very important these days. We had 2 year-long uni projects &#8211; both of mine were web apps, but we&#8217;d learnt very little web stuff. I picked up some bad habits, and learnt lots of things the hard way. One subject would be heaps to avoid these pitfalls.</p> ]]></content:encoded> </item> <item><title>By: Nathan McDonald</title><link>http://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/comment-page-1/#comment-144131</link> <dc:creator>Nathan McDonald</dc:creator> <pubDate>Wed, 30 Jan 2008 04:00:53 +0000</pubDate> <guid
isPermaLink="false">https://www.symphonious.net/2008/01/30/computer-science-education-is-a-partnership/#comment-144131</guid> <description>I was just recently thinking of some of the vast differences in a university education vs what is required in the real world.  One of the things I found very interesting is that for the majority of early university projects, we were given some base interfaces/classes and expected to write the rest of the code to accomplish some functionality.  Universities are always on the lookout for plagiarism, so the best application was one written entirely by yourself.
After a few years in the industry, I realize first hand that if everyone write their own in house code for every bit of functionality, you end up with a maintainability nightmare.  There are a wealth of 3rd party libraries out there that provide much more robust solutions than can be rolled in house.  Some of the later projects in university definitely allowed the use of third party libraries, but I don&#039;t remember this ever being explicitly encouraged, more that the restriction was silently removed on larger projects.
Sure, part of a university degree is to teach people how to program well, but the ideal being they can then utilize this skill when it is required.  However there is very little focus on having development the second solution, after research into existing solutions yields no results.
I think this would be a very valuable area to explore in a university curriculum.  As a part of this, students would also get a feel for understanding software licenses.  I wonder how many graduates understand the difference between the GPL and LGPL?  As previously stated, a university degree should not aim to teach everything, but rather to teach us how to learn.  Getting students to understand the legalese in a couple of software licenses would provide a solid base upon which to read and understand other licenses they are no doubt going to come across.
Just my 2 cents.</description> <content:encoded><![CDATA[<p>I was just recently thinking of some of the vast differences in a university education vs what is required in the real world.  One of the things I found very interesting is that for the majority of early university projects, we were given some base interfaces/classes and expected to write the rest of the code to accomplish some functionality.  Universities are always on the lookout for plagiarism, so the best application was one written entirely by yourself.</p><p>After a few years in the industry, I realize first hand that if everyone write their own in house code for every bit of functionality, you end up with a maintainability nightmare.  There are a wealth of 3rd party libraries out there that provide much more robust solutions than can be rolled in house.  Some of the later projects in university definitely allowed the use of third party libraries, but I don&#8217;t remember this ever being explicitly encouraged, more that the restriction was silently removed on larger projects.</p><p>Sure, part of a university degree is to teach people how to program well, but the ideal being they can then utilize this skill when it is required.  However there is very little focus on having development the second solution, after research into existing solutions yields no results.</p><p>I think this would be a very valuable area to explore in a university curriculum.  As a part of this, students would also get a feel for understanding software licenses.  I wonder how many graduates understand the difference between the GPL and LGPL?  As previously stated, a university degree should not aim to teach everything, but rather to teach us how to learn.  Getting students to understand the legalese in a couple of software licenses would provide a solid base upon which to read and understand other licenses they are no doubt going to come across.</p><p>Just my 2 cents.</p> ]]></content:encoded> </item> </channel> </rss>
