Computer Science Canada

Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Author:  md [ Wed Jan 25, 2012 2:08 pm ]
Post subject:  Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

And it pains me how many people don't realize that.

Computer Science is about the science of computing; which mostly means applied mathematics. Algorithms, data structures, encoding techniques - all math. These are usually approached from a math point of view which means lots of proofs and not as much application. Any languages used you are usually expected to learn on your own and rapidly.

Software Engineering is about applying engineering principals and disciplines to software. That means design techniques, project management, risk assessment AND a lot of the computer science topics but from an engineering perspective (less proofs). Some programming languages are taught but writing code is again not the focus and you are expected to learn quickly on your own.

If you want to learn how to program go to a college and enroll in a programming course. You'll both save money and get a lot more out of it.



This post brought to you by the large number of people who I've seen drop out after failing the first semester.

Author:  Brightguy [ Wed Jan 25, 2012 2:44 pm ]
Post subject:  Re: Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

"CS is not programming", part n in a series of n+1. Preach it!
Though, can you really blame our users for being confused, given our name and logo? Flaming

Author:  ProgrammingFun [ Wed Jan 25, 2012 4:42 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Which math did you do first semester?
Also, does this mean that CCC doesn't affect admissions in any way?

EDIT:
Posted Image, might have been reduced in size. Click Image to view fullscreen.

Author:  [Gandalf] [ Wed Jan 25, 2012 8:09 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

If CS was actually CS, and people were aware of the fact...
1) The program would be a whole lot emptier.
2) Places like UWaterloo wouldn't have much of a co-op program.

It's not all for the worse though, since the things you learn in CS and SE do for the most part make you a better developer.

Author:  mirhagk [ Wed Jan 25, 2012 9:05 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Mathematical analysis is one of the most important things for a developer to learn. You can know everything about syntax, but that means next to nothing when it comes to coming up with solutions to problems.

Computer science and computer engineering are the two aspects to solving problems with computers. The syntax is irrelevant, just as the mathematical notation is irrelevant for math, or the language used for poetry. (well that's not entirely true, syntax can matter in terms of optimizing with a particular language and computer)

Author:  DemonWasp [ Wed Jan 25, 2012 9:28 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

[quote="[Gandalf] @ Wed Jan 25, 2012 8:09 pm"]It's not all for the worse though, since the things you learn in CS and SE do for the most part make you a better developer.[/quote]

I agree, but often you'll have to look pretty hard to find real benefit from your CS classes. I've had the opportunity to apply a little of what I learned in Graph Theory, Algorithms, Concurrent/Parallel, Compilers (baby edition) and OS (baby edition), but I've never had the calculus or linear algebra or other requirements come up. Even then, the vast majority of what you write is going to be retrieve-data, iterate-over-collection, apply function, collate results, format into report / HTML / etc.

Author:  crossley7 [ Wed Jan 25, 2012 9:46 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

I had a software development job over the summer and the hardest math I needed was generating percentages. Beyond that it is just efficient functions and problem solving. It wasn't quite coding (working with 'scripts') but it was much closer to that than advanced mathematics that you learn beyond grade 10.

That being said, I know the CS/SE aren't 'programming' programs and focus on the logic behind it and advanced maths, but the programming element to it should also be important (you have to figure out how to implement the stuff you are learning)

Author:  [Gandalf] [ Wed Jan 25, 2012 9:58 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

DemonWasp @ 2012-01-25, 9:28 pm wrote:
Gandalf @ Wed Jan 25, 2012 8:09 pm wrote:
It's not all for the worse though, since the things you learn in CS and SE do for the most part make you a better developer.


I agree, but often you'll have to look pretty hard to find real benefit from your CS classes. I've had the opportunity to apply a little of what I learned in Graph Theory, Algorithms, Concurrent/Parallel, Compilers (baby edition) and OS (baby edition), but I've never had the calculus or linear algebra or other requirements come up. Even then, the vast majority of what you write is going to be retrieve-data, iterate-over-collection, apply function, collate results, format into report / HTML / etc.

Exactly - most programming is just implementation, which isn't even "problem solving" by some definitions. So, it's a good thing CS in university covers a ton of non-CS things (concurrency, systems programming, networking, testing, graphics, etc) which are relevant to programming. Although there is a lot of "waste" and you obviously have to be prepared to learn the theory as a CS student, I still think CS is a better option to prepare you for development than a college programming course. It's a cycle... there just isn't the demand for straight up CS so universities change it into half development half computer science. The choice of what to study and the judgement of how well they can handle it lies with the student alone, as it should be. I don't see what there is to be pained about. The fact that the naming has gotten skewed? Meh.

Author:  md [ Wed Jan 25, 2012 10:23 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

[quote="[Gandalf] @ 2012-01-25, 8:09 pm"]If CS was actually CS, and people were aware of the fact...
1) The program would be a whole lot emptier.
2) Places like UWaterloo wouldn't have much of a co-op program.

It's not all for the worse though, since the things you learn in CS and SE do for the most part make you a better developer.[/quote]

1) How is that a problem? Those who are truely interested would still enroll, those who are just interested in programming would do college programs. Hell, given the cost difference it's actually really easy to both a college degree *and* a university degree.
2) Waterloo's co-op program would remain exactly the same, though there would be fewer CS students and possibly fewer Software/Computer Engineering students.

Author:  [Gandalf] [ Wed Jan 25, 2012 11:28 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

md @ 2012-01-25, 10:23 pm wrote:
Gandalf @ 2012-01-25, 8:09 pm wrote:
If CS was actually CS, and people were aware of the fact...
1) The program would be a whole lot emptier.
2) Places like UWaterloo wouldn't have much of a co-op program.

It's not all for the worse though, since the things you learn in CS and SE do for the most part make you a better developer.


1) How is that a problem? Those who are truely interested would still enroll, those who are just interested in programming would do college programs. Hell, given the cost difference it's actually really easy to both a college degree *and* a university degree.
2) Waterloo's co-op program would remain exactly the same, though there would be fewer CS students and possibly fewer Software/Computer Engineering students.

1) It's not really a problem, although I think universities would like to fill their programs, especially at $10k/person/year. Hence the theory/programming compromise.
2) Hiring someone in CS would be like hiring someone in math - software companies would probably move a good chunk of their jobs elsewhere.

Author:  mirhagk [ Thu Jan 26, 2012 8:13 am ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

While business level development requires very little math, and is really just formatting data, other programming jobs do indeed require some pretty advanced math. Designing a video game 3d engine for instance requires very advanced math, for drawing, and for the physics behind it. You also need to know a lot about algorithms for artificial intelligence.

Basically while most jobs won't utilize your university degree to the fullest (which is true for nearly every degree out there), some of the jobs will use a lot of it, and regardless showing that you know that much about algorithms shows that you likely know quite a bit about programming itself, and would be an asset to a programming team.

Author:  tedbean [ Thu Jan 26, 2012 9:31 am ]
Post subject:  Re: Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

@mirhagk, are you saying that it is a good idea to study some physics? Neutral I think I will have to miss it this year. My mission is to pass the programming! and not fail maths, I have a feeling the maths is going to turn out really really hard. Confused

The thread is making a good point about the difference between uni trained and non-uni qualifications. In the short courses (the community based, not those university post-graduate stuff), what we can learn at the maximum is some general and although sometimes more up to date knowledge, but it would not cover the detail and the theoretical. Whereas the uni degrees give far more options for the enthusiastic learners who want to take what they have learnt in the classroom one step further into the field of research, these further research is of course not for everyone, there is no need to get a PHD if all one requires is a professional SE licence.

It could be a good idea for me to go to the community college first, but I may end up still needing to get a degree if I really want to get an interesting job in computing.

Most interesting and extraordinary stuff need advanced training which could take decades, the only exception is possibly in the examples of child prodigy where only 'basic' training could produce amazing results! (it takes only several years for the child prodigy to equal or better their adult masters).

Maths provides many examples of child prodigies (those went to uni around the age of 10). Even these rare talents need to go to university, for the ordinary IQ, the choice is yours. Dance

Author:  md [ Thu Jan 26, 2012 10:26 am ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Gandalf wrote:
1) It's not really a problem, although I think universities would like to fill their programs, especially at $10k/person/year. Hence the theory/programming compromise.
2) Hiring someone in CS would be like hiring someone in math - software companies would probably move a good chunk of their jobs elsewhere.


Increasing student enrolment for the sole purpose of increasing revenue (while at the same time removing or reducing important parts of a curriculum) are not signs of a quality institution. Schools (universities or colleges) which pursue tuition dollars invariably have worse programming (ie. courses) then those which don't. That is why Waterloo for instance has maintained their reputation - while they may teach more programming then they used to, the theory is still the focus.

At the same time, informed high school students who knew what the differences were between programs would be much better for society. Those interested in a programming career could take a shorter college program and be in the workforce faster with far less debt. Those who want a more theoretical education would get it. Informed businesses would hire the appropriate people. CS grads wouldn't have to complete for entry level code-monkey positions, and instead could compete for those few jobs where the theory matters. The same jobs would exist, and they would get filled by the same people - those people would simply have the correct diploma instead of the incorrect degree.


mirhagk wrote:
While business level development requires very little math, and is really just formatting data, other programming jobs do indeed require some pretty advanced math. Designing a video game 3d engine for instance requires very advanced math, for drawing, and for the physics behind it. You also need to know a lot about algorithms for artificial intelligence.

Basically while most jobs won't utilize your university degree to the fullest (which is true for nearly every degree out there), some of the jobs will use a lot of it, and regardless showing that you know that much about algorithms shows that you likely know quite a bit about programming itself, and would be an asset to a programming team.


Very little development work requires anything beyond some basic linear algebra or calculus. Your example of 3D games for instance is more about managing data then performing any advanced math. Hell, writing a 3d game involves *very little* math beyond basic calculus and some algebra. Anything that you need beyond that you should be able to learn on your own - using the skills you developed in college *or* university.

Author:  2goto1 [ Thu Jan 26, 2012 10:59 am ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Many interesting points in this thread that hopefully benefit potential university / college students in their decision making process.

A pure computer science graduate may do very poorly in a software developer role compared to a community college graduate. All completely depending on each person's level of mastery of software architecture, design, and development best practices, as well as attention to detail, commitment, and passion for their jobs.

The actual "application of what I've learned from my computer science degree" aspect of most common jobs is very little to nil. But if I were a startup in an ambiguous environment and wanted someone to solve a lot of problems and unknowns, I would likely look for a computer science grad as my first choice over a community college grad.

My assumption with a comp sci grad is that they should have demonstrated much higher academic problem solving skills than a community college grad, and done so under much more ambiguous learning conditions, whereas a community college grad would have had a more structured education path with more hand holding.

Either way, both types of grads are able to succeed in many of the same types of working roles.

Author:  mirhagk [ Thu Jan 26, 2012 1:06 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Yes see the problem is, even if the university degree goes unused, workplaces will still require the degrees.

Think about it, if 2 different people apply to your company, and one has a university degree, and one has a college degree, your probably going to lean towards the university degree, just because it shows they are potentially more interested/want to learn more.

The only way they could offset this is by taking college grads at a lower salary, which means that university gets you more money, so people will still go there.

It's definetly a problem, but it's game theory, and as long as people still prefer university, that will still be the better choice.

Author:  yoursecretninja [ Thu Jan 26, 2012 1:18 pm ]
Post subject:  Re: Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Quote:
And it pains me how many people don't realize that.


It pains me how black and white some people's views can be. Computer science draws from MANY disciplines; not just math. And like MOST sciences, computer science involves both theory and practice.

I'd say people wanting to learn how to program would be well served to go to either a university or a college. Their choice of institution and program of study should be influenced by what best fits their needs not some rigid world-view where every subject and person can be neatly divided into distinct categories.

Here's an enlightening quote from the 2008 computer science curricula update from the ACM http://www.acm.org//education/curricula/ComputerScience2008.pdf :

Quote:
Computer science continues to draw its foundations from a wide variety of disciplines. Undergraduate study of computer science requires students to utilize concepts from many different fields. All computer science students must learn to integrate theory and practice, to recognize the importance of abstraction, and to appreciate the value of good engineering design.


You can checkout related documents at: http://www.acm.org/education/curricula-recommendations[/url]

Author:  mirhagk [ Thu Jan 26, 2012 1:48 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Oh computer science pretty much unites every field, as we need nearly every field to do different things.

Author:  [Gandalf] [ Thu Jan 26, 2012 7:24 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

md @ 2012-01-26, 10:26 am wrote:
Increasing student enrolment for the sole purpose of increasing revenue (while at the same time removing or reducing important parts of a curriculum) are not signs of a quality institution. Schools (universities or colleges) which pursue tuition dollars invariably have worse programming (ie. courses) then those which don't. That is why Waterloo for instance has maintained their reputation - while they may teach more programming then they used to, the theory is still the focus.

Yet Waterloo still has courses for all the things I listed (concurrency, systems programming, networking, testing, graphics) which, while taught with a focus on theory, are in no way computer science (very loosely if you stretch networks to include graph theory for example). This is even with the advantage Waterloo has that lets them defer learning practical things during co-op terms. Their reputation has little to do with how much computer science theory is taught.

md @ 2012-01-26, 10:26 am wrote:
At the same time, informed high school students who knew what the differences were between programs would be much better for society.

There are still plenty of informed high school students making the "optimal" choice for themselves. It's just that the differences between the programs aren't what you would like them to be. Sure, the situation you propose is theoretically plausible, but it will never happen for exactly the reason mirhagk gives. College degrees just don't have the value that (some) university degrees do, and often times attempting to finish college early and start working just makes things harder for yourself (I know a few people who went to college and transferred to university, not because they were missing the theory, but because college was too easy or the level of learning was too low).

md @ 2012-01-26, 10:26 am wrote:
Very little development work requires anything beyond some basic linear algebra or calculus. Your example of 3D games for instance is more about managing data then performing any advanced math. Hell, writing a 3d game involves *very little* math beyond basic calculus and some algebra. Anything that you need beyond that you should be able to learn on your own - using the skills you developed in college *or* university.

Physics engines can get pretty complicated.

Author:  mirhagk [ Thu Jan 26, 2012 9:52 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

If you think physics engines are difficult, try to look into modern AI's. I read a paper about how a game was using emotion in their AI, which is a pretty necessary thing if you think about it.

Also for something like character construction in skyrim, do you have any idea how much work has to be done turning abstract values into physical shapes?

Author:  md [ Thu Jan 26, 2012 10:27 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

How many people do you think are writing physics engines? How many people do you think are writing AIs? Compare that to the number of people automatic business tasks, or writing systems monitors, or publishing systems, or writing infrastructure code.

I would also like to point out that Waterloo's co-op reputation isn't based on the quality of their CS students (who have a iffy reputation in many places), but on the Engineering program.

As for Waterloo's program offerings concurrency, systems programming, networking, testing, and graphics are actually all very useful for teaching theory through application. Concurrency alone is hugely complicated, systems programming is a challenge due to concurrency and hardware (hardware is horrible, always behaving erratically...); networking and testing are admittedly less theoretical and are likely more for practical skills. Graphics could go either way depending on the course specifics.

Author:  [Gandalf] [ Thu Jan 26, 2012 10:55 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

md @ 2012-01-26, 10:27 pm wrote:
As for Waterloo's program offerings concurrency, systems programming, networking, testing, and graphics are actually all very useful for teaching theory through application.

I was thinking more along the lines of theoretical computer science (definition), but fine. Maybe it's applying theory through application which enables a good (great) programmer. Either way, the value of the university degree is there, and it's certainly not going to be replaced by colleges. If anything, it looks to me like the trend is in making universities even more applied.

Author:  md [ Thu Jan 26, 2012 11:26 pm ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

[quote="[Gandalf] @ 2012-01-26, 10:55 pm"]
md @ 2012-01-26, 10:27 pm wrote:
As for Waterloo's program offerings concurrency, systems programming, networking, testing, and graphics are actually all very useful for teaching theory through application.

I was thinking more along the lines of theoretical computer science (definition), but fine. Maybe it's applying theory through application which enables a good (great) programmer. Either way, the value of the university degree is there, and it's certainly not going to be replaced by colleges. If anything, it looks to me like the trend is in making universities even more applied.[/quote]

Oh, I certainly believe they have value and you are correct that a university degree is to a certain extent less valuable then a university degree (but you'd be surprised at how small that difference is - 100% of my graduating class was employed at graduation). My point is that the theory is important, but not what most people need or want, and the sooner they realised that the less I'd have to put up with idiots in my classes.

What can I say, I'm selfish and sick of people asking questions too dumb for even the prof to believe.

Author:  Cool.Breeze [ Fri Jan 27, 2012 10:40 pm ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Grow up kid, stop being so conceited.

Author:  md [ Sat Jan 28, 2012 12:44 am ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

Cool.Breeze @ 2012-01-27, 10:40 pm wrote:
Grow up kid, stop being so conceited.

I'm not conceited - that's a flaw and I don't have any flaws.

Author:  Velocity [ Sat Jan 28, 2012 12:47 am ]
Post subject:  RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

people, people, look what this has brought us to, lets all just relax and drink some hot cocoa and live together happily. Why cant we be friends. Why cant we be friends, why cant we just be friends (x10)

Author:  copthesaint [ Sat Jan 28, 2012 8:03 am ]
Post subject:  Re: RE:Computer Science is not programming. Software Engineering is not programming. Stop trying to make it so.

md @ Sat Jan 28, 2012 wrote:
Cool.Breeze @ 2012-01-27, 10:40 pm wrote:
Grow up kid, stop being so conceited.

I'm not conceited - that's a flaw and I don't have any flaws.


lol Is that confidence or arrogance? So often are those confused...
I for once knew what computer science was, so |I specifically applied for college programming courses and robotics. I will have fun where ever I may end up


: