• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Noulakaz

Noulakaz

The blog of Avinash, Christina, Anya and Kyan Meetoo.

  • Home
  • About
  • People
    • Christina & Avinash Meetoo
    • Avinash Meetoo
    • Christina Meetoo
    • Anya Meetoo
    • Kyan Meetoo
  • General
    • News
    • Mauritius
    • Politics
    • Education
    • Business
    • Travel
  • Computing
    • Apple
    • Linux
    • LUGM
    • Programming
    • Web
    • Technology
    • Knowledge Seven
  • Entertainment
    • Music
    • Movies
    • Photography
    • Sports

Learning part of CS does not make a CS?

5 December 2007 By Avinash Meetoo 15 Comments

I came across an interesting article called Should Java be banned from schools?.

The most interesting part were the comments. One of them rang a bell:

Also, no CS study is complete without some messing with machine level instructions, compilers & interpreters, algorithms, etc. Forget about learning a language: a good CS student must be able to design and build language + tool set from scratch. Here’s a CPU manual, go implement language foobar for it. Don’t come back until its compiler can bootstrap itself.

The problem is that many so-called universities don’t teach all this stuff. These second rate universities are popping up all over the world. They’re called universities but they are just processing mediocre programmers into cubicle occupying, php/Java/VB hacking zombies.

There is a lot of truth in that. Discuss.

PS: My favourite anti-Java article is The Perils of Java Schools – mind you, I like (and teach) Java…

PPS: The above image shown Emacs, my current Erlang IDE. I teach Erlang to my Concurrent Programming & Parallel Processing students.

Filed Under: Education, Programming, Technology

Reader Interactions

Comments

  1. ashesh says

    5 December 2007 at 16:03

    Indeed, I find that there is a lot of truth in this comment. If I were to do Computer Sc. & Eng. at UoM, definitely I would had in my mind to be able to do or at least try experimenting with designing and building language + tool set from scratch at the end of the 3 year-course.

    But the question is that: is the university really training you to become a cubicle occupying programmer?

    I think that Avinash wants to produce Hard-Core Computer Scientists at the end of the course and he loves teaching Java and Erlang but these CSE students, do they have the ability to implement language foobar for it and don’t come back until its compiler can bootstrap itself?

    I think Linus was trained at a Uni where hard-core Computer scientists are produced. That’s why perhaps while re-designing the MINIX kernel, he came up with his LINUX at his final year at uni.

    Is it possible for a CSE student like that to crop up from UoM, say having pioneered a new stuff in the computing field?

  2. avinash says

    5 December 2007 at 22:43

    In my opinion, a Computer Science department should neither produce (as you put it) “Hard-Core Computer Scientists” nor “Soft-Core Computer Scientists” but rather (and simply) “Computer Scientists”.

    ACM for instance has recommendations on what a Computer Science undergraduate degree should offer. Page 17 is a summary of the core topics as well as electives. Page 44 is a list of advanced courses by areas. Naturally, this recommendation is not perfect but is representative of what many universities offer.

  3. avinash says

    5 December 2007 at 22:51

    A quote from another comment:

    A university degree should teach you how to think not what to think.

    Priceless!

  4. $3|v3n says

    6 December 2007 at 00:47

    that’s exactly what i used to always believe in (not the previous comment but i meant the main thread).

    When someone goes to a univ to become a computer scientist or eng, he must be able to build a computer from scratch…(not hardware.. coz that is left for the electronics and electrical dudes).

    And so do i believe that a mechanical engineer must be able to let’s say.. build a car out from scratch before he can claim he is a mechanical engineer or scientist. (i won’t go in the difference between engineering and science).

    But as far as java being banned in schools.. that would be too drastic… because a computer scientist or eng must not get pwned by an IT dude specially when it is about something common about computers… (which happens many times :p to those lovely kids who gets out of univ.. hahahaha)

    I had been seeing docs about university students in some countries trying to put themselves into the environment of those times when e.g XYZ was invented.. they try to get the raw materials the way those days i was available.. and build XYZ just like its inventor created it.

    +$3|v3n

  5. ames says

    6 December 2007 at 06:59

    “A university degree should teach you how to think not what to think.”

    Priceless indeed.

    Personal Experience
    During 3.5 years, I learnt to master – Java, VB.NET (and GDI+), ASP.NET, AMP. (On my own, I learnt PERL, python and Ruby but sadly, I’ve not mastered Ruby and Python to the level that I always wanted to appreciate).

    What I never learnt: Assembly, C, C++, C#, and functional lang.

    I was never coerced into using a specific methodology. Assignments and Projects were not done in groups and were open (use whatever library or language you want to (unless specified) but all students had to get the job done).

    The tutors showed up only to teach us how to approach certain problems. We did most of the work based on a 30 minute lecture (though the class was usually set for 3 hours).

    I don’t consider myself as a computer scientist because I never mastered lower languages. Heck, I do believe that though my mates and I learnt how to reason, we were odd (for we did java extensively (hey, not just swing. a few weeks ago, i was talking to an UOM student who told me all he knew was SWING because he was working in a group. I was stunned) but never even covered c. and frankly, java WAS EASY!

    Back to your post -> But the question is that: is the university really training you to become a cubicle occupying programmer?

    No, I don’t think so. Well, I don’t know how UOM works. However, there is lack of jobs in Mauritius – and it’s sad that Accenture pretty much coerce the way students think. I attended the Infotech conference, and I was angry @ the guy. He wishes students to learn according to the needs of enterprises. But on the other hand, it is up to the new guys @ work, to change the way work is done. For e.g – one can advocate open source (bore the boss to death till the systems changes lol).

    And yes – a computer science faculty should produce people who can think and devise ways to tackle problems! And there should NOT be any 3rd party enterprise dudes who show up to disrupt the creation of Computer Scientists.

  6. Jeannine says

    6 December 2007 at 12:27

    Bonsoir monsieur.
    Je fais mon cours a SNIT – 2 ans IDCS et IADCS. Pendant ces deux ans, j’ai fait les modules suivants:
    VB.NET – pratique – 3 projets – multimedia, mathematique, et simulation

    ASP.NET – pratique – 1 projet de commerce electronique (2eme annee – CORE) et 1 projet sur les bases de donnees SQL Server pour Thespia Systems (1ere annee)
    (ELECTIVE)

    (1ere annee) – (ELECTIVE)
    Java – 1 projet – pratique – SWING, AWT, utilisation de BluJ (ELECTIVE)

    Computer Technology – theorique (1ere annee)(CORE)

    Networking – 1 projet theorique sur les VPNs(ELECTIVE)

    Structured Programming Languages – matiere theorique(CORE)

    Business Organisation – matiere theorique(CORE)

    Business COmmunication – matiere theorique (CORE)

    Database Systems – matiere theorique et pratique (Core) – cela couvre aussi Oracle (incl. PLSQL)

    Managing Business Projects (ELECTIVE) – project sur le management des projets

    Business System Design – matiere theorique (CORE)

    Business System Analysis – matiere theorique (CORE)

    Presentation Website Design – ELECTIVE (xhtml + javascripting + css + actionscripting)

    Enterprise Networking – CORE (matiere theorique)

    Maintenant, j’entame ma troisieme annee dans l’informatique a l’universite de Greenwish et a part des research papers, j’ai 2 projets – Java (Corba et Jini) et 1 projet de mobile commerce.

    Je sais que c’est different de l’universite de Maurice mais on apprend le comment des choses. C’est tres ouvert – on a le choix de la methode.

    Je ne pense pas que SNIT, NCC ou greenwish veulent me tourner en bourique dans la ‘chambrette’ d’une entreprise. Les modules sont bien adaptes dans une telle facon que tous les eleves apprennent les choses importantes qui puissent etre utilisees.

    Aussi, les eleves peuvent apprendre languages comme c# pour leur projets. Le choix des matieres est la.

    En temps qu’eleve, je suis d’accord sur “A university degree should teach you how to think not what to think.” et j’espere que mes amis de l’universite de Maurice font l’experience de cela.

    Bonne nuit
    Jeannine ST Medar

  7. ames says

    6 December 2007 at 16:29

    @ Jeannine -> your post was made on the December 6th, 2007 at 12:27. Why “bonsoir”? Are you in a different time zone? Just wondering.
    It’s an offtopic question. What is NCC?

  8. $3|v3n says

    6 December 2007 at 16:32

    i don’t agree with this : A university degree should teach you how to think not what to think.”

    Because i believe in:
    A university degree should suggest you how to think not what to think or how to think.

    Because… the purpose of a university is to share knowledge and to be open minded.. one thing can be done one way, the way most people would do it, or a completely different way which is completely different.

    Because the way someone thinks is inborn and can’t be changed, you are born with it, that’s makes someone’s thought.. unique. I don’t intend to change my ways of thinking just coz i went to a university, sure enough, i might take certain of those suggestions and think in this or that way.. if i feel at ease thinking in those ways.

  9. $3|v3n says

    7 December 2007 at 19:11

    Hmm .. when i said..i don’t agree with a university degree should teach you how to think and not what to think..
    I DIDN’T MEANT THAT I BELIEVE IN “A university degree should teach you what to think and now how to think”

    I wanted to say.. i believe in A university degree should suggest you how to think not what to think or how to think.
    Suggest as in… the freedom of expression and thoughts, i.e i learn how univ want us to think, but i am the ultimate person on which the choice resides about how i want to think, because i believe sharing of thoughts is bi directional.

    +$3|v3n

  10. ames says

    9 December 2007 at 21:09

    Sir, were you inspired by Kayne West when you made this post?
    I’m listening to Good Morning (song) from Kayne West and wow – it’s so true and is related to this post in a way.

    Check out the lyrics of the song here:
    http://artists.letssingit.com/kanye-west-lyrics-good-morning-intro-19q9q1g

    Maybe it’s a subliminal message or an insinuation: “But you graduate when you make it up outta the streets”

  11. ames says

    18 December 2007 at 02:05

    Check this out: http://gotw.ca/publications/concurrency-ddj.htm

    Extract:
    If you haven’t done so already, now is the time to take a hard look at the design of your application, determine what operations are CPU-sensitive now or are likely to become so soon, and identify how those places could benefit from concurrency. Now is also the time for you and your team to grok concurrent programming’s requirements, pitfalls, styles, and idioms.

    A few rare classes of applications are naturally parallelizable, but most aren’t. Even when you know exactly where you’re CPU-bound, you may well find it difficult to figure out how to parallelize those operations; all the most reason to start thinking about it now. Implicitly parallelizing compilers can help a little, but don’t expect much; they can’t do nearly as good a job of parallelizing your sequential program as you could do by turning it into an explicitly parallel and threaded version.

    Thanks to continued cache growth and probably a few more incremental straight-line control flow optimizations, the free lunch will continue a little while longer; but starting today the buffet will only be serving that one entrée and that one dessert. The filet mignon of throughput gains is still on the menu, but now it costs extra—extra development effort, extra code complexity, and extra testing effort. The good news is that for many classes of applications the extra effort will be worthwhile, because concurrency will let them fully exploit the continuing exponential gains in processor throughput.

    From a post @ /.
    Presentation on concurrency and erlang: http://www.algorithm.com.au/downloads/talks/Concurrency-and-Erlang-LCA2007-andrep.pdf

    Video of presentation: http://mirror.linux.org.au/pub/linux.conf.au/2007/video/friday/252.ogg

    ———
    @Avinash: Again thanks :) I’m enjoying erl :)

  12. Olivier says

    18 December 2007 at 10:08

    A programming language is a tool. Let’s pretend they are hammers.

    Java is a sophisticated hammer sporting many bells and whistles. So many in fact, that one does not require hammer mastery to wield and use decently.

    Java is great at preventing workplace accidents and dented products. It is the uber hammer to give to a factory line of 5,000 workers. The disaster threshold is higher, it requires less vigilance and repetition. As a side effect, it makes the barrier to entry in terms of skills required lower as well.

    However there are many things that when using this kind of tool, especially when learning the craft, are easy to gloss over, e.g. the fundamentals of making a hammer, hammer theory, tool theory, etc.

    Computer scientists are not trained to use tools; computer scientists are trained to know how to conceptualize and almost incidentally be able to produce a tool of somewhat advanced sophistication, based on the knowledge of basic tool making.

    Computer scientists should not be trained on how to use a vendor’s specific tool, but rather on how to make one. The knowledge of making one requires the knowledge of how to use one.

    Good developers often have a computer science or related background, and many enjoy using Java. The power afforded by Java gets annoyances out of the way, reduces the number of repetitive and time consuming tasks and allows a user to be more focussed on solving a problem.

    Both practical and theoretical knowledge are very important. As resources are finite, there is only so much of both that can be trained into an individual.

    The partitioning of knowledge between the two will vary for different ends; a sweat shop army of ‘low-skilled’ workers working day-in day-out may only require only mostly practical knowledge, as most of the thinking process may have been carried out prior to the implementation phase. This is typically the case for what is coined ‘software outsourcing’ these days.

    More complicated problems require a more ‘skilled’ workforce, entailing more creative thinking and problem solving. ‘Theoretical’ knowledge is often a necessity.

    On a side note, if I were to hire a candidate, I would pick the candidate who knows what she doesn’t know, rather than another one who only thinks she knows it all.

  13. Olivier says

    18 December 2007 at 10:35

    Now as an addendum, I will need to clarify my terms:

    My use of the words ‘theoretical’, ‘skilled’, ‘low-skilled’, ‘software outsourcing’ need context and explaining. For the most part, I do not claim to be correct, these are only interpretations and deductions from my limited perspective on the world of today.

    Def. for ‘theoretical’:

    Computer science is not a science. That’s a fact if we go by the strict meaning of the word ‘science’. In no way are we using the scientific method for the vast majority of what the term Comp. Sci. is used for.

    The software engineering stream of computer science, however, is the closest to be considered a science, in a similar way that psychology is considered a behavioral science. Theories and postulations in software engineering are sometimes driven by hard, cold, empirical, statistical data. Experiments are carried out using the scientific method and conclusions are deducted from their results. Should the experiment not match the expected outcome, the theory would be revised and the process iterated. The conclusions must be repeatable by an outside party and experiments be conducted in an unbiased way, as much as possible.

    The core of computer science resembles mathematics, complete with proofs using the same tools used in Calculus for instance. Algorithms can be proven to be solvable, solvable under certain bounds of complexity, and can be proven to be correct.

    The vast majority however is a hodge-podge of engineering and mathematics. It is arguably an application of mathematics. Functional programming is a technique that most closely resembles its pure mathematical form.

    In that way, ‘theoretical’ knowledge about computer science may very well not be theoretical absolutely, but only relative to the domain of knowledge implied.

    Def. for ‘skilled’ & ‘unskilled’:

    By ‘skilled’, I mean to categorize the group of individuals having the above defined ‘theoretical’ knowledge and who are expected to use it on a fairly regular basis. An ‘unskilled’ individual may or may not have the said knowledge, but isn’t expected to use it. I do not mean to imply any pejorative on the term ‘unskilled’.

    Def. for ‘software outsourcing’:

    My experience with software outsourcing today (2007) is that most involved businesses tend to keep their more ‘skilled’ workers inside the organization and will redistribute the tasks requiring less ‘skill’ to external organizations, often located off-shore due to huge cost benefits.

    In those arrangements, the ‘outsourced’ workforce is not expected to dream up a solution, but rather to merely implement it.

  14. avinash says

    18 December 2007 at 11:24

    Two really great comments, Olivier :-)

    The sentence I quoted “A university degree should teach you how to think not what to think.” really made me understand that our approach is not good in this country.

    It starts at primary level with this 4 A+ nonsense and mandatory tuitions. I am always amazed when I hear parents complaining about CPE exam questions which are “pas dans syllabus”. As if knowing the contents of a syllabus is all that is important in life…

    Then we have secondary level. Where adolescents have to choose when they are about 16 among Science, Economics and “Arts”. And as soon as they have made (?) their choice, they can forget about everything else. There are two problems with that. One is the limited choice. Where is Sports? Music? The second problem is that many young Mauritians get exposed to few aspects of life (i.e. a science students does not know anything about the economy and vice-versa) and this cannot possibly produce a productive adult (or else by chance).

    The third level (i.e. university) is also problematic. Students learn programming by heart for instance. Instead of “[teaching them] how to think not what to think.”, I guess (but, of course, I may be wrong), we are doing the exact inverse.

  15. Olivier says

    18 December 2007 at 18:18

    I agree. Studying strictly what is on a syllabus and focusing on problem solving rather than solution finding makes for very single-minded perspectives on how to tackle a challenge.

    This makes for a very institutionalized and robotic formation. The result is that the work force
    1) is most likely to perceive the learning process as a chore
    2) is most likely to have difficulty functioning without very precise directions in moderately complicated tasks
    3) is less likely to be genuinely passionate about the learning material

    The emphasis of education in Mauritius is not on ‘academics’, personal development or the learning process. It is rather on ‘passing a test’.

    Evaluation tools, such as examinations, tests and assignments will always be flawed. Sole emphasis on these approximate performance metrics rather than the ongoing process is misguided.

Leave a Reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Our Personal Websites

Avinash Meetoo
Christina Meetoo
Anya Meetoo
Kyan Meetoo

Related Posts

  • Learning by experimenting (with Scheme)
  • The Logo programming language
  • Learning Scheme with me
  • Fashionable programming languages

Random Posts

  • China Video Disc
  • Christina and I are PADI Open Water Scuba Divers
  • What about using French or Créole for teaching?
  • A Home Cinema in Mauritius

Archives

  • June 2025 (1)
  • May 2025 (3)
  • April 2025 (4)
  • January 2025 (3)
  • December 2024 (2)
  • November 2024 (2)
  • October 2024 (3)
  • September 2024 (7)
  • August 2024 (1)
  • July 2024 (1)
  • June 2024 (2)
  • May 2024 (3)
  • January 2024 (2)
  • December 2023 (1)
  • October 2023 (1)
  • September 2023 (4)
  • August 2023 (3)
  • July 2023 (1)
  • June 2023 (4)
  • May 2023 (1)
  • April 2023 (1)
  • March 2023 (5)
  • February 2023 (1)
  • December 2022 (1)
  • November 2022 (1)
  • October 2022 (4)
  • August 2022 (4)
  • July 2022 (3)
  • June 2022 (5)
  • May 2022 (5)
  • January 2022 (3)
  • December 2021 (2)
  • November 2021 (1)
  • October 2021 (1)
  • September 2021 (4)
  • August 2021 (2)
  • July 2021 (14)
  • May 2021 (2)
  • April 2021 (4)
  • March 2021 (9)
  • February 2021 (2)
  • January 2021 (1)
  • October 2020 (1)
  • September 2020 (1)
  • August 2020 (2)
  • July 2020 (5)
  • June 2020 (3)
  • May 2020 (5)
  • April 2020 (6)
  • March 2020 (2)
  • February 2020 (2)
  • January 2020 (2)
  • October 2019 (1)
  • September 2019 (2)
  • July 2019 (2)
  • June 2019 (1)
  • May 2019 (3)
  • April 2019 (2)
  • March 2019 (1)
  • February 2019 (1)
  • January 2019 (3)
  • December 2018 (1)
  • October 2018 (3)
  • August 2018 (2)
  • July 2018 (2)
  • June 2018 (1)
  • May 2018 (2)
  • April 2018 (1)
  • February 2018 (1)
  • December 2017 (1)
  • October 2017 (1)
  • September 2017 (1)
  • August 2017 (1)
  • July 2017 (1)
  • May 2017 (4)
  • April 2017 (3)
  • March 2017 (4)
  • February 2017 (5)
  • January 2017 (3)
  • October 2016 (1)
  • September 2016 (1)
  • August 2016 (4)
  • July 2016 (1)
  • June 2016 (1)
  • March 2016 (3)
  • February 2016 (3)
  • January 2016 (1)
  • December 2015 (1)
  • November 2015 (2)
  • September 2015 (1)
  • August 2015 (3)
  • March 2015 (1)
  • December 2014 (1)
  • November 2014 (4)
  • October 2014 (1)
  • March 2014 (2)
  • February 2014 (3)
  • December 2013 (1)
  • October 2013 (1)
  • September 2013 (1)
  • August 2013 (1)
  • July 2013 (1)
  • June 2013 (2)
  • May 2013 (1)
  • March 2013 (3)
  • January 2013 (2)
  • December 2012 (3)
  • November 2012 (4)
  • September 2012 (3)
  • August 2012 (2)
  • July 2012 (3)
  • June 2012 (2)
  • May 2012 (1)
  • April 2012 (2)
  • February 2012 (1)
  • January 2012 (4)
  • December 2011 (2)
  • November 2011 (1)
  • October 2011 (4)
  • September 2011 (2)
  • August 2011 (1)
  • July 2011 (2)
  • June 2011 (4)
  • April 2011 (7)
  • March 2011 (2)
  • February 2011 (1)
  • January 2011 (3)
  • November 2010 (3)
  • October 2010 (1)
  • September 2010 (2)
  • August 2010 (4)
  • July 2010 (2)
  • June 2010 (1)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (3)
  • February 2010 (3)
  • January 2010 (5)
  • December 2009 (2)
  • November 2009 (3)
  • October 2009 (1)
  • September 2009 (5)
  • August 2009 (3)
  • July 2009 (1)
  • June 2009 (3)
  • May 2009 (2)
  • April 2009 (7)
  • March 2009 (12)
  • February 2009 (10)
  • January 2009 (5)
  • December 2008 (4)
  • November 2008 (11)
  • October 2008 (6)
  • September 2008 (7)
  • August 2008 (3)
  • July 2008 (8)
  • June 2008 (6)
  • May 2008 (5)
  • April 2008 (7)
  • March 2008 (6)
  • February 2008 (3)
  • January 2008 (6)
  • December 2007 (11)
  • November 2007 (10)
  • October 2007 (7)
  • September 2007 (9)
  • August 2007 (3)
  • July 2007 (7)
  • June 2007 (8)
  • May 2007 (14)
  • April 2007 (11)
  • March 2007 (18)
  • February 2007 (14)
  • January 2007 (15)
  • December 2006 (16)
  • November 2006 (10)
  • October 2006 (7)
  • September 2006 (8)
  • August 2006 (8)
  • July 2006 (6)
  • June 2006 (4)
  • May 2006 (13)
  • April 2006 (10)
  • March 2006 (11)
  • February 2006 (7)
  • January 2006 (14)
  • December 2005 (8)
  • November 2005 (6)
  • October 2005 (7)
  • September 2005 (2)
  • August 2005 (6)
  • July 2005 (2)
  • June 2005 (6)
  • May 2005 (15)
  • April 2005 (12)
  • March 2005 (3)
  • February 2005 (8)
  • January 2005 (3)
  • December 2004 (1)
  • November 2004 (2)
  • October 2004 (2)
  • September 2004 (3)
  • August 2004 (3)
  • July 2004 (3)
  • June 2004 (3)
  • May 2004 (6)
  • April 2004 (10)
  • March 2004 (12)
Creative Commons License This work is licensed by Avinash Meetoo under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License.