CSCI 265: Fall 2025 Final Exam
- PLEASE CLEARLY PRINT YOUR NAME ON YOUR EXAM BOOKLET
- You have threee hours to complete the exam (9am-noon)
- There are 9 questions on the exam, your best 8 answers will be recorded.
The questions are worth 9 marks each, for an exam total of 72 marks.
- Answer in the exam booklets provided, extra booklets are available if needed.
- Many of the questions are quite open-ended, the expectation is that you spend
about 20 minutes per question.
- The exam is closed book, closed notes, and no calculators, phones, laptops or other electronic aids
of any form may be used during the exam.
You are permitted one 8.5" x 11" double-sided sheet of notes ("cheat sheet").
- Be sure to check your exam to make sure all nine questions are included.
Question 1: Evaluating SDLCs [9]
Study the proposed new CSCI 265 team project SDLC outlined below,
then discuss its advantages/disadvantages in comparison to this year's SDLC
and make any recommendations you see fit to improve the proposal further.
- The SDLC will have three phases, with teams formed in week 1 of the term
and phase deliverables and presentations due in weeks 5, 9, and 13 of the term
(assuming the term is 13 weeks long).
- The team can choose their own approaches within the three phases, but with the
following restrictions/deliverable requirements:
In phase 1:
- planning presentations in week 2
- phase 2 presentation and deliverables due in week 5
- the required documents for this deliverable are a project proposal,
team charter, and standards/processes document
- the team github repo must be set up by week 5, with all team members
having cloned the key development branch and the course instructor
having been invited to the project
In phase 2:
- planning presentations in week 6
- phase 2 presentation and deliverables due in week 9
- a preliminary requirements document must be prepared, based on the
current expectations for the product
- a preliminary high-level design document must be prepared, based on the
current implementation expectations
- at least a proof-of-concept must be completed in each of the core
technology/implementation aspects of the project
In phase 3:
- planning presentations in week 10
- all documents (including test plan and closeout) and implementation completed
- final demo and all deliverables due in week 13
- The team projects will otherwise operate much like this term's.
(though without the broken links for the various document requirements,
apologies again for that!)
Question 2: Requirements, Design, and Test [9]
Suppose that during testing on your team 265 project in the final phase of this term
you had discovered an issue that highlighted a significant flaw in your written requirements.
Furthermore, suppose that this requirements flaw in turn led to the discovery of significant
flaws in your design.
And, finally, suppose that subsequent fixes of your requirements and design meant
you needed significant changes to your test cases.
Given the chain of suppositions above, describe how your team's processes and division
of tasks and roles would deal with addressing the needed changes to requirements,
design, testing, and implementation. (If this sequence of events did actually happen
for your team in phase 4 then instead describe how your team did actually deal
with it.)
Question 3: Automation in team projects [9]
If you or your 265 team wrote and used scripts to automate any aspects of the team
project this term, describe those scripts and their use and how you would expand or refine
them if time permitted.
If you and your 265 team didn't use any self-written automation scripts in your team
project this term, describe the specific aspects of the project for which such automation
would be most suitable, outline what the scripts would do and how they would achieve that,
and justify your choices.
Question 4: Team version control without github [9]
Suppose you are in the following scenario:
Your team's 265 project has been picked up by a software company for further development, and the purchasing
company has put one of their business managers in charge of overseeing things.
Unfortunately, this boss has bought into a conspiracy theory about github (and gitlab and
similar services). They trust the fundamentals of git itself, but not the more sophisticated tools.
You are assigned as both team lead and as the git lead for the team, working in a debian linux environment.
The team must manage its project code base using one linux account for the project itself and
one account per developer.
First, outline the steps you would take to move the project code base from github to
the project account, set up any desired branches, and ensure each team member has
an appropriate clone in their local repos.
Second, outline a process you would recommend to ensure safe handling of pushes/pulls/etc
by the team members to prevent unintended corruption of key branches.
Third, point out any significant flaws/pitfalls with the approaches you have laid out.
Precise git syntax is not required, but appropriate use of terminology regarding clones,
pushes, pulls, merges, etc is expected.
Question 5: Bug tracking and reporting [9]
Supposing you could find/request an ideal bug reporting app for people
to use in reporting bugs found in your team's 265 project:
(i) Sketch an interface for this app and briefly describe its key features/use.
(ii) Justify your specific choice of data fields/options.
Question 6: Time tracking, estimation, and reporting [9]
Suppose you were tasked with developing a simple tool/app to support CSCI 265 teams in
making time estimates for tasks, tracking their time, and providing basic reporting
on both the estimates and actual time spent on various aspects of the project.
Outline the key features you would include and why you selected those specific features, and sketch a simple interface
to be used by the developers to enter their time spent on tasks.
Question 7: Code inspections and standards [9]
There are conflicting schools of thought on the use of formal code inspections to
catch/enforce code standards:
- One view is that adherence to code standards should be a required pre-requisite to
submitting an item for formal inpsection, and that needing inspectors to review for
standards violations is a waste of their valuable time.
- Another view is that the inspectors are already going to be looking at the code in detail,
and they provide a good cross-section of people to spot violations the developer may have missed.
Considering this question in the context of a safety-critical system, where lives depend
on the quality and correctness of the code, expand the arguments both for and against having
the inspectors to catch/enforce code standards.
Question 8: Product deployment and maintenance [9]
Suppose your team project has been completed and has been expanded to be in use
by many sites/clients around the world:
- 86 chefs: many individuals have your game installed and are running it locally on their devices
- High rollers: many individuals have your product installed and are hosting their own games/tournaments
- Life Co: a backend has been included to allow users to sign in and access their data
across devices and different sites are now hosting the product in different regions
- Not mappening: many individuals have your game installed and are running it locally on their devices
- Parking: the product has been installed at and is in use by multiple different universities and colleges
- PYOA: many individuals have your game installed and are running it locally on their devices
Assuming a bug report comes in that identifies a critical flaw in the product,
detail the key issues you face with your specific product in identifying and
fixing the underlying defect and in distributing the fix to all the people now using
the product.
Be sure to clearly state any assumptions you make regarding the expanded product
and its distribution.
Question 9: Softare profiling [9]
Localizing the root cause of poor performance in a software product can sometimes
be quite challenging. Study the descriptions of a software program and associated performance
issue below, and list specific steps you would take to try to isolate and identify the root
cause of this problem as a prelude to implementing a fix.
Be sure your answer specifically targets this system and issue: vague/generic
approaches will not receive better than a passing mark.
- Software program: running at a small island university (SIU), the program
coordinates package pickup and delivery on campus by a small fleet of SIU vehicles and staff.
Users wishing to send a package go to the SIU website's courier page and enter the package size
and weight, the date,
building, room, and time window for package pickup, and the date, building, room, and time
window for the desired package delivery.
The data entered is stored in a database for subsequent use by our program of interest.
Our program-of-interest runs at 7am, noon, and 5pm each day, extracting the latest information from
the database and determining which vehicles to dispatch for package
pickup and delivery in the next 5 hours (within the appropriate pickup/delivery time windows),
and determines whether the package is to be left on the same vehicle from pickup until delivery
or stored in the campus warehouse, or transferred to another vehicle. The resulting scheduling
information is updated in the database, and can be subsequently accessed by an app on the
drivers' mobile devices.
The scheduling program is entirely written in C++, run on linux, and we have access to the makefile used
to build it.
- Performance issue: early in its use, the program ran very quickly, completing
the scheduling calculations in a matter of seconds on each run. The program has now been in
use for several years, and is progressively getting slower and slower to complete the
scheduling on each run - now taking several minutes rather than several seconds, and getting
steadily slower.