Introduction to Software Engineering
Overview
- An introduction to the scope and ethics of software engineering
- Systems Development Life Cycle (SDLC) phases:
- Planning and system investigation
- Analysis
- Design
- Implementation and testing
- Training and transition
- Maintenance
- Software development paradigms and models: waterfall, incremental, prototyping, spiral, and agile
- An introduction to software project management and software quality management
- Software documentation: requirements, design, technical, and user documentation
- Modern software development tools:
- IDEs
- Debuggers
- Build automation
- Graphical User Interface (GUI) designers
- Git version control system
- Requirements engineering:
- Requirements gathering
- Use cases and requirements analysis
- Software requirements specification
- Software design:
- Design concepts and considerations: abstraction, modularity, information hiding, performance, scalability, etc.
- Object-oriented design principles
- Basics of database design: Entity-Relationship (ER) modeling and simple data normalization
- UML
- An introduction to software testing:
- The testing pyramid
- Test-driven development
- Design-by-contract
- An introduction to advanced software engineering:
- Component-based systems
- Distributed software systems
- Service-oriented systems
- Real-time systems
Methods of instruction will include some or all of the following: lectures, labs, and self-directed learning (assignments and group projects).
Evaluation will be carried out in accordance with the ÌÇÐÄvlog´«Ã½Evaluation Policy. The instructor will present a written course outline with specific evaluation criteria at the beginning of the semester. Evaluation will be based on the following.
Assignments |
0% - 15% |
Term Project |
20% - 30% |
Quizzes* |
0% - 15% |
Term Tests* |
20% - 35% |
Final Examination* |
25% - 40% |
Total |
100% |
* In order to pass the course, in addition to receiving an overall course grade of 50%, students must achieve a grade of at least 50% on the combined weighted examination components (including quizzes, term tests, and final examinations.)
Upon the completion of this course, successful students should be able to:
- Describe the scope and importance of software engineering.
- Define technical terms used by information systems practitioners.
- Identify and differentiate between the roles and responsibilities involved in a software development team.
- Identify various software process models, e.g. agile vs. plan-driven development.
- Identify the major phases included in a modern software development process.
- Identify outcomes and deliverables of core development activities, from requirements analysis and software design to implementation and user documentation.
- Generate a software requirements specification to detail functional and non-functional requirements.
- Use Unified Modeling Language (UML) to model different perspectives of a software system.
- Describe different data models and apply simple data normalization.
- Utilize standard coding styles that are effective in pair programming and code review.
- Identify various testing techniques and software quality management activities.
- Describe the goals, principles, activities, and components of software quality management.
- Implement best ethical practices for teamwork dynamics in software development.
- Utilize a modern Integrated Development Environment (IDE) and various software development tools such as Git version control system, debuggers, and builders to promote teamwork and successfully complete software projects.
Consult the ÌÇÐÄvlog´«Ã½Bookstore for the latest required textbooks and materials.
Sample text:
Software Engineering (latest edition), Ian Sommerville, Pearson, ISBN: 9780133943238
Requisites
Course Guidelines
Course Guidelines for previous years are viewable by selecting the version desired. If you took this course and do not see a listing for the starting semester / year of the course, consider the previous version as the applicable version.
Course Transfers
These are for current course guidelines only. For a full list of archived courses please see
Institution | Transfer details for CMPT 2276 |
---|---|
Alexander College (ALEX) | ALEX CPSC 2XX (3) |
Athabasca University (AU) | AU COMP 361 (3) |
Camosun College (CAMO) | CAMO ICS 125 (3) |
College of New Caledonia (CNC) | CNC CSC 2XX (3) |
College of the Rockies (COTR) | COTR COMP 2XX (3) |
Columbia College (COLU) | COLU CSCI 275 (3) |
Coquitlam College (COQU) | COQU CSCI 275 (3) |
Kwantlen Polytechnic University (KPU) | No Credit |
LaSalle College Vancouver (LCV) | LCV VGP 114 (3) |
North Island College (NIC) | NIC CPS 2XX (3) |
Northern Lights College (NLC) | NLC ITEC 2XX (3) |
Okanagan College (OC) | No credit |
Simon Fraser University (SFU) | SFU CMPT 276 (3) |
Thompson Rivers University (TRU) | TRU COMP 3520 (3) |
University Canada West (UCW) | UCW CPSC 2XX (3) |
University of British Columbia - Okanagan (UBCO) | UBCO COSC_O 2nd (3) |
University of British Columbia - Vancouver (UBCV) | UBCV CPSC_V 210 (4) |
University of Northern BC (UNBC) | UNBC CPSC 300 (3) |
University of the Fraser Valley (UFV) | UFV COMP 370 (3) |
University of Victoria (UVIC) | UVIC SENG 2XX (1.5) |
Vancouver Community College (VCC) | VCC CMPT 2276 (3) or VCC CSTP 1204 (3) |
Vancouver Island University (VIU) | VIU CSCI 1st (3) |
Yorkville University (YVU) | No Credit |