Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Computery argument

  • 01-06-2007 2:26pm
    #1
    Registered Users, Registered Users 2 Posts: 3,323 ✭✭✭


    Sparks wrote:
    academically questionable partnerships with industry

    like?


Comments

  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    Like the bulk of the CEng course being done on Microsoft PCs using Microsoft C++ (and then Java and now C# if what I heard was correct).
    All GUI-based, and all buzzword education. So you get graduates who can click and drag with the best of them but who're lost the minute you get outside that particular commercial product, and who are effectively untrained and useless for high level work in industry.
    What's needed now, and what was delivered before TCD started down this path of pursuing whatever industry company had the most money, is a general, platform-independent education, covering the basic practises. Which, for CEng, does not mean knowing how to use Microsoft Visual Studio. It means knowing how the platform is put together and why, and how best to use it to solve a problem.


  • Registered Users, Registered Users 2 Posts: 7,314 ✭✭✭Nietzschean


    ummmm given i've done all those CEng courses you refer to, i'd suggest you get better examples. Pretty much nothing i did was microsoft orientated, sure i used visual studio to do console C++ applications, but they compiled just as happily with gcc on linux. Something wrong with java? they have to learn OOP using some language or another.....
    languages are seen as largely irrelevent anyway its more about the coding practice/skills learned while doing the projects...


  • Registered Users, Registered Users 2 Posts: 3,323 ✭✭✭Hitchhiker's Guide to...


    Sparks wrote:
    Like the bulk of the CEng course being done on Microsoft PCs

    Microsoft are making PCs now? Cool!


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    given i've done all those CEng courses you refer to, i'd suggest you get better examples.
    Given that I've done them and then taught them for six years, I'll stick with them.
    Pretty much nothing i did was microsoft orientated, sure i used visual studio to do console C++ applications, but they compiled just as happily with gcc on linux.
    The fact that you know what gcc is or how to use it puts you in the top ten of your class. Which is grand, except that the top ten rarely learn much new in terms of technology in college - procedures and best practise and basic theory, yes, tech, no. And that's a problem.
    Something wrong with java? they have to learn OOP using some language or another.
    Yes, and yes but not that one.
    Look, Java's great for what it's designed for. Problem is, it's not designed to be used to teach OOP. It's designed to produce an industrial solution quickly. Not to teach. And for that reason it shouldn't have ever seen the inside of a training lab for the first two or three years of a CEng course.

    edit: There's also the point that while they have to learn OOP, that's not the only form of programming they have to learn. Procedural, functional, aspect-orientated, process oriented, dataflow, event-based, logic-based and others. The more paradigms you learn, the better you get at this.
    languages are seen as largely irrelevent anyway its more about the coding practice/skills learned while doing the projects...
    You couldn't be more wrong, for two reasons.
    The first, more trivial reason, is that if languages are irrelevant, we can use whatever we want and therefore there's no reason to change from Modula-2 to C++ to Java to C#, because we gain nothing at all.
    The second, deeper reason, is that the language matters enormously. In CEng the assertion that language shapes thought is not just an interesting topic of crossover research for anthropology, linguistics and others; it's a fundamental thing to consider during design. All programming languages are not created equal, and you must know their strengths and weaknesses to select the optimal one for the problem you're working on. Also, different languages have different models of how they're meant to be used and those different models have fundamental and dramatic effects on how you design your solution. For example, no competent person would choose COBOL over Perl to do text processing, and only someone who had no regard for the final solution would suggest using C++ for a device driver.
    Language matters. And C++, Java and C# are bad choices for training.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    Microsoft are making PCs now? Cool!
    Insert the word "based" anywhere you wish...
    The end result is everyone's using the same architecture running the same operating system and the same development platform and the reasons for the design choices made for that architecture, that OS and those applications are things you need to understand to be good at this job.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 7,314 ✭✭✭Nietzschean


    Sparks wrote:
    Given that I've done them and then taught them for six years, I'll stick with them.
    good for you...
    The fact that you know what gcc is or how to use it puts you in the top ten of your class.Which is grand, except that the top ten rarely learn much new in terms of technology in college - procedures and best practise and basic theory, yes, tech, no. And that's a problem.
    Huh? grand i knew what gcc was long before i entered the doors of trinity, but several people who have been trained on those evil microsoft pieces of software during college have ended up quite proficcent at using gcc/g++/icc aswell.... infact i believe it was part of a some project for cs students...
    Yes, and yes but not that one.
    Look, Java's great for what it's designed for. Problem is, it's not designed to be used to teach OOP. It's designed to produce an industrial solution quickly. Not to teach. And for that reason it shouldn't have ever seen the inside of a training lab for the first two or three years of a CEng course.
    It made it into 3rd year as its first year in CEng, where in the courses i took it was used in the teaching of concurrency, though C methods were also shown for that. But given the Java concurrency methods are cross platform and those of C/C++ not it is probably a more robust solution to teach them that. And by third year they should have a decent grasp of OOP, and the course wasn't on OOP but more concurrency, which java provides an easier platform for students to program in...
    edit: There's also the point that while they have to learn OOP, that's not the only form of programming they have to learn. Procedural, functional, aspect-orientated, process oriented, dataflow, event-based, logic-based and others. The more paradigms you learn, the better you get at this.
    CEng just don't have enough computer courses to do all that, Comp Science do courses on functional programming and such...
    [quoe]
    You couldn't be more wrong, for two reasons.
    The first, more trivial reason, is that if languages are irrelevant, we can use whatever we want and therefore there's no reason to change from Modula-2 to C++ to Java to C#, because we gain nothing at all. [/quote]
    Erm in a college setting in all likelyhood given i don't even know what Modula-2 is but we could probably use it. Industry requires languages, projects/results require languages,but programming theory doesn't. They should come out in a language agnostic state. Heck most programming these days is probably done in icky java, certainly most jobs going seem to be in it.
    The second, deeper reason, is that the language matters enormously. In CEng the assertion that language shapes thought is not just an interesting topic of crossover research for anthropology, linguistics and others; it's a fundamental thing to consider during design. All programming languages are not created equal, and you must know their strengths and weaknesses to select the optimal one for the problem you're working on. Also, different languages have different models of how they're meant to be used and those different models have fundamental and dramatic effects on how you design your solution. For example, no competent person would choose COBOL over Perl to do text processing, and only someone who had no regard for the final solution would suggest using C++ for a device driver.
    Language matters. And C++, Java and C# are bad choices for training.
    Um C++, Java and C# are what they will 1) find the most support for, 2) find jobs from 3)be more insterested in due to the results they can produce.


    Largely you need to engage the students to keep them working, which means they need interesting results, which is why afaik it is being considered to use lego mindstorms for assembly language programming rather than the 68k robots. Since they will be able to get them to do something interesting. Likewise if we take 2E3, which changed from a boring course on tokenisers to one on graphics, look at the effect it had on interest in the course? its increased massively. Choosing an abstract language cause it fufills some esoteric ideal is silly. Teaching should be pretty language agnostic but it should still remain relevent....





    And regardless of all that, your original point was that since students use visual studio they are somehow microsoft's bitches just isn't really true.... C# would be pushing it over teh line imo. But java/C++/C done on vis studio would be grand imo, its just an IDE at the end of the day. and afaik they use eclipse for java....


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    good for you
    And good for you. Now that we've both argued from authority, onto the actual argument! :D
    Huh? grand i knew what gcc was long before i entered the doors of trinity, but several people who have been trained on those evil microsoft pieces of software during college have ended up quite proficcent at using gcc/g++/icc aswell.... infact i believe it was part of a some project for cs students...
    Here's the thing. It shouldn't be "several" it should be "all". And it shouldn't be a side project for CS students, it should be a fundamental part of the course for CEng students to know how compilers work and to write a simple one themselves. And it needs to not just be on PCs but on other platforms and also cross-compiling should be covered.
    It made it into 3rd year as its first year in CEng
    Last I looked, it was being used from 1st year through 3rd year in CEng, and was in use as the main language.
    given the Java concurrency methods are cross platform
    They're not. They say they are, and the API is cross-platform, but the actual underlying mechanism varies from platform to platform and JRE to JRE. In fact, Java is about the worst mainstream OOP language I can think of to demonstrate concurrency, and trying to demonstrate concurrency with an OOP language anyway is a somewhat suspect choice.
    CEng just don't have enough computer courses to do all that
    This I know, but the problem isn't just a lack of courses, it's that there's no development arc running the four years. Paradigms follow from basic assumptions - taught in the right order, they are easier to pick up. A month of assembly language, for instance, makes understanding what C is doing a lot easier.
    So the course needs more time and better structuring. And this isn't something new - this is something that's been said within the industry for years. It is time to move to a five-year cycle.
    Comp Science do courses on functional programming and such...
    And so should C.Eng - a wide exposure to paradigms is not a luxury in college, it's a necessity. The wider the exposure, the wider the array of choices for designing solutions and the better the engineer.
    Erm in a college setting in all likelyhood given i don't even know what Modula-2 is
    (it was a follow-on from Pascal that was developed by Wirth to teach OOP and it was used in College before some bright plod thought that C++ was a better buzzword)
    Industry requires languages, projects/results require languages,but programming theory doesn't. They should come out in a language agnostic state.
    I direct you to Knuth! :D
    (And the gang of four, of course)
    Heck most programming these days is probably done in icky java, certainly most jobs going seem to be in it.
    That's not an argument for teaching it in college, it's an argument to not teach it in college. Language specifics can be taught in language lawyer courses, they shouldn't be part of the basic educational package in CEng or CS.
    Um C++, Java and C# are what they will 1) find the most support for, 2) find jobs from 3)be more insterested in due to the results they can produce.
    That same argument has been trotted out for C++ and then Java and then C#. It was wrong each and every time. As I said above, a language being in use in industry is an argument against its use in college - because if it's in use in industry, it's built for industry, which means it's built for shortcuts and rapid development. Those are great for doing but are anathema to properly learning.
    And the fact that languages supplant each other on a regular basis in industry is another problem. Programming languages are just another kind of application in industry, which means there's marketing and product cycles and so forth driving the changes a lot of the time. And that means that you're changing the tools regularly for little reason. Which means that the engineer has to know what the tool is doing, why it's doing it, what it's strenths and weaknesses are, and so forth - that's deep knowlege, you only get it from comparative studies, and that means you need to know the fundamentals well and also have a lot of exposure. Which means basic theory lessons on what the various programming models are, and then specific language lawyer modules later on.
    Largely you need to engage the students to keep them working, which means they need interesting results, which is why afaik it is being considered to use lego mindstorms for assembly language programming rather than the 68k robots.
    Having worked on both those course, I would submit the theory that the lack of availability of 8-bit bus 68k processors would be more of a consideration.
    Likewise if we take 2E3, which changed from a boring course on tokenisers to one on graphics, look at the effect it had on interest in the course? its increased massively.
    Last I saw, 2E3 was a mandatory course, set at too high a level both in abstract and in practise. Changing it's examples from tokenisers to graphics is like changing your headache cure from heroin to crack.
    Choosing an abstract language cause it fufills some esoteric ideal is silly. Teaching should be pretty language agnostic but it should still remain relevent.
    And teaching cannot be useful if what you learn is not current by the time you graduate. Being language-independent is not a luxury, it is a mandatory prerequisite for a good course.

    And regardless of all that, your original point was that since students use visual studio they are somehow microsoft's bitches just isn't really true.... C# would be pushing it over teh line imo. But java/C++/C done on vis studio would be grand imo, its just an IDE at the end of the day. and afaik they use eclipse for java....
    Visual Studio was the original IDE proposed for Java. The progression was from Borland C++ to Visual C++ to Visual J++ (via JBuilder). (After that point, I stopped as the TA for the course and asked to be transferred off it the next year).
    Here's the kicker. It was not by any means odd to find someone had gone through three years of the CEng course without any idea of how a program got from the lovely fancy GUI IDE to actually running on the PC. There was a massive gulf in their knowlege, in general, between the code they wrote and the application it produced. No understanding of libraries, frameworks, VM engines, or any of the rest of the infrastructure. That wasn't even touched until the third year microprocessors course.
    And the thing is, that course ought to be the first thing the CEng students do in first year.
    Well, perhaps the second, after a month or two of pure theory lectures to orientate them.


  • Registered Users, Registered Users 2 Posts: 5,166 ✭✭✭enda1


    Sparks wrote:

    Last I saw, 2E3 was a mandatory course, set at too high a level both in abstract and in practise. Changing it's examples from tokenisers to graphics is like changing your headache cure from heroin to crack.

    I did the 2e3 course and it wasn't too bad. 1e3 was nicer though. That was thought on mac's too, g++ command i seem to remember.

    Fun memories. Whats C.Eng anyways and how does it differ to the BA.mod course?


  • Posts: 16,720 ✭✭✭✭ [Deleted User]


    Computer Engineering through general engineering (BA, BAI) instead of Computer Science.


Advertisement