The best way to introduce programming

I’ve decided to teach the Programming Methodology course to first year Computer Science & Engineering students as from next academic year. I love programming. And I want to share my enthusiasm to the young people who join the CSE department. For me, programming is art and, fortunately, I am not alone to think that.

This is the course outline from the official CSE programme:

Pseudocode; Structured Programming Techniques; Program Structure; Simple Data Type; Control Structures; Modularity; Structured Data Types; Introduction to Object Oriented Programming; Programming Style and Testing, Abstract Data Types, Arrays, Linked Lists, Stacks, Queues, Trees, Graphs, Operations on Trees and Graphs.

(Astute readers will have noticed that ; (semicolons) are used initially and , (commas) afterwards – this is an indication that this one year-long course is the concatenation of two previous semester-long courses – Programming Methodology and Data Structures)

Lately, I have been discussing with some colleagues about the reasons why many of our current students have lots of difficulties to tackle this course. One reason might be that many of them have chosen CS for the bad reasons (I don’t want to get into that…) and they don’t have the necessary skills to be good programmers no matter what we do. Another reason might be the way the course is taught by focussing a lot on programming language constructs instead of solving problems. Another possibility might be the actual programming language used (i.e. C++) etc. etc.

I’ve realized that one good way to teach programming is to use the same techniques used in the best universities in the world. Naturally (and this has been pointed out to me by one colleague), there is a risk that what is good for exceptional students (like what you have in top universities) might be catastrophic for our Mauritian students but, personally, I don’t buy this. The first reason is that we are trying to teach art and, as far as I know, to learn art, one needs to have taste (aka aptitudes aka interest aka resonance etc.) That’s it. No need for 3 A’s at A-Level. The second reason is that we are a university and not a university– and therefore we should not lower our standards to accommodate more students. I’ll be direct. If the student cannot follow a university-level course, then he/she has no place in a university. Once I asked a professor from a South-African university about how to handle students who don’t like to read and she told me:

Throw them out!

Ok. This is drastic. But this is how universities become top universities. And this is how they help create the Silicon Valley.

Anyway, I looked at what is taught in top universities and I found out the following:

  • Harvard’s Introduction to Computer Science I – The course has three goals (i) to teach problem solving through the development of algorithms (ii) to teach computer programming as a means to express algorithms (iii) and to convey a broad picture of the different aspects of computer science in the real world. The programming languages used are C and Ruby. According to me, C is a beautiful language to understand what a computer is and Ruby is perfect to write algorithms solving complex problems as the language is so expressive.
  • Cambridge’s Foundations of Computer Science – At the end of the course, the student should (i) be able to write simple programs (ii) understand the importance of abstraction in computing (iii) be able to estimate the efficiency of simple algorithms (iv) and know how to use currying, higher-order functions and lazy evaluation. The programming used is the functional language ML.
  • Stanford’s Programming Methodology – The course covers fundamental programming concepts and software engineering techniques. It uses Karel the Robot which is a simulator to learn programming in Java.
  • And finally MIT’s Structure and Interpretation of Computer Programs and Berkeley’s version – The course is an introduction to computer science, with particular emphasis on software and on machines from a programmer’s point of view. It concentrates mostly on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem rather than in low-level operations dictated by the computer hardware. The programming language used is the functional language Scheme and the textbook is obviously the world-renowned SICP.

This is what I understand:

  • Focus is on solving problems (and not in low-level operations dictated by the computer hardware)
  • Very high-level languages (or environments) are used: Ruby, ML, Karel the Robot and Scheme. Interestingly, Harvard uses Ruby and C I guess to give the student a grasp of both worlds.
  • Three of the top five universities of the world use functional programming languages to introduce programming. I may be on the right track after all in my quest to learn Haskell. Incidentally, the first programming language I used at university when I was a student was Scheme.
  • Python is not used by the top 5 (Pascal Grosset won’t like that). Must be because it’s not different enough from C (apart from the syntax) i.e. it is not very high-level.
  • Those top university are not afraid to use non-mainstream languages and environments. This is an indication of being intelligent by the way: the people there think different!

My conclusion?

Let’s see. First of all, I’ll propose that the course be very progressive but ultimately tough. I’ll try to propose to my colleagues that we completely rework the lectures and lab sessions to focus on problem solving. I’ll also propose that we use a very high-level language. Scheme is great (especially DrScheme) but it might be a little too much for my colleagues. Haskell (and especially Hugs) might also be a little too much. Ruby is the next best choice. But I better find a good interactive and multiplatform and free environment first. Any idea?

(An update: I’ve (re)discovered jEdit which coupled with the Ruby Editor Plugin seems to be a fantastic free IDE for Ruby and it works on all platforms which run Java i.e. on everything!)

(Artwork by Piet Mondrian)

Comments

  1. wow..
    and now am starting to regret am leaving uni this year..

    all the best in ur endeavours avinash
    bt i guess many third year students like me feel that we were “cobayes”
    anyways
    no regrets..experience at uom was a nice one

    i surely think that those joining uom this year will benefit a lot more, after all this will b the 4th yr that this course is being run..on the yearly system..and i suppose that by now, the weaknesses and strengths of this system, and its modules have been assessed.

    First of all, I’ll propose that the course be very progressive but ultimately tough.

    being progressive yes..that would b a good idea..we got 1 yr for that module..also..i believe that the fact that the modules are yearly makes it tougher already. for modules such as programming it can be tackled. yet there are also modules whr theres lots of theory. and on a yearly basis..this can hurt..

    anyways
    wnt get back into the debate
    good luck..
    jeez am late for work :S

  2. Irina says:

    That’s the way, Avinash!

    Learning through presenting the new information, concrete applications though examples, and many problem solving challenges. There is no better way for the brain to learn better and consolidate new information. Students should be challenged to use their brain to make and find the right connections to solve a problem. Otherwise all is in vain.

    Be clear from the beginning of the class, stick to your plan no matter what (I am sure you have a very good one) and the results will be seen very soon. Yes, there will be a “natural selection” among the students … I think is towards their best to find out from the beginning if they are or not in the best place for them regarding future carreer…

  3. Gemini says:

    This may be the ‘old school’ way of thinking about it, but I truly believe students should learn how to solve problems, rather than master languages: ‘problems’ will always exist, but languages evolve, get obsolete and so on.

    In other words, if you’re working in the IT sector, how you use your brains to solve problems is more important than mastering one language which may become obsolete in 2-3 years, because of several reasons (competition, lack of adoption, …).

    How I think about it comes close to Berkeley’s way:
    - pure CS to begin with: basically just logic, pencil and paper! then, (maybe) a hands-on approach using Scheme for implementing the logic: it just hides the low-level complexity and is simple enough to grasp and play with.

    - In parallel or later on, from the ground up, give the students a firm understanding of the Von Neumann architecture. Once this is mastered, they’ll learn to see how much C is a great language for low-level programming (which is by the way one of the reasons C is an exception to the obsolescence rule).

    I’ve personally been confronted to those so-called ‘Java experts’ fresh from university who seriously lack basic skills, but Joel Spolsky explains it better on his blog:
    http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

    This comments is way longer than I expected to write, but I tend to get carried away about this topic :-)

  4. “Python is not used by the top 5 (Pascal Grosset won’t like that).”
    Indeed arrrrgh – “ma vengeance sera terrible!!!” I’ll have to delay singing my “Ode to Python”. :(

    More seriously, I learnt programming in college where I wrote things like:
    IF (it is raining)
    open umbrella
    ENDIF

    and

    WHILE (it is raining)
    keep umbrella open
    END WHILE

    before actually getting in front of a PC and coding. So basically I learnt very basic problem solving. However, I think that the programming language war – what is the best introductory programming language – is going to be there for quite a while. Are we going to find a definite solution? I don’t think so. “Donc philosophons … “

  5. halleluya!!! the kids are gonna have fun this year! lol! wish u luck avinash! ek pas fa zot tro buku misere! lol!

  6. :p agreed @ 100% with gemini, don’t concentrate on the language.

    hehe lol @ pascal,

    i learnt programming from tea (lol.. vrai.. the comp teacher at the time was explaining us the process of how to make tea, then immediately converted it to algorithm, i thought.. damned this is easy!) and i got addicted to both tea and programming later in my life :p

    hmm.. i hope those kids won’t suffer too much

    Good luck and nice initiative.

    http://www.blogged4ever.com (our blog) :p
    +$3|

  7. curiousEngine says:

    At A-level, we learnt programming in a structured programming language and VB6. Personally, i think that we students should be introduced Microsoft VB.NET and database programming
    with SQL server in the first academin year. in the final year, CSE students should be highly skilled in C# and know Oracle as well.
    in the web technologies modules, ASP.NET 2.0 should be introduced.

  8. You seem to be a big fan of Bill Gates :-)

    Personally, I would never ever consider VB to teach programming to beginners. But it’s fine for a HCI or Event-Driven Software Development course.

    As for the other technologies you mention, they are good enough but there as so many alternatives… especially in the opensource world.

    A university degree is not the same thing as a MCSD or a RHCE certification. We don’t teach technologies. We teach techniques. They are not the same…

  9. Yet you still need to choose certain implementations to demonstrate the techniques. Then, what better option than the tools that are in greatest demand on the job market?

  10. Everything is possible. After all, most programming languages are Turing complete.

    But, personally, I find it tough to explain and to demonstrate, say, binary search or divide and conquer algorithms or priority queues, using VB.

    Give me a simple read-eval-print language and I’ll be happier (and I’m sure the students too). I guess this is why all the top 5 universities use interpreters…

    Basically, the environment used should be geared towards beginners. So any tool that is in greatest demand on the job market should be viewed critically as if it is a good tool for professionals then it is surely not adapted to beginners.

    I mean, who starts learning how to drive by driving a bus? Or the latest BMW M5?

  11. curiousEngine says:

    “But, personally, I find it tough to explain and to demonstrate, say, binary search or divide and conquer algorithms or priority queues, using VB.”

    i think the following book as reference could facilitate your task:
    http://www.cambridge.org/catalogue/catalogue.asp?isbn=0521547652&qty=1

    The visual studio environment is considered to be the best development environment.

    i agree for COMPLETE BEGINNERS (not having done computing at A-level) would find it “difficult” to learn using tools for professionals but for such students the ‘philosophy’ of the South African Professor could be used moderately. This is so because referring to the post “Shift happens” and having 300 movie as source of inspiration, quality that matters.

    It would be highly benefitful for us to find a job
    as programmer using microsoft technologies than sitting unemployed at home for 5 months searching for a company using LAMP or open source. Refer to the first web 2.0 company in the north, are they open source? this brilliant programmer got a job there? and why not?

    Please sir, dont make your anti-microsoft sentiment pose a hurdle in our career. The Microsoft Universe is not a harmful universe (neither am i a fan of Bill gates or linus torvalds.) Let us aim to drive a Ferrari but why not start with a BMW?

    Here’s what jeff says on Giving up on Microsoft:
    http://www.codinghorror.com/blog/archives/000845.html

  12. I always forget that we are talking about academic computing, and not professional computer training. My mistake :-)

  13. curiousEngine

    if that’s wht u expect to work on at the university..then u could b wrong..
    as Avinash mentionned, at uni we r not taught technologies, bt rather techniques..
    obviously u will come to use some technologies..bt it is also up to u to try different technologies..no one stops u from doing that..actually so long u master the techniques taught at uni..u could easily master any technology..and even faster than some1 who, since the beginning was bound to a given technology..

  14. To those who still don’t understand what teaching programming means, please read this.

    Have a look at the MCSD programme and a typical Bachelor degree programme and you’ll understand that they are not the same.

    As for “Please sir, dont make your anti-microsoft sentiment pose a hurdle in our career”, this is the most stupid sentence ever to appear on this weblog. curiousEngine, you deserve a prize!

  15. this is called a bitchslap..

  16. bobo! gros bobo! lol

  17. David says:

    Hmmm….Anybody feel it’s getting bit hot around here?!? ;)

    To curiousEngine:
    Thanks so much for those thoughtful and highly entertaining comments…really! Thanks! ;)

    Reality check:
    Seriously, I wonder how Avinash’s point of view can a hindrance to your future career…If you believe your future as software developer/database administrator depends entirely on your knowledge of Microsoft’s development platform and tools, may be you should consider getting an MSCD or Oracle Certification? Why even bother doing a degree in Computer Science?!?

    I sincerely hope you realise that an undergraduate degree is just one small step in your career and that you’ll have to constantly have to keep up with new development tools.

    Also, learning only about what is in demand today, will not guarantee a job when you leave uni…with the evergrowing number of .net developers, it’s even harder to compete! It’s a jungle out there…

    Think about it.

    To Avinash: Time to get the “Bozo Award” ready!! I’m kidding mate…I can feel your pain. It’s no easy job changing the beliefs/mindset of your students… :)

  18. Am not an expert in teaching but as Sundeep said.. whatever the language..
    once you get hold of the programming techniques, i think you must be able to learn most languages.
    its just a matter of syntax!

    something that avinash said in class if i remember well

    “We are here to teach you the concepts, not using a tool.. tools you can learn on your own in your free time ” :P

    There is a fantastic module in 2nd year (programming languages) maybe these 2 can be taught in parallel

    anyway i started in college with pseudocodes, flowcharts trying to simulate the vending machine, atm….

  19. I learned everything about programming from a simple statement: programming a computer is like following a cooking recipe.

    I expand:

    “When you cook a meal, you follow a recipe, which is primarily an ordered set of instructions that guide you towards achieving the desired dish.

    Programming a computer is not so much different: you give the computer instructions in order to produce a result. Ingredients are analogous to inputs; cooking steps, to operations; and, the final dish, to the output.

    As you would choose the most appropriate ustensils, appliances, or ingredients in cooking, so would you choose the best fitting language and tools in programming.”

  20. hmmmm what do we have here? revolution in the making? I better get my ass outta uni before the masterplan works out :p. Na, seriously, there is this need to review the CS curriculum and update the way modules are delivered. But this has to be accompanied by a reviewed mode of teaching, with more hands on practice. I firmly believe that there is a huge gap between what is delivered in class and what is expected from us in exams at times. Being inspired from the Top 5 universities is nice but rushing to implement what they think is best may not yield desirable results at uom. For one, we only have one uni in mtius, unlike the US which has like thousands of uni and can afford to have elite universities of the likes of MIT & Harvard. For two, we have to agree that our education system out here is light years from theirs in terms of quality, focus, depth and scope. Change definitely has to be, but it should be gradual AND consensual. We are simply not adapted for such elitist tertiary education, nor are we equipped for it. To bring in the changes mentioned above, i dont see how we can possibly achieve same without reforming primary and secondary education. We also have to think about alternatives to tertiary education for those who do not qualify for it.

    As it is, I’m a bit shaken up by the drastic way Avinash has put things. Freaks me out, to be true.. eumm, can we expect administration to discuss about the changes to be brought in with CS students? Or will it be true to its despotic nature and inflict upon us what it thinks to be best…

    Anyway, whatever be, let’s hope for the best for us, students!

  21. Are you taking into consideration students’ feedback in trying to bring in changes to the course or is it just trying to fit in what other top universities are doing ? There has been a lot of concern about the feedbacks lately especially those of the final yr student like how well was our course or module designed n so on n so forth … hope they gonna take the form of changes for the benefit of the coming students

    I sense this year’s programming methodology module turning out to be same as for the introduction of squeak or gimp in Multimedia Application Development. For not only a personal basis, I did never found out why squeak was used …

    For sure University is about teaching concepts and use some tools in the process. But why not tools that we gonna be using once out ?

  22. quote Avinash MeetooAs for “Please sir, dont make your anti-microsoft sentiment pose a hurdle in our career”, this is the most stupid sentence ever to appear on this weblog. curiousEngine, you deserve a prize!

    hahahahaha, well said!

    Hmm this seems to be a day of idiots, today, i was in the lab (since ajay wasn’t at tuxlab, i went to univ, then realized i have not checkedo ut ogame, i ran to the lab, i met a kid there, with the same “raisonnement”, i was at first surprised that someone was thinking that way in 2007 (though he seemed to be heavily dependant on java), there was an argument etc.. everything i say, he tends to reply with, java is this this this, while i am mostly for, each language has its own speciality, he was soo damned high on his java and microsoft lectures that i realized something, i started to laugh, i was damned happy that this guy was thinking like that, i wanted to hug him sincei was soo much happy, i realized that if there could be more of such types of thinkers, then probably there’ll be a wider range of work available for me and ppl who thinks like me :p (since a vision of him and a blue card tied around his neck appeared in my mind). I also understand what a lecturer once told me.. and yes.. you were right.. these are the ones who didn’t take this subject for the love of it.. but for the sake of a job!

    Am saying this not because the guy was microsoft’ish or java’ish or whatever’ish, am saying it because of his way of thinking, he just thinks small… he had no vision, he just wanted, just a job, anytihng would do. And am sure he would be among the types of ppl who when i was i nform4 or so i would be convincing to join computing and they would reply.. “sa pena lavenir la dans” — while at univ level i have seen a lot of these faces doing computer science :p (too bad they were older than me!

    quote: Abinash meetoo:I mean, who starts learning how to drive by driving a bus?

    lmao, i learnt to drive on a truck that carries concrete blocks :p

    though you are right, it would be highly difficult to learn algorithms with VB… vb is simply.. not logical enough (or close to the way ppl tend to think).

    Another note, to curiiousEngine: no flaming intended, dude, please do read and re read all notes and review everything you had done in lectures and all classes, there isn’t one part where one product was said to be better than something else… if there was, it were personal opinions and were mentionned, and :p if you still don’t remember, read again, you’ll find brand names found in the “examples” sections.

    Though we sure are doped with old microsoft’s products in the labs, i remember in the programming languages lecture, the lecturer didn’t mind at all what operating system i was using, as long i had the proper compilers for the proper languages installed and was doingmy lab sheets :p
    Same for system software classes (or any other classes), e.g in system software, i never managed to have the heard to remove my BSD to install a linux distro there, and i wasn’t forced to, as long as i do my labs, i just had to learn the api for my OS :p For graphics classes also, there was never a problem if i did my work on my BSD, same for any other classes, the OS you use doesn’t matter, if you haven’t noticed that.. then.. you are *i don’t wanna say retard its a bad word*, nevertheless.. we still have lots ancient microsoft products on most of our lab machines :p with opensource alternatives also, you can choose on what you wish to learn…

    and.. “kifer to prend to cas pou 1 generalitE” you aren ot a student representative, so why do you say ” hurdle in our career.” do you mean, your career? at univ you are taught what driving is, and the standards in driving any car, what differs between the cars. :p from this knowledge you must use what you have as brain to know how to drive any type of car, else it is spoonfeeding.

    another friend once said.. live and let die :p i am tempted to use that on you and the dude that was arguing for nothing with me today :p

    technology is something that will change and continue to change, its not something that you can trust, the basics behind every technology is something that is almost standard, knowing this, you can know any technology.. provided you have a brain.

    +$3|v3n

  23. quote Rakesh> But why not tools that we gonna be using once out ?

    As in my previous post.. i put it in more simpler terms:

    tools you are gonna use? you don’t yet know what you are gonna use man, technology is something that changes very rapidly, if they were to teach you something you think you will be working on after you get out of univ now, you’ll be very disappointed when you leave univ, coz in 3years time, there’ll be an entirely new tool out there for you to re learn. If you are trying to escape the learning process after univ, its already lost mate, you need to learn by yourself to keep up to date.

    quoted from sundeep. T I firmly believe that there is a huge gap between what is delivered in class and what is expected from us in exams at times.

    I fear to be biased when saying yes here, but then, if you cared just stop looking at your own point of looking at things, you would notice that there are other persons who do get great marks .. which means… the system may not be totally that bad (i do have my points against certains things i find wrong in the way things are done), but definitely, before saying such a thing… do you give the necessary amount of hard work into what you do?
    I had been mediatating a lot lately about our rants against “the system”, yes its not perfect, but we students also have our flaws, most of us learn in the last minute, we have this bad habit, i have been (by passion *gud to learn ppl who you wish to S.E later * :p) studying the behaviour of a lot of ppl who seemed to rant about the system, and i have seen the efforts they gave in their studies also, i myself, i don’t give enougheffort in my studies (i have seen people work, and frankly, i am not surprised by the way those ppl work that they get great marks, they study far more in 1 day than I can in 3 days, i just can’t stop merrying around, and a lot are like me, and maybe you are like that also, so stop always complaining, why not try to work a lil more, then complain later :p )

    :p saying this coz it was the first time in my life i worked badly in a paper and came out with a smile on my face, i realized i didn’t work enough, so some marks doesn’t mean anything, as long as i still have the passion to learn more of it in my free time.

    aretE complain tou le temp.

    +$3|

  24. To Sundeep:

    Don’t forget that normal people are, by nature, reluctant to change so don’t count on something drastic happening too soon :-)

    Personally, I would be happy to just have enthusiastic students willing to learn and have fun…

    To Rakesh:

    See above. But don’t you want to do the same kinds of things that students are doing in top universities? Weird… and so unlike me when I was your age.

    You would love to have Photoshop and Flash on each computer BUT WE DON’T NOT HAVE THE MONEY! Remember that you don’t pay for your studies… If you can find a complete multimedia development environment which is free or really cheap which is better than Squeak then I’m open to all propositions…

    We don’t teach the use of tools at university. You can easily supplement whatever you do in class by yourself (by buying a nice book made for professionals) or by following a professional course like the MCSD.

    Sometimes I feel that some students forget that they have enrolled for “Computer Science & Engineering” or “Information Systems”. You have not enrolled for “Microsoft Certified Developer” or “Oracle Administrator”…

    You are at a UNIVERSITY!

    To Selven:

    Nice points you made. People who have passion usually succeed at university level.

    One day, say in 2025, while using your latest mind-controlled virtual-world development tool, you’ll still remember about Quicksort being O(NlogN) generally and being O(N^2) if that bloody data is already sorted and you’ll say to yourself: “It was worthwhile coming to University after all :-)”

  25. quicksort…doh!!! i was kinda hopin i was never gonna c that again!

    lots of passion in this thread huh! just do ur fing avinash, its bound to b better than we already have!!

    n if its not, well at least the first year kids gonna learn some cool stuff bout computer science during ur lectures!!!

    cheerz!!!

  26. Why would he have to remember quicksort when sorting would be a highly optimised standard operation in 2025? :-)

    But seriously, I’m starting to think that introducing an English language module wouldn’t be a bad idea :-D

  27. I’m sure Avinash intends the right things for his students, but I doubt some of them are seeing things as they are intended. They seem too busy bashing CuriousEngine to even notice that he is not against the proposed reforms, but that he would like some additional hands-on teaching with current professional tools. Him labelling Avinash was undue, of course, but I can see where he is coming from.

  28. To Selven:
    I think you should have a look at this: http://khedo.wordpress.com/2007/05/15/it-job-profiles-in-mauritius-%e2%80%93-2007/#more-176
    And about learning new technologies and new languages, its not really a big deal for me. When I came at UoM I had no idea about what is programming, but I was taught my first programming lesson at UoM by the best in the business in my(actually many) point view, that programming is just like writing English essays, it has its vocabulary (syntax) and grammar (semantics or logic). Since then writing programs is like writing English. And as Avinash told it’s an Art. Some can write good essays some less good n so on. (Unfortunately its still like that).

    To Avinash:
    I still recall to have used Flash 8 in MAD for 1 or 2 labs and I remember a couple of friends of mine who were in 2nd yr this yr saying about using flash in MAD as well and if am not mistaken in Web Technologies too. So how come ?? Is it really the money problem ? You (I mean lecturers) ask us about feedback. We give … and then the big excuse “MONEY PROBLEM”. Did the CS dept actually see to it that Macromedia tools or Photoshop cannot be funded to UoM ? I mean the CSE department has been able to setup an IPV6 lab with the help of DCL if am not mistaken. Or should I give examples where STUDENTS been able to get funds from the industry for organizing big activities ? If there is a will am sure there gonna be a way out. :p

    As I said for sure University is about teaching concepts, but then why is it that for the exams we are not tested on concepts but about writing codes in a specific language ? Or when it comes to assignments code in a specific language ?

    Exams questions repeat. Some papers resembling strangely to past papers. Some questions just the exact quote from some lecture notes and yet we are being examined on concepts ? This is not UNIVERSITY, this is UoM !

    To Sundeep:
    Top results are not so important. I still recall one of my lecturers claiming that 2:1 people seems to be more practical people than 1st class people and sometimes preferred. So far you will learn for the sake of learning you won’t love it. And I don’t get the point of running behind A’s in things that you won’t use. What will count at the end of the 3 yrs will be your problem solving skills, ability to work in group … B’s & C’s are just good as well ;)

  29. RakeshI think you should have a look at this: http://khedo.wordpress.com/2007/05/15/it-job-profiles-in-mauritius-%e2%80%93-2007/#more-176
    And about learning new technologies and new languages, its not really a big deal for me. When I came at UoM I had no idea about what is programming, but I was taught my first programming lesson at UoM by the best in the business in my(actually many) point view, that programming is just like writing English essays, it has its vocabulary (syntax) and grammar (semantics or logic). Since then writing programs is like writing English. And as Avinash told it’s an Art. Some can write good essays some less good n so on. (Unfortunately its still like that).

    point 1. :p you are again doing the same mistake, if you still believe that when you were in first year and what was popular and on demand at THAT time is still the most popular requirements in work right now, then, you have a point, but don’t you believe that when you were in first year at univ, what was at that time ‘a new found stuff’ after your 3 years of study ia now THE top requirements at work? This is a field which evolves too quickly, yo ucan’t learn one tool, you need to learn what is common in between and then try to adapt to everything that comes, i believe that the ability to adapt is what is most important, just learning how to use X tool doesn’t give any future advantage, and i am not going to waste my brain to learn only 1 thing and bet my entire life on this, i don’t like betting, i prefer to trust my ability to adapt and continue keeping in touch by myself with what comes out.

    If for every 2 years the univ has change to teach new tools, there’ll be a hell lot of troubles in getting a stable module leaflet.

    EddyWhy would he have to remember quicksort when sorting would be a highly optimised standard operation in 2025?
    Because google would be indexing every thing you search by using this super optimize thing, hence i preferto keep my porn stuff sorted using my own proggies :p lol

    Eddy But seriously, I’m starting to think that introducing an English language module wouldn’t be a bad idea
    Seriously, this is not a bad idea, i still don’t know how to talk/write proper french and english .. :p so here goes kab00m my first day at interview .. i’ll probably end up saying “wai seki mo ti p dir c…”.

    Eddy but I doubt some of them are seeing things as they are intended. They seem too busy bashing CuriousEngine to even notice that he is not against the proposed reforms, but that he would like some additional hands-on teaching with current professional tools.

    :p :p:p am a bloody troll andi bash for no erasons :p ..

    non menti, i was just trying to say that, having hands on experience with those tools is supposed to be done by ourselves, right now, those labs are soo well equipped that we have all tools at our disposals so we have to find ways to self teach certain stuffs to ourselves. What i am botherred about curiousEngine was mostly that he was too much ‘a job’ oriented, if most ppl get that type of thoughts, probably we’ll be having only application developpers in mauritius (application maintainers i should say), hence mauritius will just end up as what india call centers are right now, but version ‘programmers.

    We don’t want that, remember some point in times, we talked about quality, if we want quality, if not by teaching ppl how to use X or Y that we are going to succeed anything, sure, we can fool the system 1 year or 2 by making ppl leets into using application X, but after 2 years, application X is dead, do our university has to remake its entire syllabus for another emerging application which is using the same basics foundation, just for the need of making 1337s in Y applications? we want to produce ppl who are able enough to live in this jungle of zeros and ones all by themselves, coz after univ, everyone will be in competition with those students who gets out, you’ll be hearing lots of “j00 g0t pwned’ stuffs when you see a lil n00b who just is heavily dependant on only one application which by the time he get to work has already become obsolete and now the guy can’t adapt on his own.

    and .. joke @ rakesh
    RakeshAnd I don’t get the point of running behind A’s in things that you won’t use.
    pou fer beau pere content! sinon li pa pou donne la mains tifi! hahaha
    seriously, you are right on that, marks means notihng after some years (am not saying it because i get average marks, i am saying it because you don’t get any sense of *you are leet* with great marks but you do get it just after you just wrote something to kill all the nasty viruses on your friends PC. (1 lexemple sa)

    +$3|

  30. Rakesh: You and your friends use The Gimp and Squeak in labs because we, academics, evaluated both and decided that they were perfectly adequate to teach Multimedia Application Development. Of course, the fact that they are free was also an important factor.

    We looked at Photoshop and Flash and we felt they did not bring anything new from an academic perspective. As far as I know, the CSE department does not have any Flash license.

    You are free to supplement whatever academic training you get at university with professional training.

    Don’t forget that most of your lecturers do research and couldn’t care less about specific brands or versions of software used in industry. As researchers, we always are interested with what we think will become mainstream in 5 years. We don’t really care about what is hot today.

    We are academics! And, whether you like it or not, you are pursuing an academic degree

  31. nightprince says:

    hmm i heard of many educational versions of the commertial softwares available

    to point out this fack my secndary school sir lecraz teeluck just sent a request and got educational licenses of macromedia products to be used in the labs for teaching us the basic

    i thoughts that lecturers would b more qualified and be able to write better applications than a secondary teacher isnt it or not?

  32. Read my comment (#30) and try to make sense of it. You’ll be enlightened.

    As for your last sentence about lecturers being more qualified, it’s insulting both to lecturers (because of the not-so-subtle irony) and your past secondary school teachers.

    As from now, I’ll only accept comments from people who have the decency to use their real name.

  33. hahaha, its hard moderating a blog!

  34. To selven: ppl do not always complain for the mere sake of it. There are issues that need to be brought to the limelight so that we can tackle them. However, i cannot but agree that the level of input that students give into their studies is often minimal. And that would include me :S

    Anyway, here’s some good news:
    http://www.lexpress.mu/display_article_sup.php?news_id=87689

    cheers

  35. Work placements every year for 6 weeks will be extremely beneficial for all students.

    I did 3 work placements and a 6 months research project in a research lab when I was a student myself and I learned a lot about technology to supplement whatever I learned in class..

    I still fondly remember my first encounter with a Silicon Graphics Indy workstation running IRIX working with the Open Inventor graphics toolkit (which is now open source). No university at that time could have afforded that :-)

    Let’s hope WBL works!

  36. Sundeep TTo selven: ppl do not always complain for the mere sake of it.

    I am for complaints and suggestions, i do complain a lot myself, but lately, there seems to be a lot of complaints lately, and ppl are complaining for stuffs which may be in a certain way the result of their own actions.

    Sundeep T i cannot but agree that the level of input that students give into their studies is often minimal. And that would include me :S

    Am also in the lot :p

    Sundeep T Anyway, here’s some good news:
    http://www.lexpress.mu/display_article_sup.php?news_id=87689

    that’s some great news!

  37. WBL and the shorter training are the two main reasons why I chose the MCCI CBS over a seat in the UoM Faculty of Engineering when I was accepted for both.

    Based on your own experience, which graduates find jobs easier? Those coming out of UoM with a BSc Comp. Sci or the BTS IG from MCCI CBS?

    I reckon the training at CBS is not as extensive as at UoM, but then the objectives themselves differ.

  38. s/easier/more easily

  39. thank god i didnt study computing … :D

  40. To Eddy:

    Both find jobs equally well (especially now with so many BPO and development jobs).

    In fact, the MCCI programme, “Informatique de Gestion”, is close to the Information Systems programme at the university (in spirit at least). It’s an IT programme and not a CS programme. The student is taught IT to solve problems found in typical businesses. The student learns about programming and database but also business processes, accounting, etc.

    The Computer Science & Engineering programme is a CS programme (as its name implies) and has a very different objective (as far as I understand). Its role is to create hard-core computer scientists.

    I was telling my IS students this interpretation the other day and we realized that other “IT” programmes are possible. For example, “Software Development” with a focus on actual software tools used in industry, “Networking” with a focus on networks, the Internet and network administration, etc.

    A CS degree is very different from an IT degree. And both are important. And, to be frank, it’s only recently that I’ve understood the difference :-)

  41. What I observed was quite different. We, BTS IG graduates, would come on the job market with the ability to be immediately productive, whereas UoM BSc Comp Sci would find it harder to adapt to a professional environment. I recall that everyone in my BTS IG class (of 1998) were offered jobs even before graduating whereas friends who had studied at the UoM were struggling to find work. (But, when they did, they could usually bargain for higher salaries.) That was in 1998 before BPOs and call-centres.

    “A CS degree is very different from an IT degree. And both are important. And, to be frank, it’s only recently that I’ve understood the difference.”

    So, I’ve been the only one aware of the difference all this time!? ;-)

    Seriously, I think the issue is the lack of career guidance for school-leavers who plan to enrol in a university. I bet more than half of your students do not know what they signed up for, wrongly believing that they are training for immediate employment in the IT sector.

    Maybe the solution is as you suggest: breaking Computer Science and Engineering into two programmes; one focused on the science, the other on software development. That would be like the BTS IG programme which offers two options: software development and networking. (Only software development was available at the MCCI CBS when I studied there between 1996 and 1998.)

  42. ah, the debate seems to be pretty hot in here! lol, personally I tend to believe that the programming fundamentals module at university was wrongly named… up to now, from personal experience i’d say it should have been called “learn c++ by heart, or fail trying!”

    But, maybe now that avinash will be teaching that module, it might be a lil bit different… frankly speaking had i done that module without previous exposure to programming during my college days (Mr mohung is a great teacher) i would probably have failed lamentably.

    from my point of view, programming is an art, but mind you not the art of coding, rather its the art of understanding the problem, finding its solution and eventually writing up some procedures to solve the given problem, preferably in a programming language ;)

    this is why, programming should not be taught by directly placing the student in front syntax and semantics, rather they should be guided into thinking using a programming approach… as pascal said, stuff like :

    IF (it is raining)
    open umbrella
    ENDIF

    are really interesting, i learned that way. Get the kids to understand what is a decision, an iteration, a variable (servi panier ek canettes si bizin), etc… use real world examples… and eventually when they begin to grasp the basics, introduce them to how a computer works(“thinks”) and then place them in front of a programming language (since am not a big fan of functional programming, i’ll say go for PASCAL, as my old school teacher used to say “si zot conne pascal, zot cav appran nimport ki langaz”) and am damn sure we’ll see a change in the pass rate for that module, and this is bloody important, since knowledge of programming will help you everywhere, if you chose to become a software developer or even a network engineer, hell it will even help you in your everyday life :
    if (girl has bf) and (bf has big arms)
    then
    keep away
    end if
    :)

    en attendant, bon courage avinash for this module… we know your gonna do a good job, but as you said yourself, now this aint gonna be your personal module, you’ll have to share it with other lecturers, will you be able to cope with that?;)

  43. By the way, my colleagues and I are currently working on a BSc Software Engineering programme which is going to be more of an IT than a CS degree.

    So it seems that things are going to become clearer in the near future.

  44. csyke it should have been called “learn c++ by heart, or fail trying!”

    Never had any problem in the programming modules though (even if i didn’t score an A+, but it was the only modules i could sleep soundly and not even stress at all (ohh well ok, i got stressed seeing my marks in the tests, lol was because i did more than aws asked and couldn’t complete the paper, so now that i see it, some marks lost wasn’t a problem).

    en+ lecturer ki ti explikE la.. she was pretty good, many student who worked the labs and followed the class didn’t have any problems.
    The way she was saying “Write a program to…” in class.. encouraged us to write our code faster and to think faster, :p got a sense of competition in class and started to work better.
    many did.

    +$3|

  45. hmmm… i learned quite a lot from the first year programming module… it was interesting…. hmmm… i know a lot of students complaining about this module but personally i think it was the easiest module…. no need to learn anything by heart…. just practice a lot of exercises and once u get hold of the language and the concepts.. u just need to understand a problem and solve it…

    i started learning programming with pseudo codes too..on paper… then on the pc with qbasic… immediately fell in love with programming… lol keep experimenting new stuff everything in qbasic…. yeah one thing essential here… u must have fun when programming … that’s all :)

  46. Exactly :-)

    The big question is how to make programming fun to someone who has never ever programmed in his/her life (which correctly describes most of our students)?

    This is one of the hottest areas of research in the field of CS education.

  47. I know a quite good appraoch that am sure many would have loved to and would have immediately learnt programming just by the simple fact of doing it….

    Wargames + simple software reverse engineering :p

    there’s no one who wouldn’t wanna know how to get in or who isn’t interested in trying to find a hole.

    :p

  48. Madhav says:

    Wow, there are some really interesting points there! Well, I would have loved if you had done programming methodology with my class last year! The changes that you are proposing will need lots of work and would surely take time, wouldn’t it! IMHO, learning c++ syntax right at the start of the First Semester of first year is not good at all! For me the course was just boring! I think that the idea of doing more of problem solving is the key to making students understand programming methodology and not learning languages! And yeah as for those who think that it is better to teach VB.NET and all the latest stuff, well let’s just say that if you really are a good programmer, then the language you are using is not an issue, if you really are thinking about your career, well use your programming skills to learn the languages you want in your free time! And i know from experience that a language seems ‘difficult’ only the first time you see it, later on you’ll laugh at yourself for being afraid to start you first program in it! ;-)

    Anywayz, its now time to continue configuring my Fedora 7 installation so, c ya later!

    :-)

  49. dhivya says:

    hi avinash that’s the way!u r really intersting to me ,as i hav read all ur comments which is really awesome! though i’am very much younger to u who just completed my 12 std(in comp.sci).i opted to go into the same field b’coz i’am damn crazy about computers.as i hav read ur above comments that made a move.but the big question is that i’am not intersted in programming languages like c,c++,etc.i think these subjects are boring and i meant to do lot of exercise upon this.the only one request is that pls read my comments and give me a brightful answer if u hav to! pls advice

  50. Hi Dhivya,

    I am not sure I understand your question correctly. Learning to program is hard. I’ll advise you to read Teach Yourself Programming in Ten Years.

    It’s normal not to like C++. I don’t like it too. But, in my opinion, C is important.

  51. It’s normal not to like C++.

    Hopefully, you are not as subjective when teaching.

    Eddy.

  52. I don’t use C++ in my classes.

    Instead I’ve relied a lot more on Java and since I’ve began teaching Programming Languages on Scheme, Prolog and Ruby.

    I sometimes ask the students to write some small C programs too…

  53. Well, nice article…

    The first thing my teacher do to teach us programing language and understand the concept of memory ….

    He bring 3 plastic cup —- et coll zot lor tableau like this

    cup1 cup2 cup3

    then he add + sign between cup1 and cup2 and = sign between cup2 and cup3

    cup1 + cup2 = cup3

    The he started to teach us the concept of programing and memory.

    Next … He ask us to write down, what action we do when we wake up, brush our teeth , prepare milk …. then he convert each to pseudocode

    and latter on, when everybody understand the concept of programming … He start teaching us the programing language ( though it was Pascal ) … its was really nice to work with …

    Well, hope my note, may help in teaching student programming in a better way

    James

  54. Thanks for the cups analogy. I’m sure I’ll use that one day :-)

  55. Roshan says:

    MIT now uses Python instead of Scheme for their introductory programming course, 6.001

    link:
    http://blog.snowtide.com/2009/03/24/why-mit-now-uses-python-instead-of-scheme-for-its-undergraduate-cs-program

  56. Yes. And I think it’s a good thing (even though I love Scheme myself.)

    The nice thing is that Python is also being used at the University of Mauritius. Let’s hope the labsheets have also been updated to make students solve interesting and modern problems instead of eternally having to implement lists and stacks…

  57. moving back to python is again coming back to the old system, but you just don’t use c instead :p …

    slowly, they crazy junkies at mit will realize that how it was in the end was the best thing…

    don’t tell me am wrong.. how many of those who learnt from the assembly days are really good programmers now and how many who have learn in the scheme days are good programmers?

    :D the assembly dudes will definitely be the ones who seems to be having the lead… its just like that, you can’t learn to build castles on air if you don’t have a damned good understanding of how joints are sealed, how bases are made, how cement breaks! you just will turn into an idealistic dude who will not have an implementors ways of thinking… which means the kid will end up being … a poossi :D

    thing is.. if someone has to be taught how to use his brain to solve problems [i.e use easy to grasps languages to focus on the solving of the problem], then probably he shouldn’t be in the computing field :p he should do something else, sometihng he’s good at, something he likes … forcing the nature of someone isn’t going to make anything better other than just a robot!

    that may sound pretty rude to many, but i believe in it, one doesn’t learn how to solve problems to be a good programmer, one just learns programming languages and concepts to use his already existing problem solver skills.

    placing in bad quality meat in between the best slices of bread will never give you a better zinger than one with some real country chicken’s meat :D

    +selven

  58. I somewhat agree.

    Some people are born problem solvers and can easily become excellent programmers. It’s true that it would have been a bad idea if MIT had adopted Python only because it’s an “easier” programming language but this does not seem to be the case. As far as I understand, programming has changed. We don’t build fundamental blocks anymore. Instead, we rely on powerful class libraries and this is something Python has (as well as Java / C# / Ruby / etc.) which Scheme lacks.

    Personally, I still think Scheme is wonderful to teach the essence of computing.

  59. Hi, would like to know what type of jobs can one get when you know how to program? Are we bound to always create program or can we go into maintenance of pcs, reformatting etc?

  60. “what type of jobs can one get when you know how to program?”

    I guess programming jobs :-)

    Programming is art and vast. It is about talking to people having problems (analysis), finding a technical solution, implementing this solution and gathering feedback from users.

    Finding a technical solution (which is called designing) requires very creative people with a very high level of knowledge of the different kinds of technologies and techniques that exist.

    Implementing the design requires a lot of creativity too and a thorough knowledge of programming platforms and libraries.

    So, programming (also called software development) is really really for the creative minds (just ask the founders of Microsoft, Apple and Google for example.)

    As for “Are we bound to always create program or can we go into maintenance of pcs, reformatting etc?”

    What would you want to do such mundane tasks when you are a (real) programmer?

  61. would like to know what type of jobs can one get when you know how to program?

    Gosh.. that’s impolite and makes me want to ask the next question that comes with this question…

    Do you eric in your sane mind seriously like programming, or do you wish to do it in the hope of getting a well paid job?

    Yes to the first part of the question means : ok go on
    No: You’ll hate yourself if you do it :p get the heck away from it :p

    +selven

  62. You’re spot on, Selven :-)

  63. sameer says:

    does any1 have python programming past papers from uom,can u just send it by mail plz.
    driftking007@ymail.com

  64. @Sameer

    I don’t have any past papers. Why don’t you ask your lecturer at the UoM?

  65. @sameer, why would you need past papers for a module like programming?????

    you just learn to code, you code, and you shouldn’t ever have to worry about past papers, because any question must be as easy as the other, because it is… coding… the only problem you have to cope with it stress :D

    just code whatever you have in mind you shall never have to ever think you need a past paper for that module again!

  66. Very well said, @Selven :-)

Trackbacks

  1. [...] top five universities in the world can’t all be wrong after [...]

Speak Your Mind

*