Software engineers do more than code — they apply engineering expertise to the actual development of computer systems and application software. Top-rated software engineering courses will expose learners to the fundamentals of computer science, design and architecture, algorithms and data structures, software debugging and testing, and, of course, programming and coding. The average software engineer in Canada earns more than $90,000 annually, while senior software engineers can earn base salaries of $150,000 or more.