In academic meaning, it seems to me that
algorithm design is studied in a high/abstract level of computation (computability, complexity), although software engineering is also studied in high/abstract level in academia.
software engineering is about the process of creating a software program for solving a problem. That seems to make algorithm design part of the process.
But from the limited references on software engineering that I have taken a glanced at, algorithm design isn't discussed (but I may miss something). Instead, pattern design (or is it called design pattern instead?) is discussed in software engineering.
My questions are:
- Does algorithm design belong to software engineering? Is algorithm design a step in the process of software engineering?
- what are the differences and relations between algorithm design, pattern design, program design, and system design? These words can be heard often from industry as buzzwords. Can you share the definitions of these various kinds of designs?