Fall 2024 - CMPT 276 D200
Introduction to Software Engineering (3)
Class Number: 6328
Delivery Method: In Person
Overview
-
Course Times + Location:
Sep 4 – Oct 11, 2024: Tue, 8:30–10:20 a.m.
SurreyOct 16 – Dec 3, 2024: Tue, 8:30–10:20 a.m.
SurreySep 4 – Dec 3, 2024: Fri, 8:30–9:20 a.m.
Surrey
-
Instructor:
Parsa Rajabi
parsa_r@sfu.ca
-
Prerequisites:
One W course, CMPT 225, (MACM 101 or (ENSC 251 and ENSC 252)) and (MATH 151 or MATH 150), all with a minimum grade of C-. MATH 154 or MATH 157 with at least a B+ may be substituted for MATH 151 or MATH 150.
Description
CALENDAR DESCRIPTION:
An overview of various techniques used for software development and software project management. Major tasks and phases in modern software development, including requirements, analysis, documentation, design, implementation, testing,and maintenance. Project management issues are also introduced. Students complete a team project using an iterative development process. Students with credit for CMPT 275 may not take this course for further credit.
COURSE DETAILS:
The theory and practice of software development are introduced. Students will learn the standard methodologies underlying software development, including requirements, analysis, documentation, design, implementation, testing, maintenance, debugging, refactoring, and version control. Assignments will cover learning to effectively use development tools and a semester-long group project will focus on implementation, testing, refactoring, and presentation of a software application using established industry standards and techniques. The focus of the course is on preparing students to be effective members of a software development team. Accordingly, basic group psychology is essential to the curriculum of this course. Prior experience and knowledge of web development technologies such as HTML, CSS, JavaScript and frameworks such as React and Vue is highly recommended. Students will also be expected to familiarize themselves with collaborative tools like Git for version control and platforms like GitHub for code development and deployment. The course will include peer code reviews, and discussions on software ethics, accessibility, and sustainability. By the end of the course, students should be able to contribute effectively to a real-world software project, demonstrating both technical proficiency and strong communication skills within a team environment
Topics
- Version Control: Managing code changes and collaboration.
- Software Development Life Cycles: Understanding Agile, Waterfall, and DevOps.
- Ethics in Software Development: Ethical responsibilities.
- Requirements: system analysis and modelling, requirements engineering
- High-Level Design: Using UML and architectural frameworks.
- UX/UI Design: Applying design patterns for user experience and interface.
- Implementation: Coding standards, code reviews, and pair programming.
- Build Automation: Continuous integration and deployment.
- Technical Documentation: Creating clear and concise documentation.
- Quality Assurance: Ensuring reliability through testing.
- Debugging: Identifying and fixing defects.
- Refactoring: Enhancing code structure and performance.
- Group Dynamics: Understanding team collaboration and psychology.
Grading
NOTES:
The final grade for this course will be calculated as a weighted sum of scores for the group project, exams, assignments, quizzes, and in-class activities. For passing the course, you need to pass all course components. Details to be announced first week of class.
Students must attain an overall passing grade on the weighted average of exams in the course in order to obtain a clear pass (C- or better).
Materials
MATERIALS + SUPPLIES:
Reference Books
- Software Engineering, Ian Sommerville, Addison Wesley
- Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, E., Helm, R., Johnson, R., Vlissides, J.
- Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck
- Why Programs Fail: A Guide to Systematic Debugging, Andreas Zeller
REQUIRED READING NOTES:
Your personalized Course Material list, including digital and physical textbooks, are available through the SFU Bookstore website by simply entering your Computing ID at: shop.sfu.ca/course-materials/my-personalized-course-materials.
Registrar Notes:
ACADEMIC INTEGRITY: YOUR WORK, YOUR SUCCESS
SFU’s Academic Integrity website http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating. Check out the site for more information and videos that help explain the issues in plain English.
Each student is responsible for his or her conduct as it affects the university community. Academic dishonesty, in whatever form, is ultimately destructive of the values of the university. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the university. http://www.sfu.ca/policies/gazette/student/s10-01.html
RELIGIOUS ACCOMMODATION
Students with a faith background who may need accommodations during the term are encouraged to assess their needs as soon as possible and review the Multifaith religious accommodations website. The page outlines ways they begin working toward an accommodation and ensure solutions can be reached in a timely fashion.