Software Engineering is the driving force behind the new technologies that are transforming the way we live and work: distributed computing and the internet, multimedia applications, new telecommunication systems. The phenomenal growth in computing and the related information technology industry has resulted in a tremendous demand for software engineers—people who are qualified to develop timely, reliable, economical, high-quality software systems. Carleton University has responded with the B.Eng. in Software Engineering offered through the Department of Systems and Computer Engineering.
Software Engineering is much more than computer programming. Correctness, timeliness of responses, presentation in an comprehensible format, and understanding and satisfying the true needs of the end user are all concerns of the software engineer. And when we use the software for our air traffic control and for our banking and financial systems, reliability and security of information both in storage and during communication are vital. As our software grows, so does its complexity; languages and design notations are required to capture the needs and model the solutions of these complex systems.
When we buy software, as an individual or as a company, we want our investment to last. It turns out that software has a “life cycle” through which it must be maintained and during which it will evolve. Software engineering deals with the difficulties of this software evolution, of adding new features, of merging isolated software systems into cooperating systems. Rapid design of new systems with sufficient flexibility for reusability and for future changes are additional concerns that must be addressed at the same level as due regard for safety, economy, and efficiency and speed of execution.
The B. Eng of Software Engineering builds on the Department’s long history of education in software development that began with our first course entitled “Software Engineering” at the graduate level in 1974 and at the undergraduate level in 1977. Our innovative B.Eng. in Computer Systems Engineering has included a significant element of software engineering since it’s inception in 1981. A co-op option gives students access to real-world experience at one of Carleton’s industry partners right at the centre of Canada’s high-tech capital.
The B.Eng. in Software Engineering leads to a Professional Engineering (P.Eng.) designation.
What Software Engineers Will Know
The Bachelor of Engineering (B.Eng.) program in Software Engineering offers integrated studies in the principles and practice of software systems development and related computer and telecommunications technologies. The Software Engineering program provides breadth and depth in fundamental computing theory and practice, processes, methods and tools for developing software systems, and regulatory and social issues. In addition, students receive a solid foundation in mathematics, the physical sciences, and engineering science and design. Emphasis is placed on developing expertise in object-oriented programming (using C++ and Java) and real-time computer systems.
What Software Engineers Will Do: Employment Opportunities
Graduates of the Software Engineering program have numerous career opportunities in the information technology and telecommunication industries. Potential employers cover the whole range of the public and private sectors.
Graduates will be well prepared to engineer the complex software systems on which our government and banking services are built, including distributed processing systems such as PC banking or e-commerce applications. As a software development manager on these large-scale systems, a software engineer can serve as liaison between the customer and the technical staff.
In the area of telecommunications, graduates will be able to manage the development and deployment of telecommunication software products such as telephone switches and networks, routers, computer telephony and other types of computer communication products. The background in software verification enables the software engineer to ensure that the software provides the performance and reliability that we demand of these systems.
In the private sector, a software product developer helps a company manage its product lines, converting business plans into technical reality.
Software engineers are also at the forefront of developments in the tools and methodologies that will enable us to push the edge further in how computing can change our lives.
The Academic Program
The Software Engineering program is distinct from the other engineering programs in the Electrical and Computer Systems Department which share a standard core program in first year. The course progression of the Software Engineering program reflects a focus on software development and support of the co-op option (described below) that most students of this program will take.
In first year, the objective is to establish the necessary engineering foundations in mathematics while gaining early exposure to a breadth of software topics, particularly in object-oriented software. In second year, the software education broadens to encompass concurrent programming as well as larger-scale software systems, while developing necessary engineering background in electrical circuits and mechanics. Third year turns to a systems-level view of software, with studies in operating systems, databases, in systems analysis and design. In Fourth Year, students pursue high-level topic in software engineering, including managing product lines, software engineering tools, and software verification and performance analysis.As well, every student must complete the full course Engineering Project to gain practical engineering design experience. A set of Engineering Elective courses will be available to provide students with the opportunity to broaden their knowledge in related areas of engineering, or to concentrate on a deeper understanding in an area of interest.
Students interested in Smart Phones, Artificial Intelligence and Robotics are recommended to take a selection of the following courses:
Mobile Computing Cluster:
- SYSC4504: Distributed Network Processing
- SYSC4700: Telecommunications Engineering
- SYSC4502: Communications Software
- SYSC4607: Wireless Communications
- SYSC4602: Computer Communications
Artificial Intelligence Cluster:
- SYSC5103: Software Agents — Departmental approval required
- SYSC5401: Adaptive and Learning Systems — Departmental approval required
- SYSC3200: Industrial Engineering
- SYSC4415: Machine Learning