Back to CSC 317

Study notes

Written and reviewed by subject experts from the same material the questions were written from. Read a note, then practise the questions it teaches.

Notes on 113 of 126 objectives.

Software Engineering

12 mins read · 12 questions

Select an appropriate pattern for a given design problem and justify the choice.

12 mins read · 14 questions

Define anti-patterns and recognise common ones (God Object, Spaghetti Code, Golden Hammer, Lava Flow, copy-and-paste programming) together with their remedies.

12 mins read · 12 questions

Analyse the use of the Observer pattern in distributed systems (publish–subscribe, message brokers) and explain the issues of message ordering, delivery guarantees and coupling.

12 mins read · 20 questions

Explain the purpose of coding standards and style guides (readability, consistency, defect prevention) and apply naming, formatting and commenting conventions.

12 mins read · 14 questions

Describe secure coding principles (input validation, output encoding, least privilege, defence in depth, failing securely, safe handling of secrets) and relate them to common vulnerability classes such as injection and broken access control (OWASP Top 10).

13 mins read · 17 questions

Describe code review practices (formal inspection, walkthrough, pull-request review), including the roles involved and the use of checklists.

13 mins read · 14 questions

Explain what static analysis tools detect (style violations, code smells, potential defects, security vulnerabilities), name examples (linters, SonarQube), and state their limitations, including false positives and false negatives.

14 mins read · 15 questions

Explain the purpose of version control and use core Git concepts: repository, commit, branch, merge, rebase, pull request and tag.

13 mins read · 13 questions

Compare branching strategies (Git Flow, GitHub Flow, trunk-based development) and select one for a given team context.

13 mins read · 15 questions

Describe build automation tools (for example Make, Maven or Gradle, npm) and the stages of a CI/CD pipeline: build, test, analyse, package and deploy.

14 mins read · 16 questions

Analyse the Linux kernel development workflow (patch review on mailing lists, maintainer hierarchy, merge window, the origin of Git) as an example of large-scale distributed construction.

11 mins read · 16 questions

Define software testing, distinguish verification (“are we building the product right?”) from validation (“are we building the right product?”), and explain why testing can show the presence but not the absence of defects.

Get the course to read them

Find your course

Type your course code or its title. We show you exactly what we hold for it.

Or browse by programme