Courses at Carleton University

SYSC-2101Software Systems Development Laboratory—Development of expertise in designing, implementing, and testing industrial-quality, reusable code through individual and team projects. Applying and extending previously acquired knowledge of patterns, frameworks, UML, iterative and incremental development, Java (and C++) to medium- and large-scale systems.

SYSC-3100Systems Analysis and Design—Creating requirements specifications prior to designing and implementing complex software systems. Software development lifecycles, role of requirements analysis; functional decomposition, data-flow modeling; database modeling, entity-relationship diagrams; finite state machines; object-oriented analysis; use cases, use case maps; project management; introduction to software design.

SYSC3020Introduction to Software Engineering—Introduction to software engineering principles, software development life-cycles. Modelling in software engineering. Current techniques, notations, methods, processes and tools used in software engineering. UML modelling. Introduction to software quality, software verification and validation, software testing.

SYSC-3120Software Requirements Engineering—Current techniques, notations, methods, processes and tools used in Requirements Engineering. Requirements elicitation, negotiation, modeling requirements, management, validation. Skills needed for Requirements Engineering and the many disciplines on which it draws. Requirements analysis: domain modeling; modeling object interactions; UML modeling. Introduction to software development processes.

SYSC-4101Software Validation, Verification, and Testing—Techniques for the systematic testing of software systems. Software validation and verification, software debugging, quality assurance, measurement and prediction of software reliability. Emphasis on the treatment of these topics in the context of real-time and distributed systems.

SYSC-4120Software Architecture and Design—Software Architecture and Design Introduction and importance of software architectures and software system design in software engineering. Current techniques, modeling notations, method processes and tools used in software architecture and system design. Software architectures, architectural patterns, design patterns, software qualities, software reuse.

SYSC-4800Software Engineering—Review of software lifecycles and requirements analysis. Software design, with emphasis on methods for real-time systems. Testing, verification and validation, quality assurance and control. Project planning and management. Maintenance and configuration management.

SYSC-4907Engineering Project—Student teams develop professional-level experience by applying, honing, integrating and extending previously acquired knowledge in a major design project.

SYSC-5105Software Quality Engineering and Management—All aspects of software quality engineering. Software testing, at all stages of the software development and maintenance life cycle. Software reviews and inspections. Use of software measurement and quantitative modeling for the purpose of software quality control and improvement.