The VIU community acklowledges and thanks the Snuneymuxvw, Quw'utsun, Tla'amin,
Snaw-naw-as and Qualicum First Nation on whose traditional lands we teach, learn, research,
live and share knowledge.
CSCI 265: Software Engineering
Fall 2025 Course Outline
Department of Computer Science, Vancouver Island University
URL: csci.viu.ca/~wesselsd/csci265/outline.html
Calendar Description
CSCI 265 (3) Software Engineering
An exploration of the methods and tools for developing
high quality software. The course includes topics in
program design, program style, algorithm selection,
interface design, debugging and testing, system utilities,
version control, regular expressions and an introduction
to scripting languages.
(3:0:1)
Pre-requisite: Min. "C" in CSCI 161
|
Course Motivation and overview
This course is intended to help you become more effective in both the design and implementation
of larger software projects. This is accomplished in a number of ways:
- through a better understanding of design principles such as data abstraction and modularity;
- through the development of clearer, more comprehensive, and more testable software specfications;
- through the application of standard coding techniques to simplify code debugging and maintenance,
including incremental development, defensive programming techniques, and adhering to a set of code
standards;
- through the use of standard tools for version control, automated program compilation, code profiling,
and automated testing.
The lectures will be used to discuss both the theories and the specific tools, languages, and techniques
we will be applying, while the labs/project will be used to apply this knowledge in practical exercises.
A more detailed list of course topics and course learning outcomes is given
in the Topics and Course Learning Outcomes
sections below.
Contact information
Lecturer: Dave Wessels, (250) 740-6375 (scitech switchboard), David.Wessels@viu.ca
Office hours (Bldg 315, Room 222):
- Fridays noon-2pm
If you need to see me outside office hours please send me an email
(David.Wessels@viu.ca) to arrange a suitable time.
Delivery mode
The course is intended to be delivered entirely in-person
(lectures, labs, quizzes, and final exam).
Course resources
Web material: most resources are handled as online material, and will be available through
http://csci.viu.ca/~wesselsd/csci265/
This includes links to lab and lecture videos and readings,
lab and project exercises, sample programs, practice problems,
links to external documentation and tutorials, etc.
Announcements and class emails will be handled through the course VIULearn page.
Software resources we will be using on the csci server will include: C, C++, bash, make,
git, gdb, gprof, ssh
Textbooks: none required
Timetable
- Lectures (building 470, room 111)
Mon,Wed: 1-2:30
- Labs (Bldg 315 Room 115)
F25N01: Fri 10-11am
F25N02: Fri 11am-noon
(each student is registered in one of those lab sessions, labs
will begin in the first week of classes, i.e. Sept 5)
Assessment
- 24% Quizzes (three or four quizzes, done in lab)
- 36% Final exam
- 40% Team Project
Topics
An approximate list of topics is given below,
more detail and an approximate ordering can be found at
csci.viu.ca/~wesselsd/courses/csci265
- Introduction to software process models (waterfall, incremental, agile)
and activities within the software life cycles
- Introduction to programming in the large vs. individual programming
- Software configuration management and version control (using git)
- Shells and shell programming (using bash)
- System design principles: levels of abstraction, separation of concerns,
information hiding, coupling and cohesion, re-use of standard structures
- Simple refactoring
- Verification and validation processes
- Inspections, reviews, and audits
- Shell, script, and program interaction (using bash, and C or C++)
- Testing fundamentals:
- unit, integration, validation, and system testing
- test plan creation and test case generation
- black box and white-box testing techniques
- regression testing and test automation
- Effective use of AI-assisted IDEs in code development
Course Learning Outcomes
On successful completion of the course, the student should be able to:
- Design, implement, test, and debug software systems composed
of multiple different programs, including a mix of C++, and bash
files spread across multiple subdirectories in a file system.
- Articulate design principles including separation of concerns,
information hiding, coupling and cohesion, and encapsulation.
- Conduct a personal code review (focused on common coding errors)
on a program component using a provided checklist.
- Contribute to a small-team code review focused on component correctness.
- Explain the potential benefits and risks associated with the use of generative AI
in the context of software development.
- Describe how a contract can be used to specify the behaviour of
a program component.
- Apply a variety of strategies to the testing and debugging of
simple programs.
- Analyze the extent to which another programmer's code meets
documentation and programming style standards.
- Describe the different practices that are key components of various
process models.
- Explain the concept of a software lifecycle and provide an example,
illustrating its phases including the deliverables that are produced.
- Describe how programming in the large differs from individual efforts
with respect to understanding a large code base, code reading,
understanding builds, and understanding context of changes.
- Demonstrate the capability to use version control (using git),
build automation (using make), and debuggers (using gdb) in support
of the development of a software product.
- Distinguish between program validation and verification.
- Describe the role that tools can play in the validation of software.
- Describe and distinguish among the different types and levels of testing
(unit, integration, systems, and acceptance)
- Create and document a set of tests for a medium-sized code segment.
- Describe how to select good regression tests and automate them.
Changes from past versions of 265 (which had 4 lecture hours per week):
as of January 2024, certain topics were moved to CSCI 162:
- Introduction to our linux environment
- Linking, loading, separate compilation, and automating builds (with make and C or C++)
- Applied regular expressions (in make)
- Debugging strategies and tools (using gdb)
- Defensive coding practices
|
Computer accounts
To work on your quizzes and experiment with the tools and languages discussed
during the semester, you will be given accounts for the computer labs.
There is a user id and password associated with each account.
Each student is responsible for their account, and for following
both the departmental and university-college policies. These may be found through
https://scitech.viu.ca/computer-science/computing-resources - Lab and Computer Usage Rules
Individual work:
Other than work conducted as part of the team project, all course work submitted for
assessment (quizzes, lab exercises,
assignments, exams, etc) must be completed as strictly individual work unless explicitly
stated otherwise (not teams or pairs, and not using help from other individuals
or AI tools such as CoPilot or chatGPT).
Appeals of Grades:
Any exercise or examination grade may be appealed. However, the
appeal must be made to the instructor, in writing and attached to the
work in question, and within 7 days of the grade being made
available to the class. The instructor reserves the right to re-grade
the entire piece of work submitted on appeal, not necessarily
just the component that the student believes is in error.
Grade Conversion:
The standard VIU grading scale will be in use.
90-100 |
85-<90 |
80-<85 |
76-<80 |
72-<76 |
68-<72 |
64-<68 |
60-<64 |
55-<60 |
50-<55 |
<50 |
A+ |
A |
A- |
B+ |
B |
B- |
C+ |
C |
C- |
D |
F |
Resources
A wide range of other supporting resources are provided by the institution, including:
Accessibility
Vancouver Island University recognizes its legal duty to provide educational opportunities
that enable students with a documented disability to access courses, programs, facilities,
and services.
The Policy and Procedural Guidelines apply to all students who have identified themselves
to the institution as having a documented disability who are inquiring about, applying to,
or registered in credit or non-credit courses in both on and off-campus programs.
Academic Integrity
Integrity in academic work is a central element of learning and is the basis of intellectual
pursuits in any academic community. It is also your responsibility to abide by the Student
Conduct Code and Student Academic Code of Conduct
Links to University Policies, Standards, and Guidelines
Below are links to many of the official VIU policies, procedures, and guidelines.