Misconceptions that IT professionals seem to have about CS education(codeboom.wordpress.com)
codeboom.wordpress.com
Misconceptions that IT professionals seem to have about CS education
http://codeboom.wordpress.com/2014/06/04/wholikesphp/
18 comments
"but once you leave the sphere of companies ... the atmosphere can become rather absurd"
Total agreement here. A lot of the issue is ignorance. Most small to medium business owners and managers do nto code and do not know how to. They see a CS grad as a white, male, 135 lbs., pasty, skinny genius. Just like Bill Gates, Zuck, and countless movie 'hackers'. They expect your skills to be just as good to, ie. able to 'code' a website in minutes and hack NORAD as well.
Why? They just plain do not know anything about the discipline. They have to go on what little they do know, and that stuff oversells the CS degree by a lot.
I had a boss once that thought I should be able to program a microcontroller in an afternoon. Mind you, the spec sheet is ~650 pages. But he really really did think that it was that easy. Like it was speaking Spanish, it just took a long time to get up to speed, but when you are there, it's super simple.
Its the same disconnect as with dentists, accountants, lawyers, and mechanics. Most people can't begin to think in the way required, and they are helpless without you. That breeds resentment and suspicion.
To help with these issues, a level of trust needs to be established. You have to trust them, and they you. Many employers think that the trust comes from the degree granting agency. University vetted you, so I can at least trust that you know how to do hacker stuff.
Unfortunately, the gulf is so wide between the layman and the professional that trust is ALL you have to go on and a degree is not enough. Possibly a better testing agency, like the Bar, AMA, or ASE is needed as 'hackers' are more and more needed.
Total agreement here. A lot of the issue is ignorance. Most small to medium business owners and managers do nto code and do not know how to. They see a CS grad as a white, male, 135 lbs., pasty, skinny genius. Just like Bill Gates, Zuck, and countless movie 'hackers'. They expect your skills to be just as good to, ie. able to 'code' a website in minutes and hack NORAD as well.
Why? They just plain do not know anything about the discipline. They have to go on what little they do know, and that stuff oversells the CS degree by a lot.
I had a boss once that thought I should be able to program a microcontroller in an afternoon. Mind you, the spec sheet is ~650 pages. But he really really did think that it was that easy. Like it was speaking Spanish, it just took a long time to get up to speed, but when you are there, it's super simple.
Its the same disconnect as with dentists, accountants, lawyers, and mechanics. Most people can't begin to think in the way required, and they are helpless without you. That breeds resentment and suspicion.
To help with these issues, a level of trust needs to be established. You have to trust them, and they you. Many employers think that the trust comes from the degree granting agency. University vetted you, so I can at least trust that you know how to do hacker stuff.
Unfortunately, the gulf is so wide between the layman and the professional that trust is ALL you have to go on and a degree is not enough. Possibly a better testing agency, like the Bar, AMA, or ASE is needed as 'hackers' are more and more needed.
A good part of this is that almost all software engineering is vocational, right? But it isn't always taught that way, and somehow in the public mind CS has become equated with "able to program computers".
This sucks two ways: first, it means that people with solid theoretical foundations in CS are derided if they can't--for example--get an iPhone to print to a wireless printer, and second (and worse!) it means that people who want to do something with computers think they can't because they don't have a CS degree. It's a sad state of affairs.
This sucks two ways: first, it means that people with solid theoretical foundations in CS are derided if they can't--for example--get an iPhone to print to a wireless printer, and second (and worse!) it means that people who want to do something with computers think they can't because they don't have a CS degree. It's a sad state of affairs.
Another way of looking at it is that CS graduates are overqualified for 90% of current internet jobs. They are also underqualified, judging from the number of CS grads and upperclassmen asking for help with a Rails tutorial, since CS programs do not actually teach web development. They are also likely to have a fair bit of debt from college loans. This is a great way for companies to prejudice themselves down the salary ladder while overestimating the potential of any one recruit, since the underpaid-and-overqualified are going to want a raise as they become more proficient in the vocational side of programming, and as everybody knows: the best way to get a raise is to change jobs. Rinse and repeat.
> CS graduates are overqualified for 90% of current internet jobs. They are also underqualified...
This is 100% true for new CS grads I think.
It's even true for people like myself (who have been working in industry for over 5 years, but then don't know a particular tool that a new tech job is asking for...if I don't have to use it at my current job, and I can only program small things on the side using a particular language/tool, how does one get the needed experience that the startups want you to know if they won't hire you so you can learn it, firsthand?).
I just finished a 3-4 month stint having a past student volunteer with me so I could give him the additional direction and practical experience I knew he needed to actually get a job locally (and web developer positions are few and far between where I live). This is a few years AFTER he had already graduated from San Diego State's CS program.
Now with that additional training he was able to get a part-time position at a local web development firm (a foot in the door) and is also on his way to a 2nd interview for a web developer position at our local county office.
It hurts when you can see the potential in someone and know that it's not being developed properly because no one else (a.k.a. potential employers) can see it and make the jump to hire the person based on their potential and then give a bit of their time to train that person properly.
It's also awesome to know that my past student is going in the right direction now through my guidance (partially) but also through his hard work these past few months to acquire the needed skills :-).
P.S. I forgot to mention in our area, most of the graduates of our CS program can't find actual software development jobs (because there are hardly any available) so many of them end up in regular IT work, which makes them even more overqualified (and underqualified) since their schooling really didn't teach them about the IT stuff, per se, so they have to learn a whole lot on the job (once they are even able to get one).
This is 100% true for new CS grads I think.
It's even true for people like myself (who have been working in industry for over 5 years, but then don't know a particular tool that a new tech job is asking for...if I don't have to use it at my current job, and I can only program small things on the side using a particular language/tool, how does one get the needed experience that the startups want you to know if they won't hire you so you can learn it, firsthand?).
I just finished a 3-4 month stint having a past student volunteer with me so I could give him the additional direction and practical experience I knew he needed to actually get a job locally (and web developer positions are few and far between where I live). This is a few years AFTER he had already graduated from San Diego State's CS program.
Now with that additional training he was able to get a part-time position at a local web development firm (a foot in the door) and is also on his way to a 2nd interview for a web developer position at our local county office.
It hurts when you can see the potential in someone and know that it's not being developed properly because no one else (a.k.a. potential employers) can see it and make the jump to hire the person based on their potential and then give a bit of their time to train that person properly.
It's also awesome to know that my past student is going in the right direction now through my guidance (partially) but also through his hard work these past few months to acquire the needed skills :-).
P.S. I forgot to mention in our area, most of the graduates of our CS program can't find actual software development jobs (because there are hardly any available) so many of them end up in regular IT work, which makes them even more overqualified (and underqualified) since their schooling really didn't teach them about the IT stuff, per se, so they have to learn a whole lot on the job (once they are even able to get one).
I may have misinterpreted what you meant by vocational, but no it's not. In my CS program we had maybe 3 programming classes. I learned pretty much all my programming on the job, but my CS program taught me to think about problems differently and it was definitely useful.
> it means that people with solid theoretical foundations in CS are derided if they can't--for example--get an iPhone to print to a wireless printer
1) You need to explain to people what you do - "write database applications and generate web pages from the data stored in the database".
2) And what the people questioning your ability are looking for "you are looking for someone that works in a mobile phone shop, not a software engineer".
The fact they expect a software engineer to deal with configuring /installing applications on a mobile phone, makes them look stupider than a software engineer who "can't" configure a phone.
1) You need to explain to people what you do - "write database applications and generate web pages from the data stored in the database".
2) And what the people questioning your ability are looking for "you are looking for someone that works in a mobile phone shop, not a software engineer".
The fact they expect a software engineer to deal with configuring /installing applications on a mobile phone, makes them look stupider than a software engineer who "can't" configure a phone.
>'CS knowledge is, I think, valued highly (or at least valued) in the tech sector itself, but once you leave the sphere of companies that make tech products for tech people, or if you happen to be outside one of the major software hubs, the atmosphere can become rather absurd.'
Spot on.
By my estimation, the most common sort of work in IT has little resemblance to computer science. It's something more along the lines of very environment, industry and proprietary platform specific operations.
There's a very wacky disconnect between what's taught in schools, desired by students and expected by employers.
I'd liken the situation to one in which mechanical engineers, ASE mechanics and truck drivers were all lumped together as simply 'TI' (Truck Industry).
All those roles are needed and all have ready and willing candidates available, but most employers have no clue how to compensate, hire or task each appropriately.
Spot on.
By my estimation, the most common sort of work in IT has little resemblance to computer science. It's something more along the lines of very environment, industry and proprietary platform specific operations.
There's a very wacky disconnect between what's taught in schools, desired by students and expected by employers.
I'd liken the situation to one in which mechanical engineers, ASE mechanics and truck drivers were all lumped together as simply 'TI' (Truck Industry).
All those roles are needed and all have ready and willing candidates available, but most employers have no clue how to compensate, hire or task each appropriately.
I think there's also another point, which is that the endpoint isn't to churn out CS students to be good workers that plug immediate needs in industry: it's to produce graduates are going to have the tools to do things better and maybe even put the existing people out of business.
I am curious who sets these end points?
I studied IT, because I wanted to get a job in it.
Spoken exactly like what I'd expect from a teaching field that is doing everything possible to obsolete itself.
Look, let me sum up the problem with CS education in a nutshell: today, when I think about hiring someone, I basically don't care about their CS education. This is increasingly what I hear from my colleagues as well. Degree in CS means more or less nothing. Notice that that's not the case in Chemistry (since the author is fond of comparing fields). What does that tell us? That whether you like it or not, you are doing a poor job teaching them, or that we have very different definitions of CS. Which is fine, after all, there are degrees in accounting and degrees in math that are separate, maybe we need to move to that model.
If your program graduates students that have never used version control, never committed to a single open source project, or have a difficult time picking up new languages/technologies, then maybe you're teaching them "something", but that something isn't what the world cares about. So unless they go and become teachers of this thing you call CS as well, its time to change what you're teaching.
(BTW, I rarely find that these recent grads have done NP reductions or any of that kind of thing that would at least justify not teaching them all that "useless" industry stuff)
Look, let me sum up the problem with CS education in a nutshell: today, when I think about hiring someone, I basically don't care about their CS education. This is increasingly what I hear from my colleagues as well. Degree in CS means more or less nothing. Notice that that's not the case in Chemistry (since the author is fond of comparing fields). What does that tell us? That whether you like it or not, you are doing a poor job teaching them, or that we have very different definitions of CS. Which is fine, after all, there are degrees in accounting and degrees in math that are separate, maybe we need to move to that model.
If your program graduates students that have never used version control, never committed to a single open source project, or have a difficult time picking up new languages/technologies, then maybe you're teaching them "something", but that something isn't what the world cares about. So unless they go and become teachers of this thing you call CS as well, its time to change what you're teaching.
(BTW, I rarely find that these recent grads have done NP reductions or any of that kind of thing that would at least justify not teaching them all that "useless" industry stuff)
The comparison to chemistry is certainly odd. I think most fresh-faced chemistry graduates would be able to work in a chemistry lab...as a lab assistant. After all, chances are they had a student position doing just that. They wouldn't be able to do anything else since the other positions require post-graduate study. That's an entirely different problem than the one faced by IT managers.
Once again I'll reiterate that the teacher in question is in a school for 11 - 18 year old students, although I'd have thought this was clear from the article.
Her complaint is the way in which "IT professionals" complain about high school education, not degree level education.
In the context of the original article, this comment is therefore a little unrealistic. >If your program graduates students that have never used version control, never committed to a single open source project, or have a difficult time picking up new languages/technologies, then maybe you're teaching them "something", but that something isn't what the world cares about.
I teach CS to the 11-14 age range for 1 hour a week, and 2.5 hours a week to 14+ students. Good luck teaching core CS theory, multiple languages and version control in that amount of time.
Her complaint is the way in which "IT professionals" complain about high school education, not degree level education.
In the context of the original article, this comment is therefore a little unrealistic. >If your program graduates students that have never used version control, never committed to a single open source project, or have a difficult time picking up new languages/technologies, then maybe you're teaching them "something", but that something isn't what the world cares about.
I teach CS to the 11-14 age range for 1 hour a week, and 2.5 hours a week to 14+ students. Good luck teaching core CS theory, multiple languages and version control in that amount of time.
What you seem to want is a Software Engineering degree. They exist. Hire people with those degrees if that's what you're looking for.
My CS degree was about 50/50 CS and programming. I felt is was a good balance, but there was still tons I needed to learn on the job. I'd never done web dev outside of that one weekend I checked out codecademy. I'd never set up a web server or pulled a repo from github or any of the other things you'd want me to be able to do in industry, because they weren't a part of my education. I did write a tcp/ip server from scratch, make Roombas write things, and the like, because those were part of my education, but none of that has come in handy in my current job.
There's a real divide between what education is and what industry leaders think it should be. It has never been and likely will never be about churning out job-ready young adults with all the skills industry wants. That's vocational school, not university. Don't confuse the two.
My CS degree was about 50/50 CS and programming. I felt is was a good balance, but there was still tons I needed to learn on the job. I'd never done web dev outside of that one weekend I checked out codecademy. I'd never set up a web server or pulled a repo from github or any of the other things you'd want me to be able to do in industry, because they weren't a part of my education. I did write a tcp/ip server from scratch, make Roombas write things, and the like, because those were part of my education, but none of that has come in handy in my current job.
There's a real divide between what education is and what industry leaders think it should be. It has never been and likely will never be about churning out job-ready young adults with all the skills industry wants. That's vocational school, not university. Don't confuse the two.
I think the degree-inflation problem is the key here. There is no reason why a person needs a degree to be able to program. That wasn't the original purpose of such degrees.
In a nutshell, academic certifications assess whether you know things, while industry certifications assess whether you can do things.
For a business, there is a strong focus on doing, rather than knowing. Who cares about whether certain classes of problems are computable? Just write a program that does it for our problem set.
And there is nothing wrong with this. At the same time though, if you want to make advances that bring about the next generation of programming/technology/etc, you would need to have an understanding of how these things work.
Unfortunately, this line has been blurred significantly -- universities have become big business, caring more about selling degrees then teaching fundamentals. At the same time, businesses have been using degrees as a criteria for hiring, and then complaining that people with said degrees can't do what they expect them to.
I hate to describe a problem without providing a solution, but I don't really have a solution for this.
In a nutshell, academic certifications assess whether you know things, while industry certifications assess whether you can do things.
For a business, there is a strong focus on doing, rather than knowing. Who cares about whether certain classes of problems are computable? Just write a program that does it for our problem set.
And there is nothing wrong with this. At the same time though, if you want to make advances that bring about the next generation of programming/technology/etc, you would need to have an understanding of how these things work.
Unfortunately, this line has been blurred significantly -- universities have become big business, caring more about selling degrees then teaching fundamentals. At the same time, businesses have been using degrees as a criteria for hiring, and then complaining that people with said degrees can't do what they expect them to.
I hate to describe a problem without providing a solution, but I don't really have a solution for this.
The solution is apprenticeships. University is academic, not vocational. Universities were never intended to teach specific job skills, they were/are supposed to teach how to think, or the broad sweep of the entire subject.
Apprenticeships were the vocational education, and they were done in the workplace. Apparently they still do coding apprenticeships in Germany and they work really well.
Employers need to stop expecting new hires, and especially new graduates, to be able to hit the ground running at full speed, and train more.
Apprenticeships were the vocational education, and they were done in the workplace. Apparently they still do coding apprenticeships in Germany and they work really well.
Employers need to stop expecting new hires, and especially new graduates, to be able to hit the ground running at full speed, and train more.
You realise that the post was about high school, right? It's all very well getting on the high horse about degrees in CS, but that isn't the case in point.
Yeah saw after the fact that that was mentioned, my point stands for college degrees though (which I have indeed heard similar opinions on).
In this case... I guess I just find the premise that a bunch of industry people are telling her what to teach some high schoolers a little hard to believe/overblown (but I guess I'm not from the UK so maybe its common there to do that?). But yeah, sure, teach them whatever you want in high school, I agree.
In this case... I guess I just find the premise that a bunch of industry people are telling her what to teach some high schoolers a little hard to believe/overblown (but I guess I'm not from the UK so maybe its common there to do that?). But yeah, sure, teach them whatever you want in high school, I agree.
I really wouldn't go so far as saying teach whatever you want (I teach CS in high school), but in Australia as well I get industry PD sessions where we get fed totally unrealistic expectations for the level most teenagers are operating at.
The author is not teaching degrees, she's teaching a high school class. There's a clarification at the top of the article (in italics, directly after the heading), appropriate commentary peppered throughout the article body, and half a dozen comments here on HN to that effect.
I'm astounded that so many people are pinging the author for not being on the ball, yet missing all the massive signposts saying "This is a high-school environment, not university".
I'm astounded that so many people are pinging the author for not being on the ball, yet missing all the massive signposts saying "This is a high-school environment, not university".
I think that disclaimer was added after the fact. I don't remember it being there when I read this story the first time. Either way, I didn't see it at all when I read the article. I'm willing to admit that I'm just not on the ball, but the fact that a bunch of people missed it is rather telling, isn't it?
In one of the final paragraphs, she repeats 'teaching children' a couple of times, and the language in the rest of the article is high-school-related. It's not just the disclaimer. For example, how many people do post-graduate study in Education, then teach at University? Apart from the people teaching Education itself, it's a vanishingly small number.
the fact that a bunch of people missed it is rather telling, isn't it
Not particularly, given that the author's criticism is that folks in our industry give her short shrift and ignore what she has to say. It actually plays directly into her criticism that a bunch of us just tilted at her windmill without bothering to understand what it is that she actually does first.
the fact that a bunch of people missed it is rather telling, isn't it
Not particularly, given that the author's criticism is that folks in our industry give her short shrift and ignore what she has to say. It actually plays directly into her criticism that a bunch of us just tilted at her windmill without bothering to understand what it is that she actually does first.
[deleted]
It's a great subtle troll that the title refers to professional programmers as "IT professionals."
They of course don't think of themselves that way; they're "developers", "engineers", or "hackers." To them, IT is the poor guy installing Adobe Reader on the manager's PC.
They of course don't think of themselves that way; they're "developers", "engineers", or "hackers." To them, IT is the poor guy installing Adobe Reader on the manager's PC.
Referring to people who build software as "IT" is a UK thing. The author is from the UK.
Perhaps in poor taste and off topic, but I just cannot contain myself. :-)
What does IT stand for?
https://www.youtube.com/watch?v=Zfa2ecb5lZw
Did not know that, thanks.
Actually I would say European.
They of course don't think of themselves that way; they're "engineers"
My Software Engineering degree is accredited by the Australian Institute of Engineers. I am an Engineer.
My Software Engineering degree is accredited by the Australian Institute of Engineers. I am an Engineer.
We have that in Canada too. But in the US you don't need to be accredited to call yourself an engineer.
Its state not federal in the USA.
In Texas you need a P.E. license, or did, anyway, to be an engineer.
It boils down to how much a state legally buys into the P.E. license exams. Some care a lot, some not at all, some have an alternative viewpoint for certification and bonding.
In Texas you need a P.E. license, or did, anyway, to be an engineer.
It boils down to how much a state legally buys into the P.E. license exams. Some care a lot, some not at all, some have an alternative viewpoint for certification and bonding.
Is everyone who writes software in Australian similarly accredited? Is there a legal prohibition on calling yourself a "software engineer" in the absence of such credentials?
In the U.S., neither of those are true. I'm curious about how Australia might differ.
In the U.S., neither of those are true. I'm curious about how Australia might differ.
> Is everyone who writes software in Australian similarly accredited?
No. Someone could just study Computer Science and still write code.
> Is there a legal prohibition on calling yourself a "software engineer" in the absence of such credentials?
Unfortunately not. In Australia you seem to be able to call yourself anything you want with no consequence. At my previous company we had "Sales Engineers" and "Solutions Engineers" - even though none of them had been to University.
I doubt anyone would put "B.Eng" after their name unless it was real though.
No. Someone could just study Computer Science and still write code.
> Is there a legal prohibition on calling yourself a "software engineer" in the absence of such credentials?
Unfortunately not. In Australia you seem to be able to call yourself anything you want with no consequence. At my previous company we had "Sales Engineers" and "Solutions Engineers" - even though none of them had been to University.
I doubt anyone would put "B.Eng" after their name unless it was real though.
The original title doesn't mention anything about IT professionals. The title has been (sensibly) moderated as "Hands up who likes PHP?" didn't really summaries the gist of the post.
"Do you expect Chemistry students to walk out of school ready to begin work in a lab?"
Yes? As someone who didn't major in chemistry or go into a related field... what the hell does someone with a degree in chemistry do when they graduate? Go and work in a coffeeshop?
Edit: the original post seems to have been edited several times since my original comment, including the clarification that she's a high school teacher in the UK.
Yes? As someone who didn't major in chemistry or go into a related field... what the hell does someone with a degree in chemistry do when they graduate? Go and work in a coffeeshop?
Edit: the original post seems to have been edited several times since my original comment, including the clarification that she's a high school teacher in the UK.
The author teaches CS to 11-18 year old students. In the UK School != University
Some perspective, but doesn't necessarily change my point. Why should we allow CS to be bludgeoned into the same awful educational pattern of memorization and ...irrelevance... that we've allowed to happen to mathematics? Students often hate math because of the awful, disconnected, uninspired way it is taught. Spend time teaching students how to make games with Unity or iPhone apps or whatever! Not only can teachers use those as amazing vehicles for CS fundamentals, but a teenager who builds something real and has fun doing it has a much better chance of actually becoming interested in CS.
I'm not sure what your experience is with kids of high school age, but in my experience (around 10 years of teaching high school CS) it's very rare to find kids who are capable of jumping into a complex environment and learning much from it. The vast majority, whilst they are interested in writing games or mobile apps etc get discouraged by the weight of new concepts and just tune out unless they get spoon fed everything.
Back when Flash was more in favour I used to do ActionScript programming with my 15 year olds as a basic course since it was relatively easy to wrap your head around building something to look at and then attach code to it (one of the few redeeming features of Visual Basic) and even then few kids coped well.
I've yet to see much success from high schools I've visited that tout courses that involve mobile development and what have you that don't also have very large pools of students and significant streaming of those kids into the CS course.
Now it could be quite valid to argue that perhaps I'm just not good enough at teaching, but I've seen enough top end success with my students that I don't think that's enough to explain it away.
Back when Flash was more in favour I used to do ActionScript programming with my 15 year olds as a basic course since it was relatively easy to wrap your head around building something to look at and then attach code to it (one of the few redeeming features of Visual Basic) and even then few kids coped well.
I've yet to see much success from high schools I've visited that tout courses that involve mobile development and what have you that don't also have very large pools of students and significant streaming of those kids into the CS course.
Now it could be quite valid to argue that perhaps I'm just not good enough at teaching, but I've seen enough top end success with my students that I don't think that's enough to explain it away.
Least some on read the side note.
I think there's a major problem with terminology here, because high schools don't teach computer science. They may teach programming, but I've never heard of one that taught anything remotely resembling computer science.
It's a recent thing! The blog post talks about the "CAS Community". CAS stands for Computing At School, it's a movement to introduce computer science as a subject in British schools. http://computingatschool.org.uk/
Interesting. It looks like the real deal, too. I'm not sure if it's entirely wise. I think the stuff that makes up CS as opposed to software engineering is inherently high-level and fits best into university teaching (sort of like how you learn algebra and maybe calculus in high school, but nothing that a mathematician would consider "math"), but I certainly could be wrong about that.
No, they know how to work in a lab because they learned that during the internship they had last summer. In school, they learned Chemistry, but it was the workplace that taught them how to apply that knowledge in a professional setting.
In italics, the first line after the heading is "this is high school, not university". Since when did anywhere give recognised degrees as part of a high school education?
[deleted]
I think there's a distinction to be made between Computer Science and Software Engineering as separate disciplines.
Agreed. And therefore, shouldn't the vast majority of people studying Computer Science really change to Software Engineering? If someone wants to work in industry building products that will largely use the infrastructure and architecture built by others (coding in .Net, building web or native apps, etc.), isn't that an engineering problem to solve, rather than a CS / academic problem?
Computer Science seems it should be what "pre-med" is for someone on the way to becoming a medical doctor.
Computer Science seems it should be what "pre-med" is for someone on the way to becoming a medical doctor.
Computer Science trains students in thought processes. Since quite a few companies use a limited number of tools and frameworks, most CS graduates can jump in and be productive pretty quickly, given the proper on-site training. Problems arise when employers expect graduates to be immediately productive working with unfamiliar tools in an unfamiliar environment.
Several undergraduate programs offer engineering practicum programs in which students are paired with organizations to work on open source software. These opportunities can help to familiarize students with some of the engineering practices in the industry. Every company is a bit different and development practices change often.
Several undergraduate programs offer engineering practicum programs in which students are paired with organizations to work on open source software. These opportunities can help to familiarize students with some of the engineering practices in the industry. Every company is a bit different and development practices change often.
I think a BS in CS plus an MS in SE would be a good path, but then you're telling people that they need six years of school instead of four before they can cash in.
It depends very much on the country.
In Portugal universities call Software Engineering to Computer Science degrees.
In Portugal universities call Software Engineering to Computer Science degrees.
15 - 20 years ago when I studied (in the UK), most places had a "Computer Science" course to cover everything. I see it has gradually separated into separate disciplines over time.
If any devs here think that educating students in CS is easy and disagree with the author, then there are plenty of opportunities for you to have a go at educating children yourselves.
Initiatives like http://codeclubworld.org/ will allow you to engage with children at the chalk-face. You could inspire the next generation of hackers, rather than just criticising those of us that have chosen to do this as a profession.
Initiatives like http://codeclubworld.org/ will allow you to engage with children at the chalk-face. You could inspire the next generation of hackers, rather than just criticising those of us that have chosen to do this as a profession.
I'm a middle-school Computer Science teacher at an all-girls' school where CS has been promoted to a core subject. And a software developer.
I don't see much substantial disagreement between the OP's post and the comments here--she's basically making three points:
1. The (secondary) education system's role is to show students how to engage with the field, not tailor their training to the specifics of a job posting. It's more important that students be able to pick up new paradigms than it is that they know any particular language.
2. Education is iterative. It's ok to learn something that fudges the details or that's not a best practice if it means you're making things now. We all return to domains of knowledge with finer granularity when we need it.
3. Content knowledge is important for teachers, but their expertise is in pedagogical content knowledge--the knowledge and skills of how to productively open a domain to new learners.
Do we disagree about any of these? Sure, there's some unnecessary heat in the post. But that's true of the comments here too. I wish some folks here were able to bring more introspection and empathy to conversations about education (yielding insights about who they are as learners, and how others are different). And I wish we stopped dumping on teachers as the source of all our problems (let's talk more about why this is happening later...), so teachers didn't have to feel resentful and defensive in public fora.
If you're interested in CS education and you haven't spent any time in a classroom/after school club/coder dojo, I'd invite you to come get some firsthand experience. I teach in Palo Alto, come on over...
I don't see much substantial disagreement between the OP's post and the comments here--she's basically making three points:
1. The (secondary) education system's role is to show students how to engage with the field, not tailor their training to the specifics of a job posting. It's more important that students be able to pick up new paradigms than it is that they know any particular language.
2. Education is iterative. It's ok to learn something that fudges the details or that's not a best practice if it means you're making things now. We all return to domains of knowledge with finer granularity when we need it.
3. Content knowledge is important for teachers, but their expertise is in pedagogical content knowledge--the knowledge and skills of how to productively open a domain to new learners.
Do we disagree about any of these? Sure, there's some unnecessary heat in the post. But that's true of the comments here too. I wish some folks here were able to bring more introspection and empathy to conversations about education (yielding insights about who they are as learners, and how others are different). And I wish we stopped dumping on teachers as the source of all our problems (let's talk more about why this is happening later...), so teachers didn't have to feel resentful and defensive in public fora.
If you're interested in CS education and you haven't spent any time in a classroom/after school club/coder dojo, I'd invite you to come get some firsthand experience. I teach in Palo Alto, come on over...
1. Must the two be mutually exclusive? Teaching students irrelevant or outdated skills is a great way to encourage them to dismiss the profession as old, stodgy, useless, etc.
2. That's true. Is there a reason not to fudge the details of a current, employable technology stack?
3. Let's examine the logical extremes. On the one hand you have an incompetent teacher who can nevertheless communicate well. On the other hand you have a competent teacher who is a poor communicator. Frankly, I would rather have the latter. Otherwise, what's the point?
2. That's true. Is there a reason not to fudge the details of a current, employable technology stack?
3. Let's examine the logical extremes. On the one hand you have an incompetent teacher who can nevertheless communicate well. On the other hand you have a competent teacher who is a poor communicator. Frankly, I would rather have the latter. Otherwise, what's the point?
Someone else addressed your third point but I wanted to address the first one as well. I write code in C++ almost every day for work. I wouldn't teach C++ to a child as their first programming language. I'd probably want to teach them a simple language that focuses on the building blocks of code that allow problem solving. Things like loops, conditionals and variables. I wouldn't want them to ever need to worry about things like integer overflows, floating point arithmetic, memory allocation, preprocessors, templates or any low level details. This doesn't mean the ideal teaching language would be stodgy and useless. It just needs to offer an appropriate level of abstraction for the current age and experience level of the learner.
A note on 3: It's not really a dichotomy between communication skills and content knowledge. Pedagogical content knowledge builds on content knowledge--it's about knowing the structure of knowledge--the paths different learners will take through ideas, the common misconceptions and the examples that will resolve them, the ability to infer the shape of a learner's web of ideas, and knowing your way around the content knowledge well enough to offer something just beyond what the student has considered, but which is close enough that she can make the leap and thereby add it to her web.
It should be noted that the author is a UK secondary school teacher (ages 11-16), so comparing what she is saying with universities is sort of missing the point.
Doesn't this have a simple solution? Break down CS into componets just like Chemistry has Chemical Engineering or Physics has Mechanical Engineering. Offer different types of courses: Computer Literacy (for those completely new to computers), Software Development (for those wanting to work with computers vocationally), and Computer Science (for those who want to become Researchers). Maybe the Computer Science route should be known to take longer and more effort (generally speaking) as well. Maybe Computer Scientists need to know both theory and industry thoroughly?
Also the reason why Physics has: Mechanical Engineering but Computer Science has no vocational counterpart is because: there is money in Computer Science. Microsoft could not afford to not do R&D. Computer Science research can pay off within 5-10 years. Theoretical Physics research cannot. :P
So the industry tends to be as up to date as Computer Scientist are while there is money to be such. (Although, I have met plenty of programmers who do not understand theoretical computer science topics).
Also the reason why Physics has: Mechanical Engineering but Computer Science has no vocational counterpart is because: there is money in Computer Science. Microsoft could not afford to not do R&D. Computer Science research can pay off within 5-10 years. Theoretical Physics research cannot. :P
So the industry tends to be as up to date as Computer Scientist are while there is money to be such. (Although, I have met plenty of programmers who do not understand theoretical computer science topics).
For whatever reason, the author and the comments are experiencing a huge disconnect in expectations.
1. The author appears to be talking about pre-university level CS education. 2. The "IT Professionals" and the commenters here appear to be talking about CS Degrees (undergrad and up) and their relevance to jobs/hiring.
I do not see how those two connect. In fact, I argue that they shouldn't be related at all. Teaching children, especially at the age the author mentions - 12 year olds - is not about preparing them for future work. Most children at that age don't even know what they want to be yet. So what is taught and how it is taught cannot be judged by how useful it would be in employment.
No one here is making any sense. I also find it funny that the author uses teaching a secondary language as a comparison because the manner in which the US (and other countries like Japan) teach secondary languages is all manners of messed up. The system and approaches used in secondary language education do not produce fluency or even long term retention.
1. The author appears to be talking about pre-university level CS education. 2. The "IT Professionals" and the commenters here appear to be talking about CS Degrees (undergrad and up) and their relevance to jobs/hiring.
I do not see how those two connect. In fact, I argue that they shouldn't be related at all. Teaching children, especially at the age the author mentions - 12 year olds - is not about preparing them for future work. Most children at that age don't even know what they want to be yet. So what is taught and how it is taught cannot be judged by how useful it would be in employment.
No one here is making any sense. I also find it funny that the author uses teaching a secondary language as a comparison because the manner in which the US (and other countries like Japan) teach secondary languages is all manners of messed up. The system and approaches used in secondary language education do not produce fluency or even long term retention.
Please don't teach kids PHP. Fucking anything but PHP.
Well said.
University is not Job Skill training. CS Students are not Engineers because they have a degree. It takes years as someone's junior to learn "how it's done in the real world".
University is not Job Skill training. CS Students are not Engineers because they have a degree. It takes years as someone's junior to learn "how it's done in the real world".
I find it slightly disturbing that the author doesn't consider a lack of CS knowledge to be a big problem. I would hope that a teacher would have strong knowledge of CS theory, at a level beyond what they teach. So just undergrad level knowledge would suffice in this case. In addition I would hope for reasonably strong practical knowledge of the language they teach.
I'm not saying that a teacher needs to go and learn rust/go/swift, but if you are teaching python you should it well.
I'm not saying that a teacher needs to go and learn rust/go/swift, but if you are teaching python you should it well.
Most IT professionals also don't have a clue what computer science is. Think your active directory sysadmin knows what a linked list is? I doubt it. That said, I don't think the points made are completely invalid[1]. I just dislike the norm of calling everyone who has anything to do with computing "IT."
[1]: (though I do softly disagree with some of them -- while chasing the latest tech trends shouldn't be a thing, things like language choices do matter, for example.)
[1]: (though I do softly disagree with some of them -- while chasing the latest tech trends shouldn't be a thing, things like language choices do matter, for example.)
> lambda calculus is a distant memory
This should be a core concept in CS education though.
This should be a core concept in CS education though.
>I’ve gone through a postgraduate qualification and nine years of experience to get to where I am, so don’t presume to know more than me about how to teach children - and if you do, expect that I will be justifiably miffed.
This is the thing about teachers that just irritates the hell out of me. I had plenty of teachers who went through postgraduate qualification and had 20 years of experience who couldn't teach for shit. Getting trained as a teacher doesn't mean you're going to be automatically good at it, just like getting trained in CS doesn't mean you're going to be a good programmer.
I've been taught by plenty of people who didn't have the title Teacher, who taught me way more than my Teacher ever did. I've also talked and taught plenty of people who thought they were stupid because their formal University Teacher, armed with postgraduate qualifications and years of experience, couldn't communicate a simple concept to them. They go through life thinking they're dumb because this trained teacher made them feel that way because the teacher failed at teaching and passed that failure to the student.
So to see this person talk about their qualifications and how she thinks these qualifications confer teaching ability leaves me quite a bit miffed, because it comes off as just an arrogant dismissal of criticism.
This is the thing about teachers that just irritates the hell out of me. I had plenty of teachers who went through postgraduate qualification and had 20 years of experience who couldn't teach for shit. Getting trained as a teacher doesn't mean you're going to be automatically good at it, just like getting trained in CS doesn't mean you're going to be a good programmer.
I've been taught by plenty of people who didn't have the title Teacher, who taught me way more than my Teacher ever did. I've also talked and taught plenty of people who thought they were stupid because their formal University Teacher, armed with postgraduate qualifications and years of experience, couldn't communicate a simple concept to them. They go through life thinking they're dumb because this trained teacher made them feel that way because the teacher failed at teaching and passed that failure to the student.
So to see this person talk about their qualifications and how she thinks these qualifications confer teaching ability leaves me quite a bit miffed, because it comes off as just an arrogant dismissal of criticism.
The important word is 'presume'. She's not saying that you can't know more than her, but that she gets miffed when an armchair quarterback dismisses her lengthy experience in the field. Hackers are constantly telling each other war stories of the weird, naive impressions people outside their industry have of them; why should it be different for teachers? If you have zero experience teaching, then there's a ton of pitfalls that you're almost certainly unaware of, particularly when teaching minors.
And yes, there are some terrible teachers. But there are a lot more terrible armchair quarterbacks.
And yes, there are some terrible teachers. But there are a lot more terrible armchair quarterbacks.
Elementary and secondary (high school) teachers usually have training in how to teach. This will often include specific training in how to teach children. Where I went to school teachers needed a two year teaching program that included practical experience in addition to their degree. They know how to teach well but may not be current in the latest advances in their field and may teach subjects outside of their specialty.
University professors do not do this kind of training. They hold a PhD in their field and probably did several post-doc research positions before finding a position as faculty. This makes them experts in their field but doesn't necessarily make them very good teachers.
Her qualifications are in teaching, not in CS. It makes sense for her to assume that she is generally a better teacher than someone with qualifications in CS and not teaching.
University professors do not do this kind of training. They hold a PhD in their field and probably did several post-doc research positions before finding a position as faculty. This makes them experts in their field but doesn't necessarily make them very good teachers.
Her qualifications are in teaching, not in CS. It makes sense for her to assume that she is generally a better teacher than someone with qualifications in CS and not teaching.
It may be of interest that the author actually has a degree in CS, as well as her postgraduate teacher training (I was at university with her). As you say, I think her point was that because she now works in education, she may not have kept up with the latest specific developments in the industry (new languages, libraries, tools etc), but she has a lot more knowledge about how to teach general CS skills to students, so that they are able to go out and learn modern specifics themselves (which of course will have changed significantly in the time they finish their education).
I think a lot of HN readers are missing the background to and context of this article though, which is that the author's talking about the UK secondary school system (11-18 year olds), which has been going through significant changes in the way computer science is taught.
When I learnt IT/CS at school, the correct answer to "How do you secure a computer" was "Make sure it isn't near the edge of a desk and there are no cables trailing across the floor" - answers involving passwords and firewalls were actually marked as incorrect. Formal education before university provided very little information which was actually relevant.
In the past year or so though, the government has changed the curriculum to be more practical and relevant. However, my understanding is that a lot of IT teachers didn't have a background in CS, so although they were happy at the level of tidying cables, they lacked the technical knowledge required to explain the new syllabus. That's insultingly simplified and generalised of course, but you get the idea.
Because the new syllabus was brought in in a rush following much political fanfare, questions were raised about how to bring these teachers up to speed in a short amount of time. I haven't followed the situation closely, but I believe that one solution which was pushed by government was that the industry should step in to save the day, despite the fact that they know sod all about teaching, and that their skill sets are often too topical and transient to be of any actual use to students. I don't want to put words into anyone's mouth, but I think that's a large part of what has led to this post, and re-reading the article in this context may shed a different light on it.
I think a lot of HN readers are missing the background to and context of this article though, which is that the author's talking about the UK secondary school system (11-18 year olds), which has been going through significant changes in the way computer science is taught.
When I learnt IT/CS at school, the correct answer to "How do you secure a computer" was "Make sure it isn't near the edge of a desk and there are no cables trailing across the floor" - answers involving passwords and firewalls were actually marked as incorrect. Formal education before university provided very little information which was actually relevant.
In the past year or so though, the government has changed the curriculum to be more practical and relevant. However, my understanding is that a lot of IT teachers didn't have a background in CS, so although they were happy at the level of tidying cables, they lacked the technical knowledge required to explain the new syllabus. That's insultingly simplified and generalised of course, but you get the idea.
Because the new syllabus was brought in in a rush following much political fanfare, questions were raised about how to bring these teachers up to speed in a short amount of time. I haven't followed the situation closely, but I believe that one solution which was pushed by government was that the industry should step in to save the day, despite the fact that they know sod all about teaching, and that their skill sets are often too topical and transient to be of any actual use to students. I don't want to put words into anyone's mouth, but I think that's a large part of what has led to this post, and re-reading the article in this context may shed a different light on it.
"It is a school’s job to churn out students who will be able to walk into a job in industry on day one and work in whatever language/paradigm is flavour du jour.
WRONG! We’re here to teach children the core concepts of Computer Science"
Am I the only one ticked off by the "WRONG!" in this post?
If you can tell me that it is your job to accept payment yet not create useful people, in my opinion, you're committing some form of fraud.
Schools like Waterloo in Canada do a great job of providing core concepts while providing the workforce with useful people. I'm an employer (who didn't go to Waterloo personally) and we love to see their interns come our way, as does LinkedIn, Facebook, Google and many others. The school realizes they're not good at making people useful, but they do what they can to help the student become useful by connecting them with the real world, while providing them with the core concepts to enable them to be successful in that position.
Maybe you're frustrated and getting a lot of opposition because you're WRONG!?
WRONG! We’re here to teach children the core concepts of Computer Science"
Am I the only one ticked off by the "WRONG!" in this post?
If you can tell me that it is your job to accept payment yet not create useful people, in my opinion, you're committing some form of fraud.
Schools like Waterloo in Canada do a great job of providing core concepts while providing the workforce with useful people. I'm an employer (who didn't go to Waterloo personally) and we love to see their interns come our way, as does LinkedIn, Facebook, Google and many others. The school realizes they're not good at making people useful, but they do what they can to help the student become useful by connecting them with the real world, while providing them with the core concepts to enable them to be successful in that position.
Maybe you're frustrated and getting a lot of opposition because you're WRONG!?
> If you can tell me that it is your job to accept payment yet not create useful people, in my opinion, you're committing some form of fraud.
If you really believe that it's a high school's job to "create useful people" then I hope you're not working in education.
> Schools like Waterloo in Canada
That, or you simply didn't bother to even read the article. I'm not Canadian or anything similar, but a part of me suspects that "Waterloo in Canada" isn't a high school. Stop starting flamewars on articles you don't even bother reading introductions of.
If you really believe that it's a high school's job to "create useful people" then I hope you're not working in education.
> Schools like Waterloo in Canada
That, or you simply didn't bother to even read the article. I'm not Canadian or anything similar, but a part of me suspects that "Waterloo in Canada" isn't a high school. Stop starting flamewars on articles you don't even bother reading introductions of.
>If you can tell me that it is your job to accept payment yet not create useful people, in my opinion, you're committing some form of fraud.
This is a huge distortion of the point the author is making.
The author is not saying "schools should be paid to churn out students that are not useful."
The author is saying "schools should be paid to churn out students *already equipped with the skills they will need to learn once they get to the work force."
Anyone, and this includes you, that expects a fresh CS graduate to "hit the ground running" with no adjustment period and to be fluent in whatever language/toolset you decide is important is deluded.
The point of a CS education is not to master every library, every IDE, and every language. The point of a CS education is to master the fundamentals so that even if you learned Java in school, you can spend a weekend learning the syntax of Swift because really that's all that's different. You already know object-oriented design (or whatever).
The problem is that employers expect new employees to start being profitable on day 1, when that is absurd. There's always a learning period, even for a seasoned veteran. Whether that learning period is 3 weeks or 3 months, there's always a learning period and I wish employers would get this through their seemingly think skulls.
This is a huge distortion of the point the author is making.
The author is not saying "schools should be paid to churn out students that are not useful."
The author is saying "schools should be paid to churn out students *already equipped with the skills they will need to learn once they get to the work force."
Anyone, and this includes you, that expects a fresh CS graduate to "hit the ground running" with no adjustment period and to be fluent in whatever language/toolset you decide is important is deluded.
The point of a CS education is not to master every library, every IDE, and every language. The point of a CS education is to master the fundamentals so that even if you learned Java in school, you can spend a weekend learning the syntax of Swift because really that's all that's different. You already know object-oriented design (or whatever).
The problem is that employers expect new employees to start being profitable on day 1, when that is absurd. There's always a learning period, even for a seasoned veteran. Whether that learning period is 3 weeks or 3 months, there's always a learning period and I wish employers would get this through their seemingly think skulls.
I'm not sure that is a big distortion of what she's saying. It seems to me like she's suggesting that keeping up with modern computer science isn't necessary to teach computer science. With her all caps "WRONG"s, she seems equally incontrovertible. While I don't think teaching iOS8 beta dev is necessary in a modern cs curriculum (which I don't think many people are suggesting), not approaching the massive shift in the industry towards mobile is equally absurd. It's not about mastering every library or IDE or language (which again, the parent comment didn't suggest), but there is certainly no reason that CS fundamentals cannot be taught with a nod towards modern computer science.
Yes, employer expectations are often absurd, but so too is the expectation that teaching Java without ever building an Android app does everything sufficient to "equip students with skills." If a curriculum is going to spend a month on linked lists that's fine, but do something real with them instead of implementing stdlib over and over in a vacuum. Use some popular libraries as teaching tools to demonstrate good and bad code, ways things have been done in real life, etc. Don't pigeonhole on jquery widgets, but build a webapp in rails or node or go or c or jsp or whatever. Hell, build it in Haskell and teach some killer fp at the same time. But don't just spend 4 years teaching students how to implement x to do arbitrary y with no practical examples or connection to real life.
Yes, employer expectations are often absurd, but so too is the expectation that teaching Java without ever building an Android app does everything sufficient to "equip students with skills." If a curriculum is going to spend a month on linked lists that's fine, but do something real with them instead of implementing stdlib over and over in a vacuum. Use some popular libraries as teaching tools to demonstrate good and bad code, ways things have been done in real life, etc. Don't pigeonhole on jquery widgets, but build a webapp in rails or node or go or c or jsp or whatever. Hell, build it in Haskell and teach some killer fp at the same time. But don't just spend 4 years teaching students how to implement x to do arbitrary y with no practical examples or connection to real life.
I guess I'm annoyed by the false dichotomy. I don't agree with you, though. I think the schools should teach theory. Anyone that can learn that theory (algorithms, data structures, computability) should probably be able to be useful without much trouble. That's been my experience with CS interns, at least.
edit: I also distinguish between CS and CE. I'd firmly agree with you that CE or other engineering oriented degree programs should be almost vocational.
edit: can't stick around to wait til I am allowed reply to you, karmelapple, so I have to reply by edit. I know some schools have a computer engineer degree, in addition to a computer science degree. I would say that mechanical & structural are applied physics, and EE and some others are more like applied math (in which I invite, but back away from the centuries old math/physics flamewars)
edit: I also distinguish between CS and CE. I'd firmly agree with you that CE or other engineering oriented degree programs should be almost vocational.
edit: can't stick around to wait til I am allowed reply to you, karmelapple, so I have to reply by edit. I know some schools have a computer engineer degree, in addition to a computer science degree. I would say that mechanical & structural are applied physics, and EE and some others are more like applied math (in which I invite, but back away from the centuries old math/physics flamewars)
I'm curious what the "computer science" equivalent in the engineering world would be.
All of the engineering majors study a particular type of engineering: mechanical, electrical, computer, construction.
There's no "engineering science" program that I'm aware of that would teach the theory behind engineering and award a degree just for that. Instead, the engineering student must understand that way of thinking simultaneously while learning the practical components of the degree (analyzing free-body diagram forces, producing printed circuit boards, building physical objects for competitions, etc).
All of the engineering majors study a particular type of engineering: mechanical, electrical, computer, construction.
There's no "engineering science" program that I'm aware of that would teach the theory behind engineering and award a degree just for that. Instead, the engineering student must understand that way of thinking simultaneously while learning the practical components of the degree (analyzing free-body diagram forces, producing printed circuit boards, building physical objects for competitions, etc).
>There's no "engineering science" program that I'm aware of that would teach the theory behind engineering and award a degree just for that
Actually the University of Toronto offers an "Eng Sci" program that is exactly this. They offer it alongside their regular engineering program. A guy I went to high school with dropped out of the eng sci program because it was "too theoretical" for him and he wanted a more practical education.
Actually the University of Toronto offers an "Eng Sci" program that is exactly this. They offer it alongside their regular engineering program. A guy I went to high school with dropped out of the eng sci program because it was "too theoretical" for him and he wanted a more practical education.
Do you know what the typical career path is for someone with an undergrad in this? Academia?
Life is simple in chemistry land, without as much doublespeak as in computer land.
In chemistry land, the chemists daydream and theorize and apply massive creativity. The ChemEng implement known ideas as cheaply and safely as possible on huge scale, which turns out to be ridiculously hard. The process techs and lab techs pretty much just follow orders.
Computer engineering is, or used to be, a hybrid of EE and CS. More compiler / assembly work than OO design. More control system theory (PID controllers and the like) than database theory.
There is a modern variant of what CE is, along the engineer is the accountant/project manager of the sciences. And its often called "software engineer". So a project manager who knows programming.
In chemistry land, the chemists daydream and theorize and apply massive creativity. The ChemEng implement known ideas as cheaply and safely as possible on huge scale, which turns out to be ridiculously hard. The process techs and lab techs pretty much just follow orders.
Computer engineering is, or used to be, a hybrid of EE and CS. More compiler / assembly work than OO design. More control system theory (PID controllers and the like) than database theory.
There is a modern variant of what CE is, along the engineer is the accountant/project manager of the sciences. And its often called "software engineer". So a project manager who knows programming.
As others have said there are in fact general engineering degrees, they called it ESM at my university.
But as someone who took both EE and CS courses, I wouldn't consider the EE to be particularly more "vocational training" than the CS.
I think it's more of a level thing; higher-ranked universities will tend to be more theoretical and take umbrage at being thought of as vocational training. More prestigious companies will also interview more for your grasp of theory than your skill bullets. E.G. Facebook is a PHP shop but when I interviewed there they didn't ask a single PHP question. I bet they never do.
But as someone who took both EE and CS courses, I wouldn't consider the EE to be particularly more "vocational training" than the CS.
I think it's more of a level thing; higher-ranked universities will tend to be more theoretical and take umbrage at being thought of as vocational training. More prestigious companies will also interview more for your grasp of theory than your skill bullets. E.G. Facebook is a PHP shop but when I interviewed there they didn't ask a single PHP question. I bet they never do.
They would probably study some form of math or maybe theoretical physics, which is basically just math ;)
Many schools offer an engineering physics degree - Toronto, Berkeley, Tulane, Columbia (I think)
I'm not sure I follow, but I think you're describing a Ph.D. in the specified engineering discipline. I would describe getting a Ph.D. in an engineering field as studying the fundamental science of the process of engineering.
Speaking of WRONG!, the University of Waterloo in Canada is not a high school. Not only is there a clarification at the top of the page, the entire article reads like it was written about high school classes. Not just subtle things like "I have studied education at the postgraduate level" or characterising herself as a teacher rather than a lecturer or professor, but complete giveaway lines like "don’t presume to know more than me about how to teach children", repeated a couple of times.
As someone who went to school at Waterloo, I think I have to side with the author here.
Where did I learn how to use git and how to write Android applications? Certainly not at school -- I did it on the dime of some very generous employers that were hoping to woo me into working for them after I graduated. Students gossip about which employers are best -- if a co-op student isn't growing during their experience, then (as an employer) you're going to have a hell of a time retaining the kids when they graduate.
What did I learn in class? Algorithms, data structures, and other fundamentals that are required to grok (let alone answer) the kinds of questions that come up in interviews. Interesting stuff, but almost entirely tangential to industry skills.
The only reason Waterloo students post-graduation are "useful" in the workplace is because they've been in the workplace -- with almost two years of experience!
Where did I learn how to use git and how to write Android applications? Certainly not at school -- I did it on the dime of some very generous employers that were hoping to woo me into working for them after I graduated. Students gossip about which employers are best -- if a co-op student isn't growing during their experience, then (as an employer) you're going to have a hell of a time retaining the kids when they graduate.
What did I learn in class? Algorithms, data structures, and other fundamentals that are required to grok (let alone answer) the kinds of questions that come up in interviews. Interesting stuff, but almost entirely tangential to industry skills.
The only reason Waterloo students post-graduation are "useful" in the workplace is because they've been in the workplace -- with almost two years of experience!
She's talking about an education in computing for teenagers who will typically be sitting exams at ages 16 and 18, for GCSE and A-Level qualifications respectively - not a rant about undergraduate education, as you seem to be implying.
Here's more details on what these subjects are composed of; it's quite basic stuff: http://www.aqa.org.uk/subjects/ict-and-computer-science
Here's more details on what these subjects are composed of; it's quite basic stuff: http://www.aqa.org.uk/subjects/ict-and-computer-science
"Do you expect Chemistry students to walk out of school ready to begin work in a lab?"
Erm, yes? In fact, the folks I know who made it into industry and graduate school openly hated people who had come into their workspaces without that knowledge.
It is simply not possible for teachers to be able to keep up to date with the latest flavours in industry"
Then why the hell are we paying as much as we are for tuition? Every professional programmer I know worth any salt spends at least 5-10 hours a week in continuing education of one form or another (even if it's just reading about the new JS whatever on HN).
"I really have no time for developers who go on about how we should be teaching lambdas or mutability or tail recursion to 12 year olds or that kind of high horse gubbins."
A simple analogy will usually get the point across, and a simple disclaimer of "This is a better way of doing things, but don't worry about it" means your job of showing the door without getting sidetracked is complete.
~
The author mentions A-levels, so perhaps they aren't looking at college-level students, but even so that's no excuse for dumbing-down the subject matter.
That said, it is important to be able to explain these concepts without being technical--anyone who has dealt with piles of dishes understands stack semantics, anyone who has lived with other people in close proximity has a few intuitions about mutable state.
Erm, yes? In fact, the folks I know who made it into industry and graduate school openly hated people who had come into their workspaces without that knowledge.
It is simply not possible for teachers to be able to keep up to date with the latest flavours in industry"
Then why the hell are we paying as much as we are for tuition? Every professional programmer I know worth any salt spends at least 5-10 hours a week in continuing education of one form or another (even if it's just reading about the new JS whatever on HN).
"I really have no time for developers who go on about how we should be teaching lambdas or mutability or tail recursion to 12 year olds or that kind of high horse gubbins."
A simple analogy will usually get the point across, and a simple disclaimer of "This is a better way of doing things, but don't worry about it" means your job of showing the door without getting sidetracked is complete.
~
The author mentions A-levels, so perhaps they aren't looking at college-level students, but even so that's no excuse for dumbing-down the subject matter.
That said, it is important to be able to explain these concepts without being technical--anyone who has dealt with piles of dishes understands stack semantics, anyone who has lived with other people in close proximity has a few intuitions about mutable state.
That's like saying that ever programmer in industry should spend 5-10 hours a week keeping up with the latest CS research on top of the work they put into their continuing education. It's just not reasonable to expect academics to know the latest JQuery or Enterprise Confabulator or whatever API.
If you're doing CS education, you have a very small window of opportunity at the start of someone's career to teach them things that they're not necessarily going to pick up working in industry. You really need to think about what you can teach them that will allow them to be prepared for 30-40 year careers and whatever technological changes that brings.
If you're doing CS education, you have a very small window of opportunity at the start of someone's career to teach them things that they're not necessarily going to pick up working in industry. You really need to think about what you can teach them that will allow them to be prepared for 30-40 year careers and whatever technological changes that brings.
> Then why the hell are we paying as much as we are for tuition?
I can assure you that tuition rates have very little to do with salaries for Computer Science professors.
I can assure you that tuition rates have very little to do with salaries for Computer Science professors.
CS knowledge is, I think, valued highly (or at least valued) in the tech sector itself, but once you leave the sphere of companies that make tech products for tech people, or if you happen to be outside one of the major software hubs, the atmosphere can become rather absurd. And who gets blamed by these business owners and managers? The CS programs, because they are clearly just a bunch of ivory tower jackasses who don't want people to have any useful knowledge. Ever. Ugh.