Greetings all.<br><br>I'm glad that the Institute is looking to update the curriculum to make it more relevant. Here are my (scattered) thoughts<br><br>1) I feel that the Computer Science Degree is too 'jack of all trades'. It has object oriented programming, networking, operating systems, artificial intelligence, data structures, functional programming, databases and many other units, all of which are relevant but they are so many the only way to get through is to consign them to single units, and some of these units (like operating systems, programming, databases can easily be degree courses in their own right). <br>
<br>Also most students know pretty early what scion of computer science they wish to pursue so why force someone who has no interest or aptitude in programming but wishes to concentrate on networks to go through the other units<br>
<br>What I would suggest is as follows. Let us do what the engineers have done have specialization: They have Bsc Electronic Engineering, BSC Mechanical Engineering, etc. We can have the same with a twist Instead of plain old Computer Science let's have<br>
<br><ul><li>Bsc Computer Science (Software Engineering)</li><li>Bsc Computer Science (Operating Systems)</li><li>Bsc Computer Science (Artificial Intelligence)</li><li>And so on<br></li></ul>What could be done is have the first one year have common fundamental courses that touch briefly on the core pillars of computer science -- the principles -- then from second year have the students specialize where they wish to go career wise.<br>
<br>2) With regards to languages taught, like many of my colleagues while i was at Uni I intensely resented C, C++ and Pascal as instruction languages and loudly wondered why were doing such archaic languages and not jumping straight to Java or C#. Of course with age comes wisdom and when using higher level languages now I know exactly how things work at a lower level. (At this point I shall digress and personalize issues and commend Ms Ronge and Mr Orwa because I can safely speak for my year when i say we learnt data structures and C programming whether we wanted to or not!) I would urge the team to <i>resist the temptation/pressure to remove these languages</i> as teaching languages as they teach many additional things besides the actual programming like analytic thinking, design and discipline. They will also appreciate how data structures we use every day work much better<br>
<br>However having said that, perhaps in third year something like Java or C# can be brought in as well.<br><br>3) Functional programming is (if i recall correctly) two units and yet there are many problems the industry is constantly facing especially today, most notably parallel programming, concurrency and mutability (Again, with age comes wisdom!) that functional programming addresses. If I recall correctly the instruction was in Scheme and Prolog. Perhaps this can be updated to use languages like F# or Python so that students can learn the concepts and apply them immediately in their day to day work<br>
<br>4) Industrial Attachment should be a course unit on its own<br><br>5) When it comes to programming all the effort goes into the actual code. Things like requirements gathering, documentation, design, testing, working as a team, source code control, commenting debugging etc are not touched on at all. As a result of these by the time a student who wants to program as a career is finished they have 4 years of appallingly bad habits and practices that need to undone for about 10-14 months (I've measured!) before they can be useful team members in the industry.<br>
<br>6) There needs to be greater synergy between industry and academia -- hopefully some of what i have suggested will improve this disconnect.  Universities and industry need to set up some relationships with the industry so that skills and knowledge can be cross pollinated.<br>
<br><br>Regards<br><br>Conrad<br>