
What Should a Software Engineering Course Look Like? - agiacalone
http://tomasp.net/blog/2019/software-engineering/
======
AnimalMuppet
Let me start by talking about chemical engineering vs. chemistry. Chemistry is
about atoms, and how they combine to form molecules. Chemists worry about
where the electrons will be, and about the energetics of reactions. In most
universities, it is part of the college of science.

Chemical engineers need to know chemistry, all right. But chemical engineering
is about efficiently making desired chemicals in large volumes (without
blowing up the factory). Chemical engineers worry about pipe bursting
strength, and about the cost of raw materials. Chemical engineering is usually
found in the college of engineering, not the college of science.

In the same way, conmputer science worries about algorithms, algorithmic
efficiency, and languages. It belongs in the college of science.

Software engineering is about efficiently producing large-scale programs that
work. It belongs in the college of engineering, not science. It needs to be a
completely separate department from computer science, not just a course within
it.

For such a course, though, I'd like to see some tools covered - source code
control systems, bug databases, diff and merge tools, static analyzers, and
profilers.

I'd like to see it talk about the importance of coding conventions - not the
specifics of what is the right coding convention, but the idea that
constraining how you write code can increase communication.

I'd like to see the students wrestle with a multi-hundred-thousand-line code
base, where none of the people who wrote it are in the room to help them. I'd
like to see them have to fix bugs and add features to such a code base. (I'd
like to see them learn that a million-line code base is different from a ten-
thousand-line code base, and not just because you have a hundred times as many
problems. You have _different_ problems. I'd also like them to see the
importance of clean division into parts, of coding standards, and of naming
conventions.)

