Better Training

  • call.copse (5/13/2014)


    I do think there should be a safe environment where students can learn the theory without being overly concerned about practicalities - this could be the first year of the degree. More practical exposure after that would ensure that students are not intimidated by real things and doing real work - while the theory continues.

    I guess here there is a problem with what the practical stuff might be - Java, .Net, T-SQL, Ruby on Rails, something less directly practical? My understanding is that Java is most common on undergrad courses, .Net is felt to be more sullied and 'vocational'. Still, as long as they stay away from PHP and Perl...

    That's interesting. however, do we want the first or last year? When I started in CS, the first year was hard, really hard with theory and it weeded out people quickly. Seemed like a good way to raise quality.

    However since then, I've thought that there are people that can learn to program and do well, but don't need the theory on how a quicksort works.

  • Gary Varga (5/13/2014)


    I think that the problem is twofold:

    1) Graduates with Computer Science degrees have little understanding of applying what they have been taught in the real world.

    2) Non-Computer Science graduates (both non-graduates and graduates of non-computing degrees) never learn the theory.

    This is why any university degree course should include at least a final year project undertaken over 3-6 months which makes a significant contribution to their final grade.

    The exams test the students knowledge of the theory

    The project tests their ability to apply that theory.

    If it fails to test the application of knowledge then their supervisors are not doing their job.

  • Steve Jones - SSC Editor (5/13/2014)

    That's interesting. however, do we want the first or last year? When I started in CS, the first year was hard, really hard with theory and it weeded out people quickly. Seemed like a good way to raise quality.

    However since then, I've thought that there are people that can learn to program and do well, but don't need the theory on how a quicksort works.

    Don't need to know how quicksort works!? Then how can they decide which sorting algorithm to use for their application?

    Where I drew the line was when, in my own intro to DB class, the professor used more than a month to cover Gray and Reuter's "Transaction Processing: Concepts and Techniques" at some length. Didn't cover semantic overloading, gave short shrift to normal forms, but showed us every transaction processing algorithm and why it was flawed. In a higher level class this would be great, but many of the students in the class weren't even CS majors, let alone anyone that was ever going to have to implement a transaction processor in a DBMS. But, I guess we each have our own lines that we think demark essential/non-essential theory.

    [font="Verdana"]Please don't go. The drones need you. They look up to you.[/font]
    Connect to me on LinkedIn

  • Are we talking about programming or information technology?

    Programming makes up a significant portion of IT, but there are many many jobs where the training is poor, and quality suffers.

    Are your good programmers IT graduates? Do they come from the sciences and other fields of engineering? Are they analysts?

    What problem are they trying to solve? Why is there money available to pay them?

  • Thomas Abraham (5/13/2014)


    Gary Varga (5/13/2014)


    I think that the problem is twofold:

    1) Graduates with Computer Science degrees have little understanding of applying what they have been taught in the real world.

    2) Non-Computer Science graduates (both non-graduates and graduates of non-computing degrees) never learn the theory.

    ... (Nice comments removed for brevity.) ...

    PS Koen rocks!!!

    When I taught DB theory at the University of Illinois, I got admonished by a fellow professor for being too practical in my approach to the material. (I had the students do a DB design and front-end application project applying the principles we learned along the way during the semester - and I let them use Access!! Horrors!) I used Chris Date's theory book, and tested them on the material therein. However, I spent most of the lectures adding "real-world" examples of things to do and not do.

    I even put them in teams to have them get used to working with other people to get something done. And I picked the teams. They complained about not being able to pick their own teams. I pointed out that they might as well get used to it, as they were going to be working on a lot of teams with people they didn't pick, and frequently wouldn't even like!! Welcome to the world outside university.

    At any rate, I think people DO need to learn the theory. You won't use it every day. But, it provides a good foundation for everything else you need. And then you need to get an immediate opportunity to use that theory in a non-trivial project, so you can see why the theory is important, as well as what happens (good and bad) when you deviate from the theory.

    For the more promising students, I gave them the opportunity to do an actual application for a real customer. I found a guy that had 5 Pizza Hut restaurants that needed payroll and tax software. Some of the students worked on building that, and the rest had me for a customer - I even was vague on the requirements and changed them a bit towards the end - sound familiar?. The best of breed of the Pizza Hut applications got $500 from the owner and the owner got software he would not have been able to afford had he paid full price for it.

    I wish I had you as a professor back then.

    We also used Dates theory book, but we went really deep in the theoretical relation calculus, which is kinda .... boring 😀

    Need an answer? No, you need a question
    My blog at https://sqlkover.com.
    MCSE Business Intelligence - Microsoft Data Platform MVP

  • Steve Jones - SSC Editor (5/13/2014)


    That's interesting. however, do we want the first or last year? When I started in CS, the first year was hard, really hard with theory and it weeded out people quickly. Seemed like a good way to raise quality.

    However since then, I've thought that there are people that can learn to program and do well, but don't need the theory on how a quicksort works.

    I agree. The theory is a greater depth of knowledge and the more layers actual work moves away from first principles, the less it makes sense to build from first principles up. There will still be some basic theory needed, but in general, I think "peeling the onion" makes more sense. Start with how to use things and how to do things, and move further into theory and how things work as the material gets more advanced.

    Think of it like a car. You teach a driver some basics of how a car works, and how to drive. They learn more about maintenance as they become vehicle owners. And they learn the inner workings if they are going to become a mechanic, etc. The way comp sci approaches it, everyone is trained as a mechanic, even if all they are going to end up doing is driving the car.

  • Nevyn (5/13/2014)


    Steve Jones - SSC Editor (5/13/2014)


    That's interesting. however, do we want the first or last year? When I started in CS, the first year was hard, really hard with theory and it weeded out people quickly. Seemed like a good way to raise quality.

    However since then, I've thought that there are people that can learn to program and do well, but don't need the theory on how a quicksort works.

    I agree. The theory is a greater depth of knowledge and the more layers actual work moves away from first principles, the less it makes sense to build from first principles up. There will still be some basic theory needed, but in general, I think "peeling the onion" makes more sense. Start with how to use things and how to do things, and move further into theory and how things work as the material gets more advanced.

    Think of it like a car. You teach a driver some basics of how a car works, and how to drive. They learn more about maintenance as they become vehicle owners. And they learn the inner workings if they are going to become a mechanic, etc. The way comp sci approaches it, everyone is trained as a mechanic, even if all they are going to end up doing is driving the car.

    The way I see computer science is that they teach you how a carnot machine works, but in reality you don't have a clue how an actual engine works 😉

    Need an answer? No, you need a question
    My blog at https://sqlkover.com.
    MCSE Business Intelligence - Microsoft Data Platform MVP

  • Koen Verbeeck (5/13/2014)


    Thomas Abraham (5/13/2014)


    Gary Varga (5/13/2014)


    I think that the problem is twofold:

    1) Graduates with Computer Science degrees have little understanding of applying what they have been taught in the real world.

    2) Non-Computer Science graduates (both non-graduates and graduates of non-computing degrees) never learn the theory.

    ... (Nice comments removed for brevity.) ...

    PS Koen rocks!!!

    When I taught DB theory at the University of Illinois, I got admonished by a fellow professor for being too practical in my approach to the material. (I had the students do a DB design and front-end application project applying the principles we learned along the way during the semester - and I let them use Access!! Horrors!) I used Chris Date's theory book, and tested them on the material therein. However, I spent most of the lectures adding "real-world" examples of things to do and not do.

    I even put them in teams to have them get used to working with other people to get something done. And I picked the teams. They complained about not being able to pick their own teams. I pointed out that they might as well get used to it, as they were going to be working on a lot of teams with people they didn't pick, and frequently wouldn't even like!! Welcome to the world outside university.

    At any rate, I think people DO need to learn the theory. You won't use it every day. But, it provides a good foundation for everything else you need. And then you need to get an immediate opportunity to use that theory in a non-trivial project, so you can see why the theory is important, as well as what happens (good and bad) when you deviate from the theory.

    For the more promising students, I gave them the opportunity to do an actual application for a real customer. I found a guy that had 5 Pizza Hut restaurants that needed payroll and tax software. Some of the students worked on building that, and the rest had me for a customer - I even was vague on the requirements and changed them a bit towards the end - sound familiar?. The best of breed of the Pizza Hut applications got $500 from the owner and the owner got software he would not have been able to afford had he paid full price for it.

    I wish I had you as a professor back then.

    We also used Dates theory book, but we went really deep in the theoretical relation calculus, which is kinda .... boring 😀

    This was more the tact on the HND - yep on the qualification worth zip :angry:

    Gaz

    -- Stop your grinnin' and drop your linen...they're everywhere!!!

  • I think your approach to teaching is the most practical - even in a college/university setting. I studied Mathematics & Computer Science many years ago but found very little benefit to some of the courses I had other than learning theory. Don't get me wrong it was very important to have that foundation when it came to understanding what a linked list was or learning new programming languages and aggressively tackling new technologies. However, I found that when I got to the real world I needed more experience with software development methodologies, software project planning (e.g. providing a true time estimate based on other workloads) and software testing principles and strategies (i.e. writing an effective test plan, unit tests and using software testing metrics when needed).

  • Koen Verbeeck (5/13/2014)

    I wish I had you as a professor back then.

    We also used Dates theory book, but we went really deep in the theoretical relation calculus, which is kinda .... boring 😀

    I wish I had you as a professor right now! 😉

    [font="Verdana"]Please don't go. The drones need you. They look up to you.[/font]
    Connect to me on LinkedIn

  • Interesting subject, I wrote an article lest week about developers and lack of security education leading to security flaws in web applications: http://www.thatcoderguy.co.uk/2014/05/06/the-hacking-will-continue-until-web-developer-education-improves/

  • rodney.hardrick (5/13/2014)


    ...

    However, I found that when I got to the real world I needed more experience with software development methodologies, software project planning (e.g. providing a true time estimate based on other workloads) and software testing principles and strategies (i.e. writing an effective test plan, unit tests and using software testing metrics when needed).

    Amen to that. I recently ran into that one the hard. I'm coming to the end of the first major project that I'm managing and there are quite a few things I wish I had known going into it. Hopefully I've learned enough that the next one will go much more smoothly.



    The opinions expressed herein are strictly personal and do not necessarily reflect the views or policies of my employer.

  • Computer science degree from a liberal arts school here. Our major started with programming, the "weed-out" course (Assembly Language) was a 200-level one, as were the hard theory required courses. I do think that learning the theory behind what you're doing is a good thing as it explains why systems work better when you do things a certain way. And getting exposure to different languages helps you figure out how you learn best, which is always helpful given changes in technology and the job market.

    One thing that the core classes, required or not, helped greatly with is communication. It doesn't matter what part of IT you're in, you need to be able to communicate with users and with management and executives just as much as you need to be able to communicate with your teammates. Attempting to explain why a "real quick change" is going to take 40 hours of work without making the requestor's eyes glaze over or breaking their brain is an asset.

    That being said though, I do wish that I'd had more opportunities to learn in real world situations before getting let loose into the "real" world. Going back now and talking with the professors I learned from and worked with makes me realize how very different academic computing is from the corporate world. And while team projects are helpful to some extent in figuring out project management, some kind of internship in a corporate setting would have been extremely helpful for seeing how things work outside academia as well as figuring out where I wanted to focus in the classroom and how it related to my future career.

    Jennifer Levy (@iffermonster)

  • Aside from the (very interesting) theory vs practical discussion, the other issue with a comp sci education can be that it is broad based, but there is little room to develop expertise in any one area (such as ... gasp ... databases).

    My program at the time had two database courses. Even if you took both, not only were you nowhere near a professional knowledge of even the course's database (it was DB2 at the time .... useful). Worse, it didn't even provide a sense whether a profession in databases is something you would enjoy doing.

    For more in-depth database training, you usually either learn by starting as an accidental database developer/dba and/or through proprietary training and certification programs from different vendors (or SQL saturdays, sites like this, and other self directed learning).

    Now, I've been out of school 15 years and it may have gotten better in the interim. But based on the database work I see from most programmers, I rather doubt it. Another area where it would helpful to be "out in the world" figuring out what work interests you, and then having much more focused training thereafter.

  • Do not fool yourselves into how only woefully unprepared graduate DBAs are. The same is true for developers. It's just that graduate developers generally have delusions of adequacy!!!

    Gaz

    -- Stop your grinnin' and drop your linen...they're everywhere!!!

Viewing 15 posts - 31 through 45 (of 55 total)

You must be logged in to reply to this topic. Login to reply