auto update

This commit is contained in:
Jet Hughes 2022-04-06 20:58:52 +12:00
parent 1dc978bd1c
commit 56fa770e31
133 changed files with 12 additions and 6210 deletions

18
.obsidian/workspace vendored
View File

@ -7,8 +7,11 @@
"id": "a12701fbd6d13db8", "id": "a12701fbd6d13db8",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "empty", "type": "markdown",
"state": {} "state": {
"file": "content/_index.md",
"mode": "source"
}
} }
} }
], ],
@ -65,6 +68,7 @@
"state": { "state": {
"type": "backlink", "type": "backlink",
"state": { "state": {
"file": "content/_index.md",
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical", "sortOrder": "alphabetical",
@ -84,13 +88,15 @@
}, },
"active": "a12701fbd6d13db8", "active": "a12701fbd6d13db8",
"lastOpenFiles": [ "lastOpenFiles": [
"content/_index.md",
"content/notes/INDEX.md",
"content/notes/201 Information Systems.md",
"content/notes/Lecture 6 Business Functions and Use Cases.md",
"content/notes/Approches to systems development.md",
"content/notes/analysis-of-recursive-algorithms.md", "content/notes/analysis-of-recursive-algorithms.md",
"content/notes/approches-to-systems-development.md", "content/notes/approches-to-systems-development.md",
"content/_index.md",
"content/notes/troubleshooting.md", "content/notes/troubleshooting.md",
"notes/hosting.md", "notes/hosting.md",
"out/notes/201-information-systems.md", "out/notes/201-information-systems.md"
"content/notes/index.md",
"content/203-human-computer-interaction.md"
] ]
} }

View File

@ -1,29 +0,0 @@
---
title: 🪴 Quartz 3.2
---
[index](notes/index.md)
Host your second brain and [digital garden](https://jzhao.xyz/posts/networked-thought) for free. Quartz features
1. Extremely fast full-text search by pressing `Ctrl` + `k`
2. Customizable and hackable design based on Hugo
3. Automatically generated backlinks, link previews, and local graph
4. Built-in [ CJK + Latex Support](None)
5. Support for both Markdown Links and Wikilinks
## Get Started
> 📚 [Setup your own digital garden using Quartz](notes/setup.md)
Not convinced yet? Look at some [community digital gardens](notes/showcase.md) built with Quartz, or read about [why I made Quartz](notes/philosophy.md) to begin with.
## Content Lists
If you prefer browsing the contents of this site through a list instead of a graph, you can find content lists here too:
- [All Notes](/notes)
- [Setup-related Notes](/tags/setup)
## Troubleshooting
- 🚧 [Troubleshooting and FAQ](notes/troubleshooting.md)
- 🐛 [Submit an Issue](https://github.com/jackyzha0/quartz/issues)
- 👀 [Discord Community](https://discord.gg/cRFFHYye7t)

View File

@ -1,5 +0,0 @@
# UML

View File

@ -1,68 +0,0 @@
# COSC201 - Algorithms and Data Structures
## 1 Lectures
- [[Merge sort - divide and conquer]]
- [[Lecture 8 Merge sort 2]]
- [[Lecture 9 Stacks queues and heaps]]
- [[Lecture 10 Heaps and heap sort]]
## 2 Notes
### 2.1 Algorithm Complexity
- [[Big-O]]
- [[Big theta]]
- [[Induction]]
- [[analysis of recursive algorithms]]
### 2.2 Algorithms
- [[Minimal spending tree]]
- [[Union Find-Disjoint set]]
-
### 2.3 Fundamental Data structures
- [[Objects]]
- Stacks queues, List/arrays
- [[Union Find-Disjoint set]]
- Graphs and networks
- Priority queue (heap)
- Weighted
- Unweighted
- Trees (search and optimisation)
- Maps (link between 'keys' and 'values')
- Sets (Unstructured) (no repetition allowed)
## 3 Assignments
[[assignment 1]]
## 4 Information
**Staff**
Role | Name | Email | Location | Hours
-----|------|-------|----------|-----|
Lectures | Michael Albert | michael.albert@otago.ac.nz | owheo g.52 | na |
Labs | Reuben Crimp | reuben.crimp@otago.ac.nz | owheo g.37a | na |
**Resources**
[blackboard](https://blackboard.otago.ac.nz/webapps/blackboard/execute/modulepage/view?course_id=_45042_1&cmp_tab_id=_508507_1&mode=view+)
[intro to algorithms book](https://otago.hosted.exlibrisgroup.com/permalink/f/1ihp3dt/OTAGO_ALMA51297974690001891)
**Assessment**
- Internal
- two asignments
- end of week 5 10%
- end of week 10 20%
- labs total 10%
- Exam - 60%
**Course_plan**
- Extension and refinement of Big-O notation for algorithmic analysis.
- The union-find data structure (a case study)
- Merge sort
- Priority queues and heap sort
- Search trees and balancing
- Hashing and hash maps
- Graphs and graph algorithms (shortest paths, minimal spanning trees)
- String algorithms

View File

@ -1,51 +0,0 @@
# INFO 201 - Information Systems
## 1 Lectures
- [[Lecture 6 Business Functions and Use Cases]]
- [[Lecture 7 Business process modelling(BPM)]]
- [[Lecture 8 Business patterns]]
- [[Lecture 9 Data Modelling and Normalisation]]
- [[Lecture 10 OOP Concepts and UML]]
- [[Lecture 11 Class diagrams]]
## 2 Notes
- [[Business analyst]]
- [[Systems analyst]]
- [[Developer]]
- [[Models]]
- [[Systems development lifecycle (SDLC)]]
- [[Agile Development]]
- [[Predictive adaptive spectrum]]
- [[Version Control Systems]]
- [[Requirements elicitation]]
### 2.1 Information
**Staff**
Role | Name | Email | Location | Hours
---------|----------------|-----------------------------------------------------------------|----------|------
Lecures | Nigel stanger | [nigel.stanger@otago.ac.nz](mailto:nigel.stanger@otago.ac.nz) | OBS 340 |
Lectures | Daniel Costa | [danielcalencar@otago.ac.nz](mailto:danielcalencar@otago.ac.nz) | OBS 345 |
Labs | Chris Edwards | [chris.edwards@otago.ac.nz](mailto:chris.edwards@otago.ac.nz) | OBS 328 |
Labs | Mark George | [mark.george@otago.ac.nz](mailto:mark.george@otago.ac.nz) | OBS 332 |
**Resources**
[Domain Driven Design with BDD](https://www.youtube.com/watch?v=Ju50D11EIoE)
**Assessment**
Must pass at least 7 labs
Must get total of at least 40%.
Grade Componentsh
- milestone 1 - 10%
- milestone 2 - 20%
- milestone 3 - 20%
- exam - 50%
**Course_plan**
![](https://i.imgur.com/q9MEwYL.png)
![](https://i.imgur.com/lb9zKh7.png)

View File

@ -1,45 +0,0 @@
# COSC 202 - Software development
## 1 Lectures
- [[Lecture 07 Unit Testing]]
- [[Lecture 08 Debugging]]
- [[Lecture 09 Documentation]]
- [[Lecture 10 Continuous integration]]
- [[Lecture 11 Continuous Integration 2]]
## 2 Notes
- [[Consoles Terminals Shells]]
- [[Git]]
- [[Ethics]]
- [[Branch]]
- [[Integrated Development Environments]]
## 3 Project
A non destructive image editor ANDIE
- [[CROCS]]
- [[Teamwork]]
## 4 Information
**Staff
- David Eyers - Lectures
- Steven mills - Project
- Reuben Crimp - Labs
- Student demonstrators
**Contact**
cosc202-staff@otago.ac.nz
**Resources**
lab book -> https://cosc202.cspages.otago.ac.nz/lab-book/COSC202LabBook.pdf
https://www.youtube.com/channel/UCD8yeTczadqdARzQUp29PJw
**Assessment**
20% x 2 group project
20% individual
40% exam
**Course plan**
![](https://i.imgur.com/cbxjS0E.png)
![](https://i.imgur.com/KwbGL6j.png)

View File

@ -1,69 +0,0 @@
# INFO203 - Human Computer Interaction
## 1 Notes
### 1.1 Lectures
- [[Lecture 7 Personas and Scenarios]]
- [[Lecture 8 Personas and Scenarios]]
- [[Lecture 9 Paper Protoypes, Wizard of OZ, Video Prototyping]]
- [[Lecture 10 Design Heuristics]]
- [[Lecture 11 Design Heuristics 2]]
- [[Lecture 12 Design Heuristics 3]]
### 1.2 Videos
- [[Heuristic Evaluation]]
- [[Storyboards mockups, paper prototypes]]
- [[Faking it Wizard of OZ]]
- [[Faking it video prototyping]]
### 1.3 Atomic
- [[HCI Big Picture]]
- [[Birth of HCI]]
- [[Prototyping]]
- [[Evaluating designs]]
- [[Needfinding]]
- [[Observation]]
- [[Interviews]]
- [[User Experience]]
- [[Usability]]
- [[HCI]]
### 1.4 Assignments
- [[What is Usability]]
- [[Heuristics Evaluation Assignment]]
- [[Assignment 3]]
### 1.5 Exam
[[Possible exam questions]]
## 2 Information
**Staff**
Role | Name | Email | Location | Hours
-----|------|-------|----------|------
Lectures | Tobias Langlotz | [tobias.langlotz@otago.ac.nz](mailto:tobias.langlotz@otago.ac.nz) | OBS 713 |
Labs | Jonatan Sutton | [sutjo752@student.otago.ac.nz](mailto:sutjo752@student.otago.ac.nz) | |
**Resources**
- [Course Outline](https://blackboard.otago.ac.nz/bbcswebdav/pid-2827486-dt-content-rid-17936119_1/courses/INFO203_S1DNIE_2022/INFO203%20Course%20Outline%281%29.pdf)
- [Stanford HCI Videos](https://blackboard.otago.ac.nz/webapps/blackboard/content/listContent.jsp?course_id=_45153_1&content_id=_2827496_1)
- [Lectures Slides](https://blackboard.otago.ac.nz/webapps/blackboard/content/listContent.jsp?course_id=_45153_1&content_id=_2827495_1)
- [Lab docs and assignments](https://blackboard.otago.ac.nz/webapps/blackboard/content/listContent.jsp?course_id=_45153_1&content_id=_2827497_1)
- mark weiser "Calm technology"
**Assessment**
Total > 50%
Exam > 40%
- Usability analysis 5%
- Usability analysis 2 10%
- Prototype 35%
- Exam 50%
**Course_plan
![[Pasted image 20220301174404.png]]
![[Pasted image 20220301174411.png]]

View File

@ -1,22 +0,0 @@
tags: review
---
# Agile Development
> guilding philosphy to develop info systems in unkown, rapidly changing evnironments
"Chaordic"
[The agile manifesto](https://www.agilealliance.org/agile101/the-agile-manifesto)
## 1 [[SCRUM]]
Development is split into many short (~30 day) "sprints" of intense focus where the entire team is involved
## 2 [[Extreme programming (XP)]]
take current industry practices to the extreme
## 3 [[Unified process (UP)]]
Interative and incremental architecture-centric which has four main phases
- inception
- elaboration
- construction
- transition

View File

@ -1,21 +0,0 @@
# All the light we cannot see
## Quotes
The entropy of a closed system never decreases
Sublimity: "the instant when on on ething is about to become something else. Day to night, catepillar to butterfly. Fawn to doe. Experiment to result. Boy to man"
-
"Do you know what happens, etienne, " says madame manec from
the other side of the kitchen, "when you drop a frog in a pot of boiling
water?"
"You will tell us, I am sure."
"It jumps out. But do you what what happens when you put the
frog in a pot of cool water and then slowly bring it to a boil? You know
what happens then?"
Marie-Laure waits. The potatoes steam.
Madame Manec says, "The frog cooks."
Science, my lad, is made up of mistakes, but the are mistakes which it is useful to make, because they lead little by little to the truth.

View File

@ -1,4 +0,0 @@
# Anti govt protest China
China used facial recognition to identofy protesters
these protesters used masks and toppled lamposts to thwart this infrastructure

View File

@ -1,13 +0,0 @@
# Approches to systems development
## 1 traditional
regardless of the approach, the conecpot of the model is import for analysis design and modelling parrasigms
### 1.1 system is a collection of process
function programming
processes interact with data
processes accept inputs and produce ouputs
### 1.2 object oriented
system is a collection of objects
these objects interact with each other
and send and respond to messages

View File

@ -1,58 +0,0 @@
[[203 Human-Computer interaction]]
# Assignment 3
**Deadline: Friday 27th of May 2022, 5pm via Blackboard (35% of final mark)**
## 1 Project: Prototypical Mobile App Development
### 1.1 Aim
- conecptual design and prototypical implementation of a application for mobile devices
- Usage of an iterative development model increasing the fidelity of the developed prototype
- Conduct brainstorming, develop personas and scenarios, create storyboard, create low fidelity prototypes (explore alternatives), informal evaluation, create high fidelity prototypes
### 1.2 Deadlines
- Friday 8th of April: Email to Jonthan (sutjo752@student.otago.ac.nz) to indicate group/ indivdual work and preliminary topic idea
- Friday 27th of May: Final recorded presentation and additional material summarising the prototypical mobile App development
### 1.3 Brainstorming:
- Explore user interface alternatives and compare against existing products similar to your app (or most similar apps)
- Document process: E.g. what are the different ideas, alternatives developed and existing solutions, what was the reason the choosing the winning idea
- Keep it short, make use of visual documentation (e.g. drawings, photos, Post-Its) and support it with text, mindmap(s) can me usefull to document brainstorming
- Documentation needs to provide evidence that you a) considered existing solutions (needfinding) and b) explored different alternatives
### 1.4 Personas and Scenarios:
- Conceptually develop personas and scenarios (at least two)
- Document final personas (also considering different type of personas) and scenarios
- Keep it short and see examples in the lectures for guidance
### 1.5 Storyboard:
- Develop a visual storyboard out of your scenario description
- See lecture on storyboards for tricks on developing a short and concise storyboard
- Digital storyboard or free hand sketch are both fine
### 1.6 Low fidelity prototypes:
- Develop low fidelity prototypes for your envisioned app using techniques explained in the lecture (paper-based prototypes)
- We expect 6-10 “screens” that should be prototypically developed
- Explore alternatives for the interface and document all (photos are ok when using pen-based sketches)
- Consider and document the flow within the app (relation and pathways between different screens)
### 1.7 Document design decisions / informal evaluation
- Which of the ideas from the different low fidelity prototypes did or did not work
- Document the identified issues by linking them to the design heuristics and mention the proposed solution(s)
- E.g. one aspect from one prototype worked better than in the alternative prototype because there was an issue with “Consistency”….
### 1.8 High fidelity prototype:
- Develop a high fidelity prototype from the knowledge gained with your low fidelity prototype
- Create the higher fidelity prototype by choosing a method (e.g. could be prototype toolkits such as Balsamiq, Adobe XD, …, some of them have a free trial period you are not expected to buy those, could be template based approaches using images of UI elements, …)
- Consider which interface elements you use because of size constraints within a mobile interface
- Outline the flow within the app (relation and pathways between different screens)
- Document using screenshots etc.
### 1.9 Submission:
- ~7min presentation slides with max. 7 slides (Powerpoint, Keynote, or Pdf) summarising the key aspects of your prototypical development
- Professional look: Less text more graphics, illustrations, and other media material (video?)
- This presentation is no advertisement or sales pitch but a summary of the work you did with some key insights you learned along the way
- Record your presentation (slides and with audio, video optional), we recommend Zoom for doing this
- Submit the recording of your presentation
- Submit all material (e.g. more detailed storyboards, alternatives explored, paper-based prototypes not covered in the presentation, full high level prototypes)
- Deadline: Friday 27th of May 2022, 5pm via Blackboard (35% of final mark)

View File

@ -1,16 +0,0 @@
---
aliases: BDD
sr-due: 2022-04-14
sr-interval: 23
sr-ease: 292
---
#review
# Behaviour Driven Development
Models should be created with the users needs in mind.
Required bahaviour determines acceptance criteria
This is called Behaviour Driven Development [[BDD]]
**Resources**
[Domain Driven Design with BDD](https://www.youtube.com/watch?v=Ju50D11EIoE)
[DDD videos](https://www.youtube.com/playlist?list=PLZBNtT95PIW3BPNYF5pYOi4MJjg_boXCG)

View File

@ -1,18 +0,0 @@
---
sr-due: 2022-04-27
sr-interval: 41
sr-ease: 290
---
tags: #review
---
### 0.1 Big-Θ
>Big theta means $f(n) = \Theta(g(n))$ if there are constants 0 < B < A such that for all sufficiently large n, ==$B × g(n) f(n) A × g(n)$==
- Upper and lower bound
- $Θ$ says that $g(n)$ provides **upper** and **lower** bound for $f(n)$
- "selection sort is $\Theta(n^2)$" -> the maximum number of operations will be bounded bothh above and below by some constant times $n^2$
- $f(n) = \Theta(g(n))$ means that f and g have similar growth rates
- if $f(n) = \Theta(g(n))$ then the opposite is also true
- usually $f(n)$ is complex but $g(n)$ is very simple

View File

@ -1,122 +0,0 @@
# Birth of HCI
ENIAC (one of the first programmable, electronic computers) 1946, and the first six programmers: Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Meltzer, Fran Bilas, and Ruth Lichterman
![[Pasted image 20220309103217.png]]
DEC PDP-8 and TI 980 (1960s), PDP-8 is an octal computer (switches in three-bit configurations), TI 980 is a hexadecimal machine (4-bit configuration). Not interactive
![[Pasted image 20220309103249.png]]
Batch processing using punch cards, still not interactive (1950s -1970s)
![[Pasted image 20220309103307.png]]
IBM System/360 (mainframe computer in the 70s), Altair 8800 (one of the first home computers)
![[Pasted image 20220309103339.png]]
visicalc (Dan Bricklin 1979), and Apple II (1977)
![[Pasted image 20220309103358.png]]
Sutherland, Ivan Edward (January 1963). "Sketchpad: A man-machine graphical communication system, MIT press.
![[Pasted image 20220309103425.png]]
Sutherland, Ivan Edward (January 1963). "Sketchpad: A man-machine graphical communication system, MIT press.
![[Pasted image 20220309103441.png]]
1968 - “The Sword of Damocles” Sutherland, Ivan Edward (1968), “A head-mounted three dimensional display”
![[Pasted image 20220309103500.png]]
1968 - “The Sword of Damocles” Sutherland, Ivan Edward (1968), “A head-mounted three dimensional display”
![[Pasted image 20220309103520.png]]
1968 - “The Sword of Damocles” Sutherland, Ivan Edward (1968), “A head-mounted three dimensional display”
![[Pasted image 20220309103543.png]]
“The Mother of All Demos”, presented by Douglas Engelbart (1968) at (ACM/IEEE) Computer Society's Fall Joint Computer Conference See full demo: https://www.youtube.com/watch?v=yJDv-zdhzMY
![[Pasted image 20220309103603.png]]
![[Pasted image 20220309103631.png]]
“Dynabook” Alan C. Kay. (1972), “Personal Computer for Children of All Ages”
![[Pasted image 20220309103706.png]]
Apple Newton (1993) and Apple iPad (2010)
![[Pasted image 20220309103724.png]]
Graphical User Interface supporting “What You See Is What You Get” (WYSIWYG), the Desktop metaphor (files, folders, etc.), Xerox Parc/Xeroc Star
![[Pasted image 20220309103738.png]]
Graphical User Interface supporting “What You See Is What You Get” (WYSIWYG), the Desktop metaphor (files, folders, etc.), Xerox Parc/Xeroc Star
![[Pasted image 20220309103752.png]]
1992/93 - IBM Simon First smartphone Phone, pager, calculator, address book, fax machine, and e-mail device
![[Pasted image 20220309103808.png]]
Ramesh Raskar, Greg Welch, Matt Cutts, Adam Lake, Lev Stesin and Henry Fuchs (1998) "The Office of the Future : A Unified Approach to Image-Based Modeling and Spatially Immersive Displays,"
![[Pasted image 20220309103853.png]]
1981 - Steve Mannss “Wearable Computing” Start of a series of prototypes for wearable computing, cyborgs, and mediated reality (-> Google Glass) www.wearcam.org, www.eyetap.org
![[Pasted image 20220309103916.png]]
Nokia N95 (2007) and Apple iPhone (2007)
![[Pasted image 20220309103944.png]]
Major innovations in HCI (Myers 1998)
![[Pasted image 20220309104007.png]]
![[Pasted image 20220309104015.png]]

View File

@ -1,25 +0,0 @@
---
aliases: BPMN
---
# BPMN - Business Process Model and Notation
- graphical diagramming language
- free international vendor standard developed by the object management group
- shows only the order of activites
- when, not under what conditions
- do not:
- detail the activites
- describe how it is informed
### 0.1 swimlanes
identify the business role for each activity
### 0.2 Other features
- looping back
- types of branch gateway
- parallel execution
- collaboration with external entities (pools)
- executable if using the right infrastructure
### 0.3 Examples
![[Pasted image 20220323113541.png]]
![[Pasted image 20220323113643.png]]

View File

@ -1,22 +0,0 @@
---
sr-due: 2022-05-14
sr-interval: 53
sr-ease: 290
---
tags: #review
---
# Business anlayst
Gather, document, verify, record business requirements
- mostly works with people - not coding
- within context of business model and strategy
Needs both business and ICT knowledge
- acts as bridge between mangement, user, and dev team
- understands integreation of ICT into business
Needs good interpersonal skills
- uncooperative uers
- reluctant managers
- free spirited devs

View File

@ -1,35 +0,0 @@
# Business functions
- what the business ought to be doing
- _not_
- who, how, stucture, tech
each business function becomes a set of features within an info system
## 1 Id business functions
- verb phrases
- id what the business ought to be doing ⇒ e.g., "accept payment from customer"
- id how => "we accept payments online banking and credit card"
- always ask "what is the objective"
- remove redundancies
- model the id'd functions as _use cases_
## 2 Use case
"A list of actions defining the interactions betweeen a role and a system to achiece a goal"
high level description of how people interact with a system
story of how the business works
should be:
- simple
- aimed at stakeholders
- understandable by non-tech people
- should use ubiquitous language
- also useful for system devs
can use text (Cockburn, fowler) or diagrams (function catalog, UML case diagrams)
## 3 UML
unified modeling language
- use case - class - state - activity - sequence - deployment etc

View File

@ -1,15 +0,0 @@
# 3 Business process model
- graphical depiction fo one ormore business proccesses
- some variant of a flowchart
- many different approaches
- BPMN
- UML activity diagrams
- data flow diagrams DFDs
- good for security
- business process execution language BPEL
- prgramm how a proces with go
- can be executed
- subject oriented business process mangement (s-BPM)
- and many more
- may be execultable
- developed alongside data models (ERDs, class diagrams etc)

View File

@ -1,26 +0,0 @@
# Business process
- A sequence of tasks or steps required to carry out a particular business function e.g.,:
- pocure new assets
- apply for leave
- process and orer
- enrol a student
- paper and or computer based processes
- processes can have sub-processes ⇒ nested hierarchy
- terminology
- business processes are also know as workflows
- activity usually means the same thing as tasl
### 0.1 example: processing an order
1. sales dept recieves and enters order into system
1. system triugger automated credit check bu finance dept
2. if credit not OK, STOP order
2. warhouse staff fulfill order
1. check availability in warehouse
2. if any item out of stick transfer to back order process
3. pack items for shipping
3. finance dept generated invoice
4. send shipment and invoice to customer
e.g., www.otago.ac.nz/study/enrolment/index.html

View File

@ -1,40 +0,0 @@
---
title: "CJK + Latex Support (测试)"
---
## Chinese, Japanese, Korean Support
几乎在我们意识到之前,我们已经离开了地面。
우리가 그것을 알기도 전에 우리는 땅을 떠났습니다.
私たちがそれを知るほぼ前に、私たちは地面を離れていました。
## Latex
Block math works with two dollar signs `$$...$$`
$$f(x) = \int_{-\infty}^\infty
f\hat(\xi),e^{2 \pi i \xi x}
\,d\xi$$
Inline math also works with single dollar signs `$...$`. For example, Euler's identity but inline: $e^{i\pi} = 0$
Aligned equations work quite well:
$$
\begin{aligned}
a &= b + c \\ &= e + f \\
\end{aligned}
$$
And matrices
$$
\begin{bmatrix}
1 & 2 & 3 \\
a & b & c
\end{bmatrix}
$$
## RTL
More information on configuring RTL languages like Arabic in the [config](notes/config.md) page.

View File

@ -1,3 +0,0 @@
[[Git Cheat Sheet]]
[[WinComposeS]]

View File

@ -1,44 +0,0 @@
| Heuristic | Severity | Location | Issue | Recommendation |
|:-------------------------------------------------------------|:---------------------------|:----------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| visibility of system status | 3 | Call | The the close window button does not leave the meeting. It pops up the small view. If the user closes this window. The user still does not leave the meeting and there is not GUI | make closing the windows prompt the user if they want to leave the meeting |
| error prevention | 3 | Call | The application crahed when cadence tried to take a snapshot. Then I could still see him even though he didn't know he was still in the meeting | The snapshot feature should not cause a crash. And when the GUI closes, the user should leave the meeting |
| Recognition rather than recall | 3 | N/A | I do not know how to add somebody else as a contact. I found a way to share a link to my profile, but I dont know how to use a link that was shared with me. | There should be clear and obvious steps on how to add a contact. If the person has no contacts then the buttons should be displayed more prominently. |
| Visibility of system status | 3 | Call | After Skype restarted from the snapshot button crash, the interface seemed like I wasnt in a call: there was no call overlay, I couldnt see or hear the other person, and the buttons prompted to start a call rather than stop it. However, my partner could actually see and hear me the whole time, without me knowing! | The application should always tell you when you are in a call. |
| User control and freedom | 3 | Private conversation | Logging out and logging in again permanently deletes the entire private conversation on your side without warning. | It should remember the conversation, or if this isnt possible, it should warn you about the consequences before you log out. |
| Visibility of system status | 3 | Call | If a skype window is closed while in a audio or video call, you remain in the call, despite the app being closed. | Either have a warning that the app is closing but you will remain in the call, or have a warning that closing the app will terminate your connection to the call |
| Visibility of system status | 2 | Audio/video settings | It is not clear whether or not the microphone test is running | There should be a visible indicator showing that the microphon test is running |
| Visibility of system status | 2 | Screenshare | The only indicator that you are sharing your screen is the button changing from “start sharing” to “stop sharing”. It is easy to forget you are sharing, which could potentially cause huge embarrassment! | There should be a permanent indicator that is visible even while using other applications. |
| Help users recognise and recover from errors | 2 | Account creation | You cannot use a PNG image as a profile picture, only a JPEG image. | Allow PNG images too, or automatically convert them when the user tries to pick them. |
| Flexibility and efficiency of use | 2 | Audio/video settings | When adjusting your audio and videos settings the setting for your webcam is hidden | It should be moved up so the use doesn't have to scroll |
| recognition rather than recall | 2 | Call | After opening the sidebar during a call there is no indication of how to hide it | There should be a button to close the sidebar during a call |
| User control and freedom | 2 | Mini Viewer | When minimising Skype into a mini-player while on video call, the icon for screen-share is visible, and easily confused with the maximise button to return the screen to the normal viewer | Have the button for screen share clearer of its purpose, and have a resize option when in mini-player |
| Match between system and the real world | 2 | Contacts list | Contacts who have sent you a message are not displayed in the “chats” section until you send a message back. | Text chats should always be displayed in the text chats section. |
| consistency and standards | 2 | Call | When one participant enters together mode, it force all the participant into together mode. But the users must all individually leave together mode. | It should be made clear that this is how is works as this was unexpeted behaviour |
| Flexibility and efficiency of use | 2 | Call | To click the horizontal dot menu in the bottom left the user must mouse over the react button which opens a popup. This menu usually closes after the mouse is moved off but sometimes it stays | The react menu should be moved or the mouse over function should be fixed |
| User control and freedom | 2 | Call | My partner has the ability to use a custom background image, but I dont have this feature on my end. | Everybody should have the feature! I dont know why I dont have it. |
| Match between system and the real world | 2 | Private conversation | There is a feature to start a private conversation. Does this imply that conversations are usually not private? | The application should describe what a private conversation means, and explain whatever the downsides are that mean that it cant be the default option. |
| Aesthetic and minimalist design | 2 | Call | When switching applications, Skype opens a floating window to contain the call, which will overlap other applications. | This feature is helpful but there needs to be a way to permanently dismiss it so people can work while in a call. |
| Consistency and standards | 2 | N/A | Quitting and restarting the application caused me to be logged out. | Its a program that is installed on my computer, so it makes sense to keep me logged in. |
| recognition rather than recall | 2 | Call | not clear how to exit together mode | Have some indicator of |
| User control and freedom | 2 | Text chat | You cannot send a message that starts with a slash. | You should be able to send messages starting with a slash. |
| Recognition rather than recall | 2 | General | The toolbar that typically runs along the top of the screen is only available/viewable on the app after pressing alt, and making any action outside of the toolbar removes it again | Have an option to toggle toolbar on/off, and/or make it clearer that alt engages the toolbar |
| Help and documentation | 2 | General | To get help with Skype, the toolbar has to be toggled or settings must be opened and navigated through to find the help section | Have a more easily accessible help button, perhaps near the notifications/create group .etc |
| Visibility of system status | 2 | Chat | When removing a message, it is not made clear whether it will remove the message for everyone, or just yourself | Clarify that removing the message removes it for all participants |
| Flexibility and efficiency of use | 2 | Chat | To view bookmarked messages the user must navigate through their own profile to the bookmarks tab, where all bookmarks from all chats are kept, unsorted | Have an option to view bookmarked chats from certain groups, or have sorting criteria (date, group etc) |
| Aesthetic and minimalist design | 1 | Profile | When trying to click on your profile, if the status symbol is clicked a dropdown menu appears that gives you the ability to set your status (active, away, DnD etc), but this option is already included in the main dropdown from clicking onto your profile | Remove the separate function to help mis-click prevention |
| Match between system and the real world | 1 | DnD popup | When entering Do Not Disturb, a pop-up notifies you that you will not receive notifications while this is on. The popup has three options to exit it, OK, View Settings, and Dont ask me again | Improve the wording. Instead of Dont ask me again, have dont show me this again or something of the like |
| User coontrol and freedom | 1 | Mini floating window | There is no dedicated button to maximise the floating window | A dedicated button should be added to maximise the floating window |
| Match between system and the real world | 1 | New Group | When a new group is created, there are two options presented for adding people to the group. There is invite and add people as two separate options. One option is for adding people through a link, and one is for inviting contacts. However, the add people option also contains an option for adding via link. | Remove the invite option, as both are covered under add people. |
| Consistency and standards | 1 | General | Throughout the app, there are multiple different designs for the add members button. There are three different actions that can be taken to add members to a group, and they all have different icons | Generalise the icons so that they all follow the same design, that way they are recognisable throughout the application |
| user control and freedom | 1 | Audio and video settings| cadence cannot add a custom background | It should at least say why he cant |
| Flexibility and efficiency of use | 1 | Call | When a user is using multiple displays, even if the large skype window is visible the floating windows opens | The floating window should no open in this situation |
| Help and docmentation | 1 | Call | When in a call by yourself the record button is grayed out and not pressable. There is no indication as to why | On mousing ove the button it should say why it is grayed out |
| Aesthetic and minimalist design | 1 | Account creation | On one of the screens, the “continue” button must be clicked twice in order to continue. | The continue button should continue. |
| help and documentation | 1 | Chat | no information about what private mode is | more information should be iven to the user |
| Aesthetic and minimalist design | 1 | Top of the screen | Informational banners appear here and do not go away until they are interacted with. They do not display helpful information. Sometimes duplicates should appear. | The banners should go away when they are no longer relevant. |
| Match between system and the real world | 1 | Call | “Together mode” is poorly named and does not accurately indicate what it will do. | This feature could have a name like “background scene”, or tooltip text, or some other help mechanism. |
| Match between system and the real world | 1 | Polls | Somebody clicking or unclicking a poll option sends me a notification sound. These poll events contain little information on their own, so theres no reason for them to notify immediately. | Do not notify for people clicking polls. |
| Match between system and the real world | 1 | Contacts list | There is a feature to “send a contact”, though this offers to send a person their own contact card. | Do not offer to send people their own contact cards. |
| Consistency and standards | 1 | Call | The “view” button has an inconsistent appearance. It activates a dropdown but looks like a functional button. | Add an arrow indicator to the button so that it matches the rest of the applications conventions. |
| Consistency and standards | 1 | Polls | Its not obvious that a poll option highlighted in blue indicates that you should clicked that option. | Poll options should be represented as traditional checkboxes, rather than weird coloured rectangles. This also makes it clear that you can click again to undo your vote, which is already a feature. |
| Consistency and standards | 1 | Main menu | There is an option to “download the app”. I am already using the desktop application. | The text should state “phone app” to contrast it from desktop app. |

View File

@ -1,39 +0,0 @@
---
sr-due: 2022-04-10
sr-interval: 27
sr-ease: 270
---
tags: #review
---
# Consoles vs Terminals vs Shells
- consoles vs terminals/command line shells
- console -> io device which is part of a computer (physical terminal)
- console is the device: -> terminal is program inside that device
- terminal -> text input output environment (can be remote)
- windows terminal
- [[shell]] -> program which the terminal/console sends input to which sends command to the OS
- [[unix shell]]
- powershell
- cmd
- bash, fish, zsh, ksh, sh, tsch
#### BREIF HISTORY
1. At first only main console
2. Then multiple terminals which allowed mulitple people to use one computer
3. Graphics support
4. Console + terminal merged
5. Virtual terminals -> no need for direct hardware control -> replaced by OS
```mermaid
graph LR
MainConsole --> MultipleTerminals --> GraphicsSupport --> MergeConsole&Terminal --> VirtualTerminals
```
---
resources:
[whats the differnce between a console a terminal and a shell](https://www.hanselman.com/blog/whats-the-difference-between-a-console-a-terminal-and-a-shell)
---

View File

@ -1,72 +0,0 @@
# Continuous Integration
## 1 What is it
continuous --> is always happening
integration --> connecting software components
inc ontrast to ad hoc, occasional integration:
- diverging component developmetnamy break integration
- repaiing software may be expensive
supports 'aglile' software dev
- like test driven development, help catch issues early
usually automated
## 2 Purposes
- checking code syntax
- e.g., have CI compile the code and report errors
- (local devs compilaer may be different from remote)
- checking semantics of code
- building docs
- e.g., auto run javadoc
- running projects code tests
- auto run JUnit, and report fails
## 3 Starting CI jobs
- from version control
- e.g., every commit triggered CI jobs to run
- starts on a push to server
- manually
- on a schedule
## 4 Runs asnychronously
- dont require devs to wait for completion
- common to run locally as well as on consistent standard environment
other timescales
- local checks as you commit
- checks as you type
- checks as you save
## 5 Output
since CI is asynchronous, its feedback is also
e.g.,
- web badges showing status
- can send emails
- messaging platform
- e.g., slack, discord, teams
- webhooks etc
git project websites usually provide logging interface,
will watch scripts in virtual terminal and capture output from CI scripts
## 6 Github piplines
a pipeline has multiple _stages_
- e.g., test, build, deploy
each stages has multiple _jobs_
- e.g., JUnit, custom tests, etc
## 7 Yaml
most Ci frameworks use YAML for their configuration
structured text based formats
- python-like format or ≈JSON
## 8 configurationg from git repo
CI config often via file in git top-level directory
- CI is version managed
Gitlab pipeling specs go into .gitlab-ci.yaml:
- shows command sequece to run for a jon, within a stage
- output from commands is stored for a subsequent viewing
- indicates what files 'artifacts' should be kept from jobs

View File

@ -1,179 +0,0 @@
# 2 Dependencies among attributes
### 0.1 Functional Depenencies (FDs)
For any given value of attribute A there is _exactly one_ associated value of attribute B, then A _functionally determines_ B (loosely)
This is the theoretical basis for normalisation, and uniqueness property of PK (A is unique with respect to B)
- one to one
- Written as: A --> B
- Equivalently, "B is functionally dependent on A"
- Within a single relation only
- every attribute functionally dependent of primary key (PK)
#### 0.1.1 Example 1
- consdier a specific student ID e.g., 123346
- this student ID is alwasys associated witha single studnet name (e.g., jane smith)
- even it the students name changes, that student ID will still be asociated with the name of only that on student
- _The value of studnet id dtermines the value of student name_
#### 0.1.2 Other examples
- student ID --> student name (but not vice versa)
- car registration --> car owner (but not vice versa)
- rego --> VIN
- VIN --> rego
- student ID --> name, semester address, mobile number
- car rego --> owener name
- IRD number + year --> tax payable
- product ID + order no --> quantity ordered
#### 0.1.3 Anti examples
- student ID + name --> birth date (ovekill, partial dependency)
- home address --> student name
- name --> birth date
e.g.,
![](https://i.imgur.com/J0FzURg.png)
![](https://i.imgur.com/EMSOMmC.png)
### 0.2 Using Functional dependencies
To determine them:
- need detailed knowledge of thebusiness rules
- examine existing data sets
- not always practical when these are large or unknown
Can be represented using funcitonal dependency diagrams (FDDs)
Bottom up approach
- ERD is "top-down"
- FD best used as a design validation tool
### 0.3 Types of functional dependencies
#### 0.3.1 Dependencies on more that one attribute
non primary attributes that are dependent on two or more attributes
always arise with composite PKs
e.g.,
![](https://i.imgur.com/d4fUeRD.png)
#### 0.3.2 Partial Dependency
Subset of left hand side determines right hand side
"extra attributes"
e.g.,
![](https://i.imgur.com/clpV0eU.png)
![Uploading file...mfewm]()
#### 0.3.3 Transitive dependency
e.g.,
- part num determines supplier number
- supplier number determines supplier name
- part number determines supplier name
BUT 3 is already implied by 1 & 2 --> redundant supplier names
![](https://i.imgur.com/VZbxVff.png)
![](https://i.imgur.com/df0D7Lc.png)
### 0.4 Multivalued dependencies (MVDs)
if for any given value of attribute A there is a _set_ of associated values of attribute S, the a _Multidetermines_ S (loosely)
- one to many
- written: A ↠ S
- equivalently, "S is multiply dependent on A"
- Generalistion of FDs: all FDs are MVDs, but not vice versa
- A is still unique with respect to S
#### 0.4.1 Examples
![](https://i.imgur.com/938t9Kd.png)
[[Normalisation]]
# 2 Dependencies among attributes
### 2.1 Functional Depenencies (FDs)
For any given value of attribute A there is _exactly one_ associated value of attribute B, then A _functionally determines_ B (loosely)
This is the theoretical basis for normalisation, and uniqueness property of PK (A is unique with respect to B)
- one to one
- Written as: A --> B
- Equivalently, "B is functionally dependent on A"
- Within a single relation only
- every attribute functionally dependent of primary key (PK)
#### 2.1.1 Example 1
- consdier a specific student ID e.g., 123346
- this student ID is alwasys associated witha single studnet name (e.g., jane smith)
- even it the students name changes, that student ID will still be asociated with the name of only that on student
- _The value of studnet id dtermines the value of student name_
#### 2.1.2 Other examples
- student ID --> student name (but not vice versa)
- car registration --> car owner (but not vice versa)
- rego --> VIN
- VIN --> rego
- student ID --> name, semester address, mobile number
- car rego --> owener name
- IRD number + year --> tax payable
- product ID + order no --> quantity ordered
#### 2.1.3 Anti examples
- student ID + name --> birth date (ovekill, partial dependency)
- home address --> student name
- name --> birth date
e.g.,
![](https://i.imgur.com/J0FzURg.png)
![](https://i.imgur.com/EMSOMmC.png)
### 2.2 Using Functional dependencies
To determine them:
- need detailed knowledge of thebusiness rules
- examine existing data sets
- not always practical when these are large or unknown
Can be represented using funcitonal dependency diagrams (FDDs)
Bottom up approach
- ERD is "top-down"
- FD best used as a design validation tool
### 2.3 Types of functional dependencies
#### 2.3.1 Dependencies on more that one attribute
non primary attributes that are dependent on two or more attributes
always arise with composite PKs
e.g.,
![](https://i.imgur.com/d4fUeRD.png)
#### 2.3.2 Partial Dependency
Subset of left hand side determines right hand side
"extra attributes"
e.g.,
![](https://i.imgur.com/clpV0eU.png)
![Uploading file...mfewm]()
#### 2.3.3 Transitive dependency
e.g.,
- part num determines supplier number
- supplier number determines supplier name
- part number determines supplier name
BUT 3 is already implied by 1 & 2 --> redundant supplier names
![](https://i.imgur.com/VZbxVff.png)
![](https://i.imgur.com/df0D7Lc.png)
### 2.4 Multivalued dependencies (MVDs)
if for any given value of attribute A there is a _set_ of associated values of attribute S, the a _Multidetermines_ S (loosely)
- one to many
- written: A ↠ S
- equivalently, "S is multiply dependent on A"
- Generalistion of FDs: all FDs are MVDs, but not vice versa
- A is still unique with respect to S
#### 2.4.1 Examples
![](https://i.imgur.com/938t9Kd.png)

View File

@ -1,43 +0,0 @@
---
aliases: DDD
sr-due: 2022-04-12
sr-interval: 19
sr-ease: 272
---
#review
# Domain Driven Design
>A method of designing software by designing models of the domain and creating software which conforms to those models
Ubiquitous language -> The language a team agrees on to describe ideas in the problem domain
- This laguage becomes more and more refined as it is used
- This reduces misunderstandings
Diagram:
```mermaid
flowchart LR
subgraph Tactical Design Tools
subgraph Service
direction TB
B(Project)
C(Layers)
D(Modules)
E(Design Patters)
F(OOP)
G(Classes)
H(Objects)
I(Exe, jar, zip)
end
end
```
``` mermaid
flowchart LR
subgraph Strategic Design Tools
direction LR
Domain-->Sub-Domain1-->Service1
Domain-->Sub-Domain2-->Service2
Domain-->Sub-Domain3-->Service3
end
```

View File

@ -1,46 +0,0 @@
---
aliases: ERD, ERDs
---
# Entity Relationship Diagrams
![[Pasted image 20220328165256.png]]
cardinality
identifying vs non identifying relationship
labels are important - but not always needed
associative entity => changes many to many relationship with additional relationship
## 1 subtypes
![[Pasted image 20220328165640.png]]
![[Pasted image 20220328165656.png]]
uses:
- model mutual exclusivity
- better for modelling not for implementation
## 2 parallel relationship
![[Pasted image 20220328165851.png]]
could model as separate relationships via staff subtypes
not very common
![[Pasted image 20220328165944.png]]
also an example of recursive many-to-many relationships
## 3 recursive relationship
labels are critical
usually 1:M can be 1:1 or M:M
![[Pasted image 20220328200337.png]]
## 4 dealing with data history
![[Pasted image 20220328200434.png]]
could be many to many relationships:![[Pasted image 20220328200517.png]]
so associative relationship: ![[Pasted image 20220328200536.png]]
what do we require:
- for the current point in time
- an histroical record how ⇒ must be selecetive to not use up to much space

View File

@ -1,187 +0,0 @@
---
sr-due: 2022-04-07
sr-interval: 10
sr-ease: 210
---
tags: #review
---
#### Review questions
1. what are two of the five (PGRCW) isses to consider when evaluating designs
- precision and reliability
- are your evaulationg repeatable
- are they accurate
- generalizability
- do your findings apply to the real world
- realism
- do you results apply tot he real world
- comparison
- better than just "do you like it study"
3. what are the two styles of evaluation. How do they differ
- ~~qualitative and quantitative~~
- field and lab studies
4. when would you use a qualitative methods and when would you use a quantitative method
- qualitative when comparing designs
- quantitative when evaluating a single design
5. what are two stages of design and in each cycle which type of method should you use
- design stage qualitative
- implentation quantitative
6. give a brief description of one method of evaluation.
- feedback from experts
- usbility studies
- observation
- simulation/maths
- surveys/focus groups
- comparitive experiments
---
# Evaluating-designs
Why to evaluate using 'outside' people:
- how do we know if a [[Prototyping|prototype]] is good
- designer/developers are not 'fresh' -> they already have experience with the product
- designer/developers don't know what real users will do
## Issues to consider
- Reliability/precision
- how accurate is your study?
- Is is reproducible -> if it was repeated, would you get the same result
- Generalizability
- Is your sample representative
- Realism
- Would observed behaviour also occur in the wild
- Comparison
- Shows how different options were recieved
- rather than a "people liked it" study
- work involved/efficiency
- How cost efficient are your methods
## Factors to consider when choosing an evaluation method
- Stage in the cycle at which the evaluation is carried out -> (design / implementation)
- Style of evaluation -> (lab / field)
- Level of subjectivity or objectivity
- Type of measurement -> (qualitative / quantitative)
- Information provided -> (high-level / low-level)
- Immediacy of response -> (real-time / recollection of events)
- Level of interference implied -> (intrusiveness)
- Resources required -> (equipment, time, money, subjects, expertise, context)
## Styles of evaluation
##### Laboratory Studies
- 1st step: Designer evaluates his/her UI
- Specialised equipment for testing available
- Undisturbed (can be a good or bad thing)
- Allows for well controlled experiments
- Substitute for dangerous or remote real-world locations
- Variations in manipulations possible / alternatives
##### Field Studies
- Within the actual users working environment
- Observe the system in action
- Disturbance / interruptions (+/-)
- Long-term studies possible
- Bias: presence of observer and equipment
- Needs support / disturbs real workflow
## Quantitative vs Qualitative methods
##### Quantitative Measures
- Usually numeric
- E.g. # of errors, time to complete a certain task, questionnaire with scales
- Can be (easily) analysed using statistical techniques
- Rather objective
- Most useful in comparing alternative designs
- Test hypotheses
- Confirm designs
##### Qualitative Measures
- Non-numeric
- E.g. survey, interview, informal observation, heuristic evaluation
- Difficult to analyse, demands interpretation
- Rather subjective
- Users overall reaction and understanding of design
- Generate hypotheses
- Find flaws
## Stage in cycle
##### Design Stage
- Only concept (even if very detailed) exists
- More experts, less users involved
- Greatest pay-off: early error detection saves a lot of development money
- Rather qualitative measures (exceptions: detail alternatives; fundamental questions, ...)
##### Implementation
- Artefact exists, sth. concrete to be tested
- More users, less experts involved
- Assures quality of product before or after deployment; bug detection
- Rather quantitative measures (exceptions: overall satisfaction, appeal, ...)
## Methods
### Usability studies
- Bringing people in to test Product
- Usage setting is not ecologically valid - usage in real world can be different
- can have tester bias - testers are not the same as real users
- cant compare interfaces
- requires physical contact
### Surveys and focus groups
+ quicly get feedback from large number of responses
+ auto tally ressults
+ easy to compare different products
- responder bias
- Not accurate representation of real product
* e.g., ![[Pasted image 20220316130318.png]]
* Focus groups
* gathering groups of people to discuss an interface
* group setting can help or hinder
### Feedback from experts
- [[Peer critique]]
- [[Dogfooding]]
- Using tools yourself
- [[Heuristic Evaluation]]
- structured feedback
### Comparative experiments
- in lab, field, online
- short or long duration
- which option is better?
- what matters most?
- can see real usage
- more actionable
### Participant observation
- observe what people do in the actual evironment
- usually more long term
- find things not present in short term studies
- [[Observation]]
### Simulation and formal models
- more mathmatical quantitative
- useful if you have a theory to test
- often used for input techniques
- can test multiple alternatives quickly
- typically simulation is used in conjugtion with [[monte carlo optimisation]]
## Query techniques
- [[Interviews]]
- questionnaires
- less flexible
- larger samples possible
- design of questionnaire is for expert only
- use of standard (proven) questionnaires recommended
- types of questions:
- general (age, gender)
- open ended
- scalar (e.g., likert-like scales)
- multiple choice
- ranking
## Users
- users can come up with great ideas
- lead user -> need specific soluton that does not exist -> often make up their own solution
- extreme user -> use existing solution for it's intended purpose to an extreme degree
- typical user ->

View File

@ -1,35 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 17
sr-ease: 250
---
tags: #review
---
# Extreme programming (XP)
^e9fd09
take current industry practices to the extreme
- focus of proven industry practices
- combine them innovatively to get better results
##### Values and principles
communication, simplicity, feedback, courage.
- Planning -> based on user stories
- Testing -> thorough testing at every step
- Pair programming -> watch, inspect, and trade off
- Simple designs -> based on agile modelling principles
- Refactoring -> redo and clean up as you go
- Collective code ownership -> egoless development, anyone can review and improve code
- Continuous integration -> grow the software continuously
- On-site customer -> get sign-off as you go
- System metaphor -> what should the final system look like? Small releases given to users frequently
- Forty-hour work week -> dont overload the developers
- Coding standards -> follow industry standards for code
##### Three ring project approach
![[Pasted image 20220308134047.png]]

View File

@ -1,58 +0,0 @@
# Faking it Wizard of OZ
making interactive app quickly with minimal code
simulate interactive behaviour with human operators
- make interactive app without much code
- front end interface
- remote wizard controls user interface
- makes sense with is faster/cheaper/easier than making the real thing
- get feedback from users people
- hi-fi users think its more real
- low-fi: more license to suggest changes
## 1 making wizard protoypes
- find scenarios to protoypes
- create UI skeleton
- develop hooks for wizard input
- decide where and how the wizard will provide input
- remember not to fake stuff that it not feasible in real life
- rehearse wizard rile with colleague
## 2 running wizard protoypes
- practivce with friend
- recruit users
- two roles:
- facilitator ⇒ pprovides tasks and takes notes
- wizard ⇒ operaties interface
- user feedback
- think aloud
- retrospective
- heuristic evaluation
- debrief users
## 3 used throughout development
user can do less and less and the prototyp comes closer to realisation
## 4 advatages
- fast
- variable
- more real than papar prototypes
- finds bugs and pronlems with design
- places user at center
- can envision challenging to built application
- ability to look foward and "use" tech that isn't created yet
## 5 Disadvatages
- simulations may misrepresent otherwire imperfect tech
- mya simulate techs that not not exist (and mnay never)
- require training and can be inconsistent
- playing the wizard can be exhausting
- some features are difficult to simulate
- may not be appropriate

View File

@ -1,37 +0,0 @@
# Video prototyping
## 1 benefits
- cheap and fast
- great communication
- can serve as spec for devs
- ties interface design to tasks
## 2 fidelity
low-fi 2-5min brainstorm
mid-fi 1-4 paper prtotypes video
hi-fi slick +fancy for investors/management
## 3 shows
- like a storyboard, the whole tasks
- motivvationa and success
- draw on tasks you've observed
- illustrate importand tasks
- help scope minimum viable poduct
- forces you to make design decisions in a new way
## 4 steps
- outline (maybe use storyboards)
- fin to extemporize
- equiment
- a camera (not fancy needed)
- people
- realistic location
- focus on the message more than production values
## 5 considerations
- silent(with title cards) or with audio
- audio can be finicky
- interface can be anything
- mockups, paper prototypes, code
- can show success and failure of interfaces an failure
- edit as little as possible (time consuming)

View File

@ -1,43 +0,0 @@
#CheatSheet
# Git Cheat Sheet
#### 0.1.1 Commands
- Clone -> create local copy of remote repo
- Commit -> save changes to local repo
- Packages logically related collection of changes and save the permanently is repos history
- Each commit should address single well defined task
- Commits should be small and regular
- Should contain a brief, informative, message
- one line -> <50 (commit needing more than this are likely too large)
- multi line -> <72
- well defined, shared terminology
- consider what other devs need to know
- Stash -> temporarily store uncommited changes
- Push -> Upload changes from local repo to remote
- Pull -> Download and merge changes from remote repo into local repo (fetch + merge)
- Merge -> Merge changes from one brach into another
- merge when:
- pulling changes from remote into your repo
- merging from branch into main codebase
- Can merge any branch into any other branch
- good idea to regularly rebase specialised persistent branches to keep them in sync with the more general main codebase
- rebase topic branches before merging into main
- helps to deal with merge conflicts
- only branch is broken if you mess up
- can test for breakage before merging to main
- Merging is usually automatic
- sometimes merge algorithm can't resolve conflicting changes to the same code
- e.g., two devs change the same method at the same time
- conflict must then be manually resolved
- All VCS will check that your repo is up to date before pushing, and force you to push if not
- Tag -> name a particular commit e.g., for a release
#### 0.1.2 Terms
- Head -> most recent commit on Current branch
-[[Branch]] -> Split current dev path into two to work on e.g., a bug or a feature
- Repository -> Where the codebase/file are stored ^3b3a5d
- Contains meta-data about the previous vesions etc
- Merge commit -> commits which are derived from multiple parent commits
- Git tag -> e.g., v 1.0
- cannot be move by commits
- record metadata

View File

@ -1,23 +0,0 @@
---
sr-due: 2022-04-11
sr-interval: 28
sr-ease: 270
---
tags: #review
---
# HCI Big Picture
>HCI is the cycle of design, implementation, evaluation of user interfaces
![[Pasted image 20220301175640.png|300]]
>"fail fast so you can succeed sooner"
**Focus on people**
Good design is good
Bad design costs lives, money, time
Bad design can be easily avoided using basic ideas like consistency and feedback
Joy of good design: When interaction becomes "invisible" - intuitive**

View File

@ -1,120 +0,0 @@
# Heuristic evaluation
>"Heuristics are strategies derived from previous experiences with similar problems"
jacob nielsen and rolf molich
help find usability problems
small set of 3-5 evaluators examine UI
independently check for compliance with usability principles
different evaluators will find different problems
evaluators only communicate afterwaards
findings are aggregated at the end
![[Pasted image 20220322102933.png]]
## 1 when?
- as part of need finding -> use experts to critique existing solutions
- before user testing -> identify minor issues before user testing
- before redesigning -> learn what works and what should change
- when you know there are problems but you need evidence -> "provide you with ammunition for design"
- before release -> smooth off rough edges
## 2 What
### 2.1 Process
#### 2.1.1 Overview
Helps find problems in design
- 3-4 evaluators examine UI
- independent reviewers check for compliance with usability principles
- each evaluator will find different problems
- evaluators only communicate afterwards and the findings are aggregated
can perform on working UI or sketches
#### 2.1.2 Phases
1. pre evaluation training ⇒ give evaluators needed domain knowledge and information on the scenario
2. evaluation ⇒ individuals evaluate then aggregate result
1. first as individuals
2. then sit all together and aggregate
3. Severity rating ⇒ determine how severe each problem is (priority). Can do first individually and then as a group
4. Debriefing ⇒ review with design team
#### 2.1.3 Individual
dont look search for heuristics individually
just go through the app (like a user). If we find issues, we assign them to categories
step through design several times
- examine details, flow, an architecture
- consult list of usability principles
- … and anything else that comes to mind
which principles
- Nielsen's heuristics
- category specific heuristics
- e.g., design goals, competitive analysis, existing designs
use violations for redesign/fix problems
multiple evaluators because no one finds everything
some will always find more than others (Rule of thumb 5 evaluators find ~75% of problems)
#### 2.1.4 Severity rating
- independently estimate after viewing
- allocate resources to fix problems
- estimate need for more usability tests
0. not problem
1. cosmetic problem
2. minor usability problem
3. major
4. catastrophe
#### 2.1.5 Debreifing
- with evaluators observers and dev team
- discuss general characteristics of UI
- suggest potential imporvements
- dev team estimate effort to fix
- brainstorm solutions
### 2.2 Nielsen's ten heuristics
visibility of system status
match between system and world
user control and freedom
consistency and standards
error prevention
recognition rather than recall
flexibility and efficiency of use
aesthetic and minimalist design
help users recognize, diagnose, and recover from errors
help and documentation
### 2.3 Heuristic evaluation vs user testting
heuristics | user testing
----------------- | --------------
faster | slower
1-2 hrs each |
results pre-interpreted |
^ done by experts |
less accurate | more acurate
does not take into account actual users | can find issues that experts might not have
value to alternate methods
^ find dfferent issues
![[Pasted image 20220316101636.png]]
### 2.4 Extra tips how to individual
- at least two passes each
- first get get feel for flow
- second to focus on specific elements
- if a system is "walk up and use" or evaluators are already domain expers ⇒ no assistance is needed
- otherwire might supply evaluators with scenarios
- each evaluators should list issues separately
- risk of repeating problematic aspect
- may not be possible to fix all problems
- where problems may be found
- single location in UI
- two or more locations that need to be compared
- problem with overall structure
- something is missing
- ambiguous with early prototypes
- sometimes ....

View File

@ -1,121 +0,0 @@
[[Jet - Ohyay]]
[[Jet -Discord]]
[[Combined evals]]
# Skype Heuristic Evaluation
Jet Hughes 9474308
Note: I did not recieve the Evaluation from Cadence until Thursday night and 5:52pm
## 1 Abstract
The purpose of this evaluation was to uncover existing usability and functionality issues with the Skype app, so that it's usabilty can be improved. Heuristic Evaluations were carried out by three individuals according to Jakob Nielsen's ten design heuristics and a severity scale of 0 (not an issue) to 4 (usability catastrophe).
Their tasks were to set up and carry out a meeting using the app, and to look out for violations of Neilsens ten heuristics.
The key findings of this evaluation revealed that while the app is mostly usable, there are a few major issues that need to be fixed.
## 2 Executive summary
![](https://i.imgur.com/hXWTS8G.png)
![](https://i.imgur.com/syuCmSz.png)
![](https://i.imgur.com/VmrZlby.png)
The skype app is one of the most used online messaging and video call desktop applications. It allows users to "make free video and one-to-one and group calls, send instant messges and share files with other people on Skype" (_What Is Skype? | Skype Support_, n.d.).
In order to set up a meeting the user needed to press the Meet now button which is visible in many places. To add more participants the use can either call a group chat directly, or share a link to the meeting.
In addition to many minor issues, the evaluators were able to find multiple major usability issues within the app. The three most severe issues were:
**Finding 1: Visibility of system status** The windows OS close window button clooses skype without leaving the meeting. It opens the small floating window. This is not so bad, however, when the user closes the floating window, the user does still not leave the meeting, and is still visible to other users while having no indicator whatsoever that they are still in a call. This is a major issues as it is a privacy concern for the user.
It is reccomended that when closing the main window using the windows OS close button, the user should be prompted to leave the meeting.
**Finding 2: Error prevention and Visibility of system status** When Cadence tried to use the snapshot feature in a video call, the application GUI crashed. However, he was not kicked out of the meeting automatically, and I could still see and here him. Strangely, when he restarted the GUI, it did not show that he was in a meeting (I could still see him the the meeting). Then he called me while we were already in a meeting together (from my perspective). When I accepted his call, I was kicked out of my current meeting and added to the new one.
It is stongly reccomended that this issue is fixed ASAP. The GUI needs to be properly linked to the calls.
**Finding 3: Recognition rather than recall** Cadence was unable to find how to add a new contact. He was able to find a way to share a link to his profile. However In my GUI, I was very clear how to add a contact. The buttonw was displayed very prominently at the top of the contacts list. This seems to hint at an underlying issues that the GUI is not consistent across users. It is relevant to note that Cadence was using Linux and I windows.
There are two recommendation here. Firstly, the linux app should be changed so that it is easy. Secondly, consistency across operating systems should be made taken into account.
## 3 Acknowledgements
Group Members:
- Jet Hughes
- Cadence Ember
- Bradley Francis
## 4 Appendix
### 4.1 Combined
| Heuristic | Severity | Location | Issue | Recommendation |
|:-------------------------------------------------------------|:---------------------------|:----------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| visibility of system status | 3 | Call | The the close window button does not leave the meeting. It pops up the small view. If the user closes this window. The user still does not leave the meeting and there is not GUI | make closing the windows prompt the user if they want to leave the meeting |
| error prevention | 3 | Call | The application crahed when cadence tried to take a snapshot. Then I could still see him even though he didn't know he was still in the meeting | The snapshot feature should not cause a crash. And when the GUI closes, the user should leave the meeting |
| Recognition rather than recall | 3 | N/A | I do not know how to add somebody else as a contact. I found a way to share a link to my profile, but I dont know how to use a link that was shared with me. | There should be clear and obvious steps on how to add a contact. If the person has no contacts then the buttons should be displayed more prominently. |
| Visibility of system status | 3 | Call | After Skype restarted from the snapshot button crash, the interface seemed like I wasnt in a call: there was no call overlay, I couldnt see or hear the other person, and the buttons prompted to start a call rather than stop it. However, my partner could actually see and hear me the whole time, without me knowing! | The application should always tell you when you are in a call. |
| User control and freedom | 3 | Private conversation | Logging out and logging in again permanently deletes the entire private conversation on your side without warning. | It should remember the conversation, or if this isnt possible, it should warn you about the consequences before you log out. |
| Visibility of system status | 3 | Call | If a skype window is closed while in a audio or video call, you remain in the call, despite the app being closed. | Either have a warning that the app is closing but you will remain in the call, or have a warning that closing the app will terminate your connection to the call |
| Visibility of system status | 2 | Audio/video settings | It is not clear whether or not the microphone test is running | There should be a visible indicator showing that the microphon test is running |
| Visibility of system status | 2 | Screenshare | The only indicator that you are sharing your screen is the button changing from “start sharing” to “stop sharing”. It is easy to forget you are sharing, which could potentially cause huge embarrassment! | There should be a permanent indicator that is visible even while using other applications. |
| Help users recognise and recover from errors | 2 | Account creation | You cannot use a PNG image as a profile picture, only a JPEG image. | Allow PNG images too, or automatically convert them when the user tries to pick them. |
| Flexibility and efficiency of use | 2 | Audio/video settings | When adjusting your audio and videos settings the setting for your webcam is hidden | It should be moved up so the use doesn't have to scroll |
| recognition rather than recall | 2 | Call | After opening the sidebar during a call there is no indication of how to hide it | There should be a button to close the sidebar during a call |
| User control and freedom | 2 | Mini Viewer | When minimising Skype into a mini-player while on video call, the icon for screen-share is visible, and easily confused with the maximise button to return the screen to the normal viewer | Have the button for screen share clearer of its purpose, and have a resize option when in mini-player |
| Match between system and the real world | 2 | Contacts list | Contacts who have sent you a message are not displayed in the “chats” section until you send a message back. | Text chats should always be displayed in the text chats section. |
| consistency and standards | 2 | Call | When one participant enters together mode, it force all the participant into together mode. But the users must all individually leave together mode. | It should be made clear that this is how is works as this was unexpeted behaviour |
| Flexibility and efficiency of use | 2 | Call | To click the horizontal dot menu in the bottom left the user must mouse over the react button which opens a popup. This menu usually closes after the mouse is moved off but sometimes it stays | The react menu should be moved or the mouse over function should be fixed |
| User control and freedom | 2 | Call | My partner has the ability to use a custom background image, but I dont have this feature on my end. | Everybody should have the feature! I dont know why I dont have it. |
| Match between system and the real world | 2 | Private conversation | There is a feature to start a private conversation. Does this imply that conversations are usually not private? | The application should describe what a private conversation means, and explain whatever the downsides are that mean that it cant be the default option. |
| Aesthetic and minimalist design | 2 | Call | When switching applications, Skype opens a floating window to contain the call, which will overlap other applications. | This feature is helpful but there needs to be a way to permanently dismiss it so people can work while in a call. |
| Consistency and standards | 2 | N/A | Quitting and restarting the application caused me to be logged out. | Its a program that is installed on my computer, so it makes sense to keep me logged in. |
| recognition rather than recall | 2 | Call | not clear how to exit together mode | Have some indicator of |
| User control and freedom | 2 | Text chat | You cannot send a message that starts with a slash. | You should be able to send messages starting with a slash. |
| Recognition rather than recall | 2 | General | The toolbar that typically runs along the top of the screen is only available/viewable on the app after pressing alt, and making any action outside of the toolbar removes it again | Have an option to toggle toolbar on/off, and/or make it clearer that alt engages the toolbar |
| Help and documentation | 2 | General | To get help with Skype, the toolbar has to be toggled or settings must be opened and navigated through to find the help section | Have a more easily accessible help button, perhaps near the notifications/create group .etc |
| Visibility of system status | 2 | Chat | When removing a message, it is not made clear whether it will remove the message for everyone, or just yourself | Clarify that removing the message removes it for all participants |
| Flexibility and efficiency of use | 2 | Chat | To view bookmarked messages the user must navigate through their own profile to the bookmarks tab, where all bookmarks from all chats are kept, unsorted | Have an option to view bookmarked chats from certain groups, or have sorting criteria (date, group etc) |
| Aesthetic and minimalist design | 1 | Profile | When trying to click on your profile, if the status symbol is clicked a dropdown menu appears that gives you the ability to set your status (active, away, DnD etc), but this option is already included in the main dropdown from clicking onto your profile | Remove the separate function to help mis-click prevention |
| Match between system and the real world | 1 | DnD popup | When entering Do Not Disturb, a pop-up notifies you that you will not receive notifications while this is on. The popup has three options to exit it, OK, View Settings, and Dont ask me again | Improve the wording. Instead of Dont ask me again, have dont show me this again or something of the like |
| User coontrol and freedom | 1 | Mini floating window | There is no dedicated button to maximise the floating window | A dedicated button should be added to maximise the floating window |
| Match between system and the real world | 1 | New Group | When a new group is created, there are two options presented for adding people to the group. There is invite and add people as two separate options. One option is for adding people through a link, and one is for inviting contacts. However, the add people option also contains an option for adding via link. | Remove the invite option, as both are covered under add people. |
| Consistency and standards | 1 | General | Throughout the app, there are multiple different designs for the add members button. There are three different actions that can be taken to add members to a group, and they all have different icons | Generalise the icons so that they all follow the same design, that way they are recognisable throughout the application |
| user control and freedom | 1 | Audio and video settings| cadence cannot add a custom background | It should at least say why he cant |
| Flexibility and efficiency of use | 1 | Call | When a user is using multiple displays, even if the large skype window is visible the floating windows opens | The floating window should no open in this situation |
| Help and docmentation | 1 | Call | When in a call by yourself the record button is grayed out and not pressable. There is no indication as to why | On mousing ove the button it should say why it is grayed out |
| Aesthetic and minimalist design | 1 | Account creation | On one of the screens, the “continue” button must be clicked twice in order to continue. | The continue button should continue. |
| help and documentation | 1 | Chat | no information about what private mode is | more information should be iven to the user |
| Aesthetic and minimalist design | 1 | Top of the screen | Informational banners appear here and do not go away until they are interacted with. They do not display helpful information. Sometimes duplicates should appear. | The banners should go away when they are no longer relevant. |
| Match between system and the real world | 1 | Call | “Together mode” is poorly named and does not accurately indicate what it will do. | This feature could have a name like “background scene”, or tooltip text, or some other help mechanism. |
| Match between system and the real world | 1 | Polls | Somebody clicking or unclicking a poll option sends me a notification sound. These poll events contain little information on their own, so theres no reason for them to notify immediately. | Do not notify for people clicking polls. |
| Match between system and the real world | 1 | Contacts list | There is a feature to “send a contact”, though this offers to send a person their own contact card. | Do not offer to send people their own contact cards. |
| Consistency and standards | 1 | Call | The “view” button has an inconsistent appearance. It activates a dropdown but looks like a functional button. | Add an arrow indicator to the button so that it matches the rest of the applications conventions. |
| Consistency and standards | 1 | Polls | Its not obvious that a poll option highlighted in blue indicates that you should clicked that option. | Poll options should be represented as traditional checkboxes, rather than weird coloured rectangles. This also makes it clear that you can click again to undo your vote, which is already a feature. |
| Consistency and standards | 1 | Main menu | There is an option to “download the app”. I am already using the desktop application. | The text should state “phone app” to contrast it from desktop app. |
### 4.2 Single
#### 4.2.1 Bradley
![](https://i.imgur.com/bAw0htq.png)
#### 4.2.2 Jet
| Heuristic | Severity | Location | Description | Recommendation |
|:------------------------------------|:-----------------|:-----------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------|
| Visibility of system status | 2 | Audio/video settings | It is not clear whether or not the test is running | There should be a visible indicator showing that the microphon test is running |
| Flexibility and efficiency of use | 2 | Audio/video settings | When adjusting your audio and videos settings the setting for your webcam is hidden | It should be moved up so the use doesn't have to scroll |
| User coontrol and freedom | 1 | Mini floating window | There is no dedicated button to maximise the floating window | A dedicated button should be added to maximise the floating window |
| Flexibility and efficiency of use | 2 | Video call | To click the horizontal dot menu in the bottom left the user must mouse over the react button which opens a popup. This menu usually closes after the mouse is moved off but sometimes it stays | The react menu should be moved or the mouse over function should be fixed |
| Flexibility and efficiency of use | 1 | Video call | When a user is using multiple displays, even if the large skype window is visible the floating windows opens | The floating window should no open in this situation |
| Help and docmentation | 1 | Video call | When in a call by yourself the record button is grayed out and not pressable. There is no indication as to why | On mousing ove the button it should say why it is grayed out |
| recognition rather than recall | 2 | Video call | After opening the sidebar during a call there is no indication of how to hide it | There should be a button to close the sidebar during a call |
| recognition rather than recall | 2 | Video Call | not clear how to exit together mode | Have some indicator of |
| visibility of system status | 3 | Video Call | The the close window button does not leave the meeting. It pops up the small view. If the user closes this window. The user still does not leave the meeting and there is not GUI | make closing the windows prompt the user if they want to leave the meeting |
| error prevention | 3 | Video Call | The application crahed when cadence tried to take a snapshot. Then I could still see him even though he didn't know he was still in the meeting | when the GUI closes, the user should leave the meeting |
| consistency and standards | 2 | Video Call | When one participant enters together mode, it force all the participant into together mode. But the users must all individually leave together mode. | It should be made clear that this is how is works as this was unexpeted behaviour |
| user control and freedom | 1 | Video call | cadence cannot add a custom background | It should at least say why he cant |
| help and documentation | 1 | Video call | | |
| help and documentation | 1 | Chat | no information about what private mode is | more information should be iven to the user |
#### 4.2.3 Cadence
![](https://i.imgur.com/BX9c1ZV.png)
## 5 References
_What is Skype? | Skype Support_. (n.d.). Microsoft. Retrieved April 1, 2022, from https://support.skype.com/en/faq/fa6/what-is-skype

View File

@ -1,12 +0,0 @@
# Case study 3 Autonomous vehicles
- How safe is safe enough?
- its impossible to be perfect
- discalimer about driving assistant in teslas
-
Not driving youself massively reduces reaction time
Allow user to set ethical bias of their vehicles AI
![[Pasted image 20220310114053.png]]

View File

@ -1,86 +0,0 @@
---
aliases: IDE, IDEs, Integrated Development Environment, Integrated Development Environments
sr-due: 2022-04-28
sr-interval: 36
sr-ease: 300
---
#### Review Questions
1. How is a source code editor different from an IDE
---
#review
# Integrated Development Environments
## Source code editors
- editor applications to help software development
- provide features that help editing code
- auto indent, bracket matching, syntax hl, auto completion, rapid navigation
- run/test code
## Integrated dev env
- allow you to remain within one application when carrying out software development work
- can edit source files
- can compile source files
- can run debugger
- integrates version management
- some attach tools to running applications
### LSP - syntax highlighting
- allows IDE's to communicate with a "language enging"
- ides dont need
shift from syntac to semantics
e.g.,
- vs code chck file on opening
- lsp reports type mismatches
- rich editor functionality
- autocompletion with appropriate context
- information displayed on mouse hover
- jumping to definitions on mouse hover
- safe refactoring -> better than blind search and replace
- diagnosticso -> e.g., display results of unit tests within editor
### Navigation
- within files
- bracket matching
- block folding
- multi file
- multiple files at the same time
- rapidly jump between files
- search across all files
- collaboration e.g., live sharing
### Modern IDEs
- microsoft
- vscode -> free open source, highly popular
- visual studio -> integrates mobile and cloud development
- java enivronments
- eclipse - early leader in java, supports other languages
- netbeans -> also includes web dev tooling
- jetbrains -> IntelliJ IDEA, pycharm, phpstorm
- google's android studio -> official android IDE
- apple's Xcode -> free, macOS/iOS focus
## Early programming
- dedicated machines
- punched card programmer: separate machine from computer than reads cards
- punched cards recore code and or data in binary
- grid of positions, each representing a binary digit (bit)
- each position in punches out, or not
- analgogue electronic devices where you phsyicall wire things up
- gaining interest now for use in machine learning
### Bootstrapping
- already built tools can be used to builder better tools for building better tools etc.
- e.g., first assembler was made in maching code. But after that they could use the assember to make a better assembler
### Early dev environments
- command line based
- text based terminals
- command shell is the running application
- Can use terminal to drive interactive languages
- can edit, store software code
- can compile cose and run resulting executables
- it is still practical to do software development this way
- vim etc

View File

@ -1,13 +0,0 @@
# ohyay
| Heuristic | Severity | Location | Description | Recommendation |
|-|-|-|-|-|
| aesthetic and minimalist design | 1 | General | User interface is ugly | Should be made to look better |
| flexibility and efficieny of use | 2 | In a room | not clear to find where to sign out | Should add a button to sign out from within a room |
| visibility of system status | 1 | In a room | There is not indication about which rooms you should be using | Should be able to restrict users to only enter certain rooms |
| user control and freedom | 2 | In the cafe | There is no way to change, mute, or adjust he volume of the music | A button/group of button should be added for this |
| flexibility and effieciency of use | 1 | In a room | The buttons for mute, video, share screen etc which are usually (in most video call apps) in the bottom middle of the screen are instead spread out in the top corners | Move them to the bottom middle of the screen |
| recognition vs recall | 2 | In a room | The icon to show and hide the left side bar is not clear | This icon should be changed to be more recogniseable |
| aesthetic and minimalist design | 1 | In the cafe | When at a table in the cafe almost a quater of the screen i taken up by a button to go leave the table | Should be made smaller |
| flexibility and efficiency of use | 1 | Posting a Question | The checkbox to make a question anonymous is very small and the text is not clickable | The text should be made clickable or the checkbox should be made larger |
| recognition vs recall | 1 | In a room | The '+1' icon next to questions is not clearly clickable | Should be made to look more like a clickable button |
| error prevention | 3 | In a room | The pop out button below the step to mic button opens a windows which is completely broken ![](https://i.imgur.com/HIx9CIy.png)| Needs to be fixed or removed |

View File

@ -1,10 +0,0 @@
# Discord
| Heuristic | Severity | Location | Description | Recommendation |
|-|-|-|-|-|
| visibility of system status | 1 | In a server | Noise suppresion off icon does not make it clear that noise suppresion is off | Should be made more clear |
| flexibility and efficiency of use | 2 | In a server | Not clear where to join calls for new users | Should have a short tutorial which shows this the first time a user enters a server |
| recognition rather than recall | 1 | In a server | Unclear what the "01 25" icon next to the voice channel means ![](https://i.imgur.com/IRx8BkO.png)| should have description on mouse over |
| user control and freedom | 2 | Inbox | No option to close all mentions in inbox | Should add a button to close all mention in inbox |
| flexibility and efficiency of use | 1 | Chat | No bracket (or * _ ~ { ) matching | Should be added |
| user control and freedom | 1 | Chat | No way to customise slash commands | Should be added |
| help and documentation | 3 | Settings | No search bar | A search bar should be addeed |

View File

@ -1,69 +0,0 @@
---
sr-due: 2022-04-29
sr-interval: 26
sr-ease: 270
---
#review
# LO's
- undnerstand that testing is useful for detecting bugs
- contrast different types of testting
- descrive the principle of test driven development
- explain how unit tests ar developed
- indicate how languages integreate unit test support
- apppreiciate limitation of software testing
# Lecture 07 Unit Testing
### 0.1 [[Testing]]
1. why is testing needed
2. what are three types of testing
3. what are some limitations of testing
### 0.2 [[Test driven development]]
1. what is testing driven development
### 0.3 [[Unit testing]]
1. Breifly describe unit testing
2. What is a testing environment. Why is it useful

View File

@ -1,18 +0,0 @@
---
sr-due: 2022-04-09
sr-interval: 8
sr-ease: 250
---
#review
---
1. what is a bug
2. debuggers vs debugging
3. common approaches
4. debug symbols
5. debugger operations
6. breakpoint and watch points
7. why technical faults are not always your fault ![[Pasted image 20220329142230.png]]
# Lecture 8 debugging
[[Debugging]]

View File

@ -1,8 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 8
sr-ease: 250
---
#review
# Lecture 09 Documentation
[[Documentation]]

View File

@ -1,20 +0,0 @@
---
sr-due: 2022-04-11
sr-interval: 8
sr-ease: 250
---
#review
---
1. explain the term continuous integration
2. describe different purposes for CI
3. indicate how CI jobs are usually triggered
4. understand implications of CI running asynchronously
5. Exlplain how to manage output from CI jobs
6. describe role of stages and jobs within gitlab pipelines
7. indicate how CI specifications are stored
# Lecture 10
[[Continuous Integration]]

View File

@ -1,23 +0,0 @@
---
sr-due: 2022-04-13
sr-interval: 10
sr-ease: 250
---
#review
---
# Lecture 10 Prototyping and Design Heuristics
## 1 Wizard of OZ
[[Faking it Wizard of OZ]]
simulating machine behavior with human operators
## 2 Video prototyping
[[Faking it video prototyping]]
## 3 Creating and comparing alternatives
create multiple ideas in parallel rather than one after the other
![[Pasted image 20220330105813.png]]
![[Pasted image 20220330110050.png]]
## 4 Design heuristics

View File

@ -1,98 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 3
sr-ease: 250
---
#review
---
# Lecture 10 Heaps and heap sort
## 1 Overview
[[Heap]]
## 2 Operations
### 2.1 Add element
Assumptions
- access first vacant position
- set (or find) the value $H.q$ stored in any (occupied) position $q$
- access parent of any given position
- identify when we're at the root
(all in constant time)
Outcome: Change $H$ by adding x to it, while maintaining the heap conditions
```
p <- first vacancy, H.p <- x
while p is not the root and H.parent(p) < H.p do
swap H.parent(p) and H.p
p <- parent(p)
end while
```
### 2.2 Remove the maximum
Outcome: Change H by removing its maximum (i.e., root) value wile maintaining the heap conditions
```
v <- H.root
set H.root to be the value stored in the last occupied position
p <- root
while p has children
if the largest value, H.c of a child of p is greater than H.p then
swap H.c and H.p, p <-c
else
Break
end if
end while
return v
```
### 2.3 Complexity
In addition, we move along a branch from an added element up to the root, fixing violations as we go
In removal, we move from the root down through some branch until all violations are fixed (can only occur if node has children)
So both loops do most Ο(lg n)
### 2.4 Storage
![](https://i.imgur.com/04qVrGQ.png#invert)
- Array
- root at position 0 and children at 1 and 2
- children of 1 to in 3 and 4, children of 2 go in 5 and 6
- first vacant pos --> heap[n]
- value at pos q --> heap[q]
- get parent of q --> parent(q) = (q-1)/2
- get children of q --> (2 * q) ± 2
- identify if q is root --> q == 0
### 2.5 Implementation
Use java.util.PriorityQueue
## 3 Heap Sort
In place and ϴ(n lg n)
- start with array
- using itself as a heap, add the elements one at a time until all been added
- Then remove them one at a time - the largest elements gets removed first and the place where is needs to be put gets freed from the map
## 4 Heap vs Merge
heap --> in place, ϴ(n lg n)
merge --> not in place, Ο(n lg n)
Merge is preferred because
- MS can take advantage of partially sorted data (hence ϴ() vs Ο())
- MS memory accesses are good fast
- overwrites allow for optimizations that swaps do not
extra memory cost of merge sort is negligible
∴ Merge sort is faster

View File

@ -1,19 +0,0 @@
---
sr-due: 2022-04-10
sr-interval: 7
sr-ease: 250
---
#review
---
1. what is the concept of encapsulation and how is it enforced for objects
2. how does and object refernce differ from a relational foreign key
3. give an example of how difference UML diagram types can be linked when modelling a system
# Lecture 10 OOP concepts and UML
[[Objects]]
[[2 UML]]

View File

@ -1,149 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 3
sr-ease: 250
---
#review
# Revision questions
1. What is the purpose of stereotypes in UML?
2. What is multiplicity and how is it represented on associations between classes? Provide a drawn example which uses an association between two classes.
3. How are role names used for associations between classes and when should you use them?
4. Discuss the issues that arise around the use of composition in the context of “cart-like” entities.
5. Describe the relationship between role names and navigability in a class diagram.
6. Explain the difference bewteen a domain class diagram and a system class diagram.
---
# Lecture 11 Class Diagrams
e.g., ![](https://i.imgur.com/rFmUs5r.png)
![](https://i.imgur.com/1kO9BDk.png)
## 1 Stereotypes
add further meaning to fields and methods
- e.g., << unique >>, << abstrat >>, << interface >>,
## 2 Packages
group classes together
break system to logical chunks
package diagram, a class diagram with nothing but packages
![](https://i.imgur.com/UiXZeha.png)
## 3 Associations
UML anaglogue of ERD relationsips
- multiplicity
- realtionshpa nd role names
PlUS
- naviagability --> instances of one class can pass messages to instances of another
- several differnt types, e.g., composition, aggregation, associateive classes
### 3.1 multuplicity
![](https://i.imgur.com/1dSergW.png)
![](https://i.imgur.com/4TKsBKd.png)
ERDsd effectively only do zero one many
UML can to any non negative integer
default is 1
### 3.2 association names
![](https://i.imgur.com/btif86K.png)
- usuallya verb phrase like "assings", "manages", "enrols in" ...
- more useful is conpetual level diagrams
- optional arrow head ()
### 3.3 Role names
![](https://i.imgur.com/3HEG9yN.png)
At conceptual level, indicates role of class in association.
At implementation level:
- implies a field in class at opposite end
- should include visibility
- closely related to navigability
### 3.4 Navigability
![](https://i.imgur.com/beoNmcQ.png)
specifies whether we can "navigate from one end of an association to another"
affects how we code access paths between objects
e.g.,
- loan instance can see loanitem instances it contains via private field items
- a loanitem instance can't see loan instance that contains it
- must alwasy include relevant role names
- no arrows = two arrows = bidirectional
#### 3.4.1 why not always bidirectional
- more complex code --> many references/collections to manage
- navigation paths are not all equally important
- e.g., "what items are in this loan" vs "what loans does this item appear in"
- determined by requrements and typical usage
- some classes are more "central"
- usually at the "one" end of accociations
- often represent transactional entities e.g., loan, sale, order
- navigability readiates outwards from them
there are exceptions as always e.g., patron <-> item
### 3.5 Aggregation
![](https://i.imgur.com/FI21bfD.png)
one class is made up of one or more other classes
container and content instances _can_ exist separately
usually implied by multiplicity and navigability
e.g.,
- computer is made u of several components
- library catalogue is made up of many items
### 3.6 Composition
![](https://i.imgur.com/2ryJXSM.png)
stonger form of aggregation
container and content _cannot_ exist separately
usually implied by multiplicity and navigability
e.g.,
- building contains many rooms
- loan includes several items
- coicident lifetime
- multiplicity at least 1 at both ends
- deleting an containter must also delete all associated contents
- creating a container should also create some contents
### 3.7 Associative classes
![](https://i.imgur.com/Rq91xGx.png)
![](https://i.imgur.com/zzOlLV1.png)
- used for conceptual design
- similar to associative entities
- many to many relationship with additional independent fields
- resolved into class at implementation level
### 3.8 Specialisation generalisation
![](https://i.imgur.com/kfI2YSe.png)
class inheritance
- e.g., book and disc are subclasses of (specialise) Item
- inherit all public fields and methods of superclass
- can add their own fields and methods
- Compare with specialisation of actors and use cases
## 4 Domain class model\
![](https://i.imgur.com/JFHQOFA.png)
only modles the associations among concepts from problem domain
can be at conceptual level or implementation level
## 5 System class model
![](https://i.imgur.com/KsQuCd5.png)
Models associations among domain objects and system components; implementation level only

View File

@ -1,85 +0,0 @@
---
sr-due: 2022-04-07
sr-interval: 3
sr-ease: 250
---
#review
---
\
1. apprecitae that gitlab is a xomplex software
2. Understand where CI jobs scripts get run
3. explain why reposityory servers can host websites
4. Understandhow gitblab dternmimines awhen a CI script failed
5. Describe a way in which CI scrupts scan handle secrets
6. OUtline uses of local git hook scripts
# Lecture 11 Continuous Integration 2
Ci runs pipellines defined in .gitlab-ci.yaml asynchronously
ci usually tets abd buiolds your prokects
runs on a repo server
- usuially persistent, internet accessible
## 1 Gitlab overall architecture
![](https://i.imgur.com/whU7QoF.png) : not in exam
- many different services used
## 2 Gitlab runners
run CI scripts
- gitlab.com is a cloud computing service
- allows elf hosting which is what CS does
- altitude is a gitlab instance at CS
- servers to host runners that run CI scripts
- servers that host websites, e.g., cspages.otago.nz
- Gitlab can invoke runners that you host
- e.g., to use a particular GPU, or other hardware you have
- GItlab runner itself is a small program written in Go
### 2.1 Runner architecture
- runs jobs
- on isolated infrastructure
- ... to maintain secrity
- that is set up on demand
- ... handle load variation
- suits cloud computing
RHS shows GitLab.com's CI hosting
uses google cloud
![](https://i.imgur.com/02eqv7A.png)
![](https://i.imgur.com/RaeYc1I.png) : not in exam
## 3 How CI chagned website hosting
- need to share stifacts produced by CI jobs
- using the web to share artefacts is ideal
- so now most repo servers also host websites
- these are static websites: all content is fixed
- CI can run static website generators (SSGs)
- git repo contains source code of website
- CI pipelines transforms souce code into HTML fiels
- HTML files then hosted as a website by repo sever
e.g., https://cosc202.cspages.otago.ac.nz
## 4 Debugging CI scripts
- first ensure config files YAML is valid
- vuilt in gitlab editor checks YAML as you type
- commands runfrom shell that fail return an exit code
- most unix shells sotre exit code of previous commands in $
- So if variable $? (return code of prevous command) is non-zero, the previous command failed
- Git lab considers CI job as failed if any command fails
- your shell scripting can choose to hide this exit code
- e.g., `if command supposed to fail; then true; else true; fi`
- Complex scripting? Beste to put script in a file and run it from CI
## 5 Secrets used by CI scripts
![](https://i.imgur.com/XtCap0P.png)
![](https://i.imgur.com/W2xBi4d.png)

View File

@ -1,59 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 3
sr-ease: 250
---
#review
---
# Lecture 11 Design Heuristics 2
## 1 Show system status
- show system stats
- feedback depends on response time
- <1s just show outcome
- ~1s feedback that activity is underway
- >>1s show fractional progress time
- 0.1 seconds --> feels instantaneusly
- 1 second --> about the limit for flow to be uinteruippted
- 10 seeconds --> the limit for keeping users attention
when:
- when action is requried
- show storage space
- making changes
- next steps --> user input required
- completion --> some task has finished
![](https://i.imgur.com/QzHRh9Z.png)
## 2 familiar metaphors and language
![](https://i.imgur.com/sdNv98E.png)
![](https://i.imgur.com/IbIBK5t.png)
imitating familiar real life
Categories
- good
- ![](https://i.imgur.com/7wRRBii.png)
- bad
- ![](https://i.imgur.com/vDKOuOo.png)
## 3 user freedom and control
wan tt ogive th user the feelin thtey can freelyi explore the app
and the freeodm to control i it
- general flow
- undo/redo
e.g., ![](https://i.imgur.com/zF5LDVx.png)
e.g., ![](https://i.imgur.com/eqfs1D6.png)

View File

@ -1,139 +0,0 @@
---
sr-due: 2022-04-15
sr-interval: 9
sr-ease: 270
---
#review
---
# Lecture 12 Design Heuristics 3
## 1 Consistency and standards
![](https://i.imgur.com/H8rlxo7.png)
good and bad
- standards (user interface guidelines) are always chaning
differ between platforms
evolve over time
e.g., menus
![](https://i.imgur.com/IfaMADw.png)
![](https://i.imgur.com/HqYzadh.png)
general look of webpages evolves over time
### 1.1 Naming and teminology
![](https://i.imgur.com/3PwEOmn.png)
this is bad
you can ask users which categories they understand/know about
### 1.2 Data loss
![](https://i.imgur.com/23IxWiN.png)
standard to minimise loss
## 2 Error Prevention
### 2.1 Bad input
![](https://i.imgur.com/54tVH7B.png)
correct human errors
auto completion
### 2.2 helpful constraints
![](https://i.imgur.com/n4HT5L9.png)
### 2.3 Suggestions and autocorrection
![](https://i.imgur.com/c2l9MWy.png)
heavily abused by industry
- they can influence suggestions
### 2.4 Forgiving formatting
![](https://i.imgur.com/ldZUMer.png)
- reduce errors
-
## 3 recognition over recall
### 3.1 avoid codes
![](https://i.imgur.com/B8sJxd6.png)
### 3.2 Recognition with previews or icons
![](https://i.imgur.com/UBmJl6Y.png)
### 3.3 use icons that promote recognition
![](https://i.imgur.com/adjt5nv.png)
## 4 Flexibility and efficiency
### 4.1 Choices
![](https://i.imgur.com/lUBB7EN.png#invert)
![](https://i.imgur.com/1OaTaPg.png#invert)
![](https://i.imgur.com/8KaFDme.png#invert)
something with immediate effect can use switch
![](https://i.imgur.com/COR8E7w.png#invert)
![](https://i.imgur.com/EQbB1Ep.png#invert)
![](https://i.imgur.com/QhFssbP.png#invert)
![](https://i.imgur.com/PG2Iu9a.png#invert)
good defaults
![](https://i.imgur.com/pj5Ztij.png)
4.2 shortcuts and advanced options
![](https://i.imgur.com/0OG7qRx.png)
ambient information
![](https://i.imgur.com/s2zyIws.png)
proactivity
![](https://i.imgur.com/gmDLWMO.png)
![](https://i.imgur.com/Izu8bQX.png)
![](https://i.imgur.com/hiGeXW3.png)
## 5 aesthetic and minimalistic design
![](https://i.imgur.com/Oywxwgq.png)
![](https://i.imgur.com/xgfgEtm.png)
signal to noise
![](https://i.imgur.com/6bLaHS6.png)
![](https://i.imgur.com/qF21SST.png)

View File

@ -1,30 +0,0 @@
---
sr-due: 2022-05-04
sr-interval: 30
sr-ease: 250
---
#review
https://blackboard.otago.ac.nz/bbcswebdav/pid-2884153-dt-content-rid-18204846_1/courses/INFO201_S1DNIE_2022/lecture_06_slides.pdf
----
# Lecture 06 - Business functions and use cases
[[Approches to systems development]]
1. What are the two main approaches to systems development and how do they differ
[[Business functions]]
2. What are business functions
3. What is a use case
4. What is a use case diagram used for
[[Use case diagrams]]
- dependencies
- includes
- excludes
- requries
what is the difference between requries and indludes

View File

@ -1,19 +0,0 @@
---
aliases: BPMN
sr-due: 2022-04-25
sr-interval: 24
sr-ease: 250
---
#review
# 1 Lecture 07 Business process modelling
## 1 LO's
understand core onepts realted to business process mondelling
learn about commonly used business process modelling notations
understand the elemeents of a UML activity diagram
1. What is a business process
- [[Business process]]
- [[Business process model]]
- [[Business Process Model and Notation]]
- [[UML]]

View File

@ -1,48 +0,0 @@
---
sr-due: 2022-04-21
sr-interval: 20
sr-ease: 250
---
#review
---
# Lecture 7 Heuristic Evaluation
[[Heuristic Evaluation]]
## 1 Review Questions
2. Briefly describe the high level process of a heuristic evaluation
3. What are the four phases of a heuristic evaluations
4. Breifly describe the process of an individual during a heuristic evaluation
5. Name 3 of nielsens ten heuristics (VMUCERFA HH)

View File

@ -1,8 +0,0 @@
---
sr-due: 2022-04-07
sr-interval: 7
sr-ease: 250
---
#review
# Lecture 8 Business Patterns
[[Entity Relationship Diagrams]]

View File

@ -1,108 +0,0 @@
---
sr-due: 2022-04-06
sr-interval: 8
sr-ease: 270
---
# 1 #review
---
# Lecture 8 mergesort 2
recall definition of merge sort
- pre ⇒ split
- rec ⇒ sort pieces
- post ⇒ merge
## 1 Complexity
no counters
pre and post pahses are constant and ϴ(n)
so M(n) = ϴ(n) + 2 * M(n/2)
does this even help. what if n is odd
pretend ϴ(n) is $C \times n$
$$
\begin{align*}
M(n) &= C \times n+2 \times M(n/2) \\
&= C \times n+2 \times (C \times (n/2) + 2 \times M(n/4))\\
&= C \times (2n) + 4 \times M(n/4) \\
&= C \times (2n) + 4 \times (C \times (n/4)) + 2 \times M(n/8))\\
&= C \times (3n) + 8 \times M(n/8)\\ \\
&= C \times (kn) + 2^k \times M(n/2^k)
\end{align*}
$$
ends when we find base case
when we get to $n/2^k = 1$
we could split earlier.
the work done base case is (bounded by) some constatn D
so if $k$ is large enough that $n/2^k$ is a base case, we get
$$
M(n) = C \times (kn) + 2^k \times D
$$
how big is $k$
$k <=lg(n)$
so:
$$
M(n) ≤ C \times (n lg(n)) + D(n) = ϴ(n lg(n))
$$
which is true
> In a divide and consiwer algo wher pre and pst processign work are Ο(n) and the division is into parts of size at least n for some contatn c > 0 tge total time complexity is Ο(n lg n) and generally ϴ(n log n)
## 2 Variations of mergesort
unite and conquer
5 | 8 | 2 | 3 | 4 | 1 | 7 | 6
5 8 | 2 3 | 1 4 | 6 7
2 3 5 8 | 1 4 6 7
1 2 3 4 5 6 7 8
```java
public static void mergeSort(int[] a) {
int blockSize = 1;
while(blockSize < a.length) {
int lo = 0;
while (lo + blockSize < a.length) {
int hi = lo + 2*blockSize;
if (hi > a.length) hi = a.length;
merge(a, lo, lo + blockSize, hi);
lo = hi;
}
blockSize *=2;
}
}
```
outer loop is executed lg n times, where n is the length of a
inner loop proceeds until we find a block that "runs out of elements"
inner loop is having 2 x blocksize added each time, to runs most n/2 x blocksize
inside inner is call to merge which is ϴ(blocksize)
### 2.1 complexity from bottom up
$n$ is the numbe of elemetns in a
outer loop is executed
![[Pasted image 20220329114859.png#invert]]
### 2.2 improvments
some arrays have sections that are already sorted
you canm
### 2.3 timsort
used by python java rust etc

View File

@ -1,17 +0,0 @@
---
sr-due: 2022-04-05
sr-interval: 8
sr-ease: 250
---
#review
# Lecture 08 Personas and scenarios
[[Personas and Scenario]]
[[Storyboards mockups, prototypes]]

View File

@ -1,17 +0,0 @@
---
number headings: auto, first-level 2, max 6, 1.1
sr-due: 2022-04-10
sr-interval: 7
sr-ease: 250
---
#review
---
# Lecture 9 Data Modelling and Normalisation
[[Redundancy and Anomalies]]
[[Dependencies among attributes]]
[[Normalisation]]

View File

@ -1,32 +0,0 @@
---
sr-due: 2022-04-08
sr-interval: 7
sr-ease: 270
---
#review
___
# Lecture 9 Paper prototypes, Wizard of OZ, Video prototyping
[[Faking it video prototyping]]
[[Faking it Wizard of OZ]]
[[Storyboards mockups, paper prototypes]]
## 1 Paper prototypes
used for exploring design in early stage
- brainstorming
- e.g.,![[Pasted image 20220329102144.png]]
- refinement of design and communicating ideas
- e.g., ![[Pasted image 20220329102358.png]] ![[Pasted image 20220329102549.png]] ![[Pasted image 20220329102735.png]]
- evaluating interfaces
### 1.1 examples of prev 203 work
![[Pasted image 20220329102855.png]]
## 2 Digital prototypes
### 2.1 past 203
![[Pasted image 20220329104459.png]]
![[Pasted image 20220329104612.png]]
![[Pasted image 20220329104617.png]]

View File

@ -1,20 +0,0 @@
---
sr-due: 2022-04-14
sr-interval: 11
sr-ease: 250
---
#review
---
# Lecture 9 Stacks queues heaps
give a brief description of a heap?
what is the difference between and stack and a queue?
how is a priority queue different from regular queue?
[[Stacks and queues]]
[[Priority queue]]
[[Heap]]

View File

@ -1,91 +0,0 @@
---
sr-due: 2022-04-26
sr-interval: 23
sr-ease: 250
---
#review
# Divide and conquer
1. pre ⇒ break apartinto two or more smaller problems whose size add up to at most n
2. Rec ⇒ solve those problems recursively
3. post ⇒ combine solutions into a solution of the original problem
## 1 quicksort
pre ⇒ select pivot and split the array
rec ⇒ apply quicksort to the partitions
post ⇒ not much
designeds when sorting inplace was important
works best of primitive types as they can be stored in the fastest memory location
- memory access can be localised and the comparisions are direct
- those advantages are limited when sorting objects of reference type
- i that case each element of the array is just a reference to where the object really is
- so there are no local access advantages
# Mergesort
a variant of a divide and conquer sorting array
pre ⇒ split array into two pieces of nearly equal size,
rec ⇒ sort the pieces,
post ⇒ merge the pieces
## 2 Merge
take the two lowest values
place the lowest of the two in the next place in the sorted array
## 3 Implementation
given: a and b are sorted arrays. m in an array whose sixe is the sum fo their sizes
desired outcome: the elements of a and b have been copoed into m in sorted order
- maiain indices, ai, bi, and mi of the active location in a b and m
- if both ai and bi represent actual indices of a and b, find the one which points to the lesser value (break ties in favour of a) copy that vale into m at mi and increment mi and whichever of ai or bi was used for the copy.
- once one of ai and bi is out of range, copy the rest of the other array into the remainder of m
```java
public static int[] merge (int[] a int[] b){
int[] m = new int[a.length + b.length]
int ai = 0, bi = 0, mi = 0;
while(ai < a.length && bi < b.length) {
if(a[ai] <= b[bi]) m[mi++] = a[ai++];
else m[mi++] = b[bi++]
}
while (ai < a.length) m[mi++] = a[ai++];
while (bi < b.length) m[mi++] = a[bi++];
return m;
}
```
```java
public static void mergeSort(int[] a){
mergeSort(a, 0, a.length);
}
public static void mergeSort(int[] a, int lo, int hi){
if(hi - lo <= 1) return;
int mid = (hi + lo)/2;
mergeSort(a, lo, mid);
mergeSort(a, mid, hi);
merge(a, lo, mid, hi);
}
public static void merge(int[] a, int lo, int mid, int hi){
int[] t = new int [hi-lo];
//adjust code from 'merge' here so that the part of a from lo to mid, and the part of a from mid to hi are merged into t
System.arraycopy(t, 0, a, lo, hi-lo) //copy back into a
}
```
## 4 Complexity
n is the length of a plus the length of b
no obvious counter controlled loop
key ⇒ in each of the three loops mi in incremented by one.
∴ the total number of loop bodies executed is always n
since each loop has a constant amount of work
∴ so total cost is **ϴ(n)**

View File

@ -1,7 +0,0 @@
# Minimal Spending tree
Algorithm to connect up every part of the network to every other part of the network at minimal possible cost. Where the cost of connecting each pair is known.
#### data
hybrid version of priority queue
disjoint set

View File

@ -1,59 +0,0 @@
# Personas
THe goals of a personas is their expectation of an end condition
- not features, functions, taskss, activities
A tool to documnet who the users are.
- what are they trying to accomplish
- ![[Pasted image 20220323100944.png]]
a methodology to identofy and think about our users and how they use the software.
we want to avoid not thinking about the users
make sure memebers of development dont have different ideas of the users
### Goals
1. Experience goals
how they feel when using the product
e.g., ⇒ dell users want function but apple users want "that fancy apple product"
2. End goals
their motivaations for performing the task / intentded outcome
3. Life goals
Why they want to accomplish end goals /long term desires/self-image
### Behavioural variables
- activities ⇒ what the user does, frequency and volume
- attitudes ⇒ how the uers thinks about the product domian and knowledge
- aptitudes ⇒ what education and trainging the user has
- motivations
- why the user is engaged in the product domain
- skills
![[Pasted image 20220323102054.png]]
![[Pasted image 20220323102200.png]]
### Persona types
- Primary persona ⇒ **Only one per interface**
- secondary ⇒ mostly satisfied with interface for primary persona
- supplemental
- completely represent by a combination of
- e.g.,
- customer
- buys the product but does not necessarily use it
- served
- affected by the use of the product but does not use it (e.g., patient for a hospital software)
- negative
- person the product is not being made for
## Scenario
> concise, narrative description of one or more personas using a product to achieve one or more specific goals
have a good story to tell
![[Pasted image 20220323103237.png]]
![[Pasted image 20220323103420.png]]
![[Pasted image 20220323103428.png]]

View File

@ -1 +0,0 @@
give example of quantitative measure of ussability -> # of errors, time to complete a task, questionnaire with scales

View File

@ -1,62 +0,0 @@
---
sr-due: 2022-04-18
sr-interval: 27
sr-ease: 252
---
## Review Questions
1. what is a predictive swd methodology
1. one that is not flexible, rigid, not incremental, has well defined requirements and is planned in advance
2. low techincal risk
2. what is an adaptive swd methodology
1. not planned in advance, more flexible, incremental
2. high technical risk
3. what is meant by the waterfall and the modified water fall methodology
1. waterfall methodology is when there are a set of steps for the development life cycle and each one "flows" into the next with no returnig to previous steps
4. Within an adaptive methodology, what are:
1. iterations
- one cycle of the steps
1. incremental development
- when projects are completed in a series of interations
2. walking skeleton
- when development begins by creating a bare bones (similar to mvp) structure
___
tags: #review
# Predictive adaptive spectrum
## Predictive
- panned project in advance
- requirements well defined
- low technical risk
#### waterfall
- "water fall" -assumes phases are completed sequentially (no overlap or iteration)
![[Pasted image 20220308131314.png|500]]
- modified water fall - slightly less rigid verision of "waterfall" which allows some overlap
![[Pasted image 20220308131532.png|500]]
## Adaptive
- more flexible, changes as you go. cannot be planned in advance
- requirements uncertain
- high techinal risk
e.g.,
![[Pasted image 20220308132052.png|500]]
#### Iterations
"micro projects"
#### Incremental development
complete projects in small iterations
"growing" a system
#### Walking skeleton
complete structure is built with bare bones functionality
further functionality added iteratively
similar to minimum viable product (MVP)

View File

@ -1,8 +0,0 @@
# Priority queue
- A dynamic linear data type that supports addition and removal on entrie
- each entry hase a value and a priority (key)
- removal returns the item with the greatest priority
### 0.1 Implementation
1. stoes items and priorities in an array. Add at the end ϴ(1), remove by finding the maximum and exchaning with the end element ϴ(n)
2. stores items and their priorities in an array (or list) in sorted order. now removal is ϴ(1) bu addition in Ο(n)

View File

@ -1,36 +0,0 @@
# 1 Redundancy and Anomalies
### 0.1 Redundancy
when values are stored repetitively in database relations
- usually in poorly designed relations
- - potential for anomalous data to be stored
e.g., ![](https://i.imgur.com/8RdSNZt.png)
#### 0.1.1 How it arises
- ad hoc database
- flat file
- spreadsheet (no contraints)
- Poor database design
- poor analysis
- poorly designed ERDs (not thinkiing properly about the relationships)
- modifications to existing systems
- "bolting on" new attributes
- schema evolution over time
### 0.2 Anomalies
#### 0.2.1 Update anomaly
An anomaly that occurs follows an UPDATE operation
e.g.,
![](https://i.imgur.com/fBMd8W3.png)
#### 0.2.2 Delete anomaly
An anomly that occurs following a DELETE operation
e.g.,
![](https://i.imgur.com/fUGVR98.png)
![](https://i.imgur.com/yp6KdYg.png)
#### 0.2.3 Insert anomaly
An anomly that occurs following a INSERT operation
e.g.,
![](https://i.imgur.com/hM1VlGs.png)
![](https://i.imgur.com/SkdKTLP.png)
Causes the process of putting johnson in system is delayed

View File

@ -1,105 +0,0 @@
---
sr-due: 2022-04-15
sr-interval: 24
sr-ease: 274
---
#### Review questions
1. what is the purpose of requirements elicitation
2. how are models used in requirements elicitation
3. give a brief description of two of the the 6 main methods of requirement elicitation
___
#review
# Requirements elicitation
## Themes
busines opeations and processes -> _what do you do_
performance of operations -> _how do you do it, what steps do you follow, how could these steps change_
information need for performance of operations -> _what info do you use, what inputs do you use, what outputs do you produce_
Be careful to find a balance between review of the old system and discovery of new requirements
## Use of [[Models]]
- Models are the primary output of requirements phase
- learn more by modelling domain from new perspectives
- abstraction reduces complexxity
- need to document details
- to remember stuff
- for future maintenance/enhancement
- used to communicate with [[stakeholders]] and other devs
## Methods
- Review existing material
- get inital understanding
- use as guidelines for [[Interviews]] etc.
- be cautious of existing material
- e.g.,
- internal -> traning modules, job descriptions, forms, mission statement etc
- external -> trade publication, best practives, standards etc.
- ![[Pasted image 20220315132940.png]]
- [[Interviews]]
- e.g.,
- ![[Pasted image 20220315133134.png]]
- ![[Pasted image 20220315133326.png]]
- [[Observation]]
- beware observaion bias
- document using workflow diagrams
- not necessary to observe all processes at same level of detail
- e.g., Apprentice [[Needfinding#^4453ee]]
- [[Prototyping]]
- to test and evolve concepts
- to evaluate "look and feel"
- focus of accomplishing single objective
- built quickly using [[Integrated Development Environments|IDE]] (drag and drop features etc) and/or RAD frameworks
- [[Questionnaire]]
- Limited information can be gained
- Inital insight into business
- not suited for gathering detail information
- focus of closed-ended questions with simple direct answers
- e.g., ![[Pasted image 20220315134147.png]]
- Research existing vendor solutions
- take advantage of existing tools/software
- can avoid mistakes and save time and money
- help users generate new ideas about how to best perform business functions
- often cheaper and less risky to buy a solution than to build it
- risky to purchase this before requirements are known
- its best to wait until reqs are thoroughly investigated
## Validating requirements
- make sure gathred information is correct
- structured walk through
- effective way to implement quality control
- verify and validate sys reqs
- review finding from investigators
- review of models based on findings
- PM responsible for system quality
- schedule review after doc creation
- review conducted by experienced analyst and [[stakeholders]], presented by analyst
## Use in [[Agile Development]]
reqs should be decoupled
- as inpependent as possible
- id which reqs to inplement not to implement them
every iteratio includes a requirements collection and prioritisation activity
- important requirements are implemented next
- less important are held for later iterations or not at all
Scrum: product backlog
UP: inception and elaboration phases
XP: user stories
## Pain points
- users
- unable to articulate reqs
- ignorant of relevant tech
- reluctant to discuss reqs
- may contradict or disagree with other
- language terminology barriers between analyst and user
- often need multiple user sources to fully understand a req
- analyst lacks skills
- personality issues, e.g., analyst too assertive or abrasive

View File

@ -1,10 +0,0 @@
# Stacks and queues
Dynamic linear data types (interface)
- an abstraction of a collection of data organised "in a line" which supprts addition of new elements and the removal of (some) old elements
- e.g., stacks and queues
- the difference in the removal operation
- stacks ⇒ (pop) LIFO
- queues ⇒ (remove, offer, pull) FIFO
- representation
- array (preffered because of memory management)
- linked list (seems more natural)

View File

@ -1,51 +0,0 @@
# Storyboard mockups prototypes
Fidelity will increase over time.![[Pasted image 20220329090249.png]]
## Storyboarding
focus on the **task**
communicate flow
not about pretty pictures
use timelimits ≈10 mins
### shows
- settings
- people
- environment
- task
- sequence
- steps
- what leads a user to use the app
- what task
- satisfaction
- why do they use the app
- what do they accomplish
- what needs does the system fill
### Benefits
- holistic focus
- avoids commitment to an interface
- helps get stakeholders onthe same page
### Examples
![[Pasted image 20220329090341.png]]
## Paper prototyping
mockup of UI on computer
![[Pasted image 20220329090827.png]]
### tips
- store materials in one place
- work quickly
- complex parts of interfaces can be verbally roleplayed
- backgrounds can be used to contain protoypes and provide context
- you can mix and match hardware and software
- when appropraite include matching OS elements
- get users to add to the design
- get stakeholders incolved
## Digital mockups
![[Pasted image 20220329091417.png]]

View File

@ -1,50 +0,0 @@
# Storyboards mockups, prototypes
## 1 storyboards
mockup of user scenarios
problem with sketches
- hard to capture dynamics of interation over times=
- captures user interface not user behaviour
a good storyboard should tell a story
short and concise
low fidelity
not about pretty picures. ⇒ about communicating ideas
![[Pasted image 20220323104205.png]]
![[Pasted image 20220323104240.png]]
![[Pasted image 20220323104453.png]]
## 2 pros
+ holistic focus ⇒ helps emphasoze how an interface accopmlishes a task
+ avoid commitment to a particular UI
+ helps get all the stakeholders on the same page in terms of the goal
## 3 Tips
tell a story
![[Pasted image 20220323104649.png]]
- base it off the scenario
play with the angle/perspectives
![[Pasted image 20220323104748.png]]
![[Pasted image 20220323104900.png]]
simplify and develop vocabulary/you own style
![[Pasted image 20220323104937.png]]
using tracing and templates
![[Pasted image 20220323105040.png]]
- setting
- people
- environment
- task being done
- sequence
- what steps
- what leads someone to the app
- task task
- satisfaction
- what is the users motivation
- what does it enable people to accomplish
- what need does the system fill

View File

@ -1,25 +0,0 @@
---
sr-due: 2022-05-18
sr-interval: 50
sr-ease: 310
---
tags: #review
---
# Systems Analyst
## Role
- design transform modify evaluate systems
- find alternative solutions to problems
- off the shelf vs customised vs bespoke
- cost-benefit analysis
- translate natural language requirements into techical designs
- monitor implementation to ensure desired result is achieved
## Skills
- logical thinking and problem solving
- good understanding of coding, databases, networks etc
- good understanding of business
![[Pasted image 20220301172014.png]]

View File

@ -1,79 +0,0 @@
---
sr-due: 2022-04-13
sr-interval: 28
sr-ease: 270
aliases: SDLC
---
tags: #review
#### Review Questions
1. How can business process re-engineering be used in the analysis phase and what benefits can it provide?
bpr can be used in the analysis phase to simplify the processes relevant to the project. The benefits it provides include: SImpler requirements, better understanding of domain
---
![[Pasted image 20220301172155.png]]
# SDLC
Provides overall framework for managing the systems
There are many methodologies to help guide us through this cycle
Each methodology sits on the [[Predictive adaptive spectrum]]
A very common methodology at the moment is [[Agile Development]]
## Phases
### Analysis
^2d7976
- Lots of communication with [[Stakeholders]]
- Gather detailed information
- define system requirements
- prioritise requirements (what is risky, what brings value to business) -> increase proability of success
- develop UI dialogs ([[Prototyping]] where the user can interact with the system)
- evaluate requirments
- review reccomendations with management
## Business process re-engineering
method of organising company
- streamline processes to be efficient and efffective
- question basic assumptions
use ICT to help with BPR
sys analyst may find opportunites to improve processes
- any project can include components of BPR
simpler business processes -> simpler requirements -> simpler system
## Requirements
- [[Requirements]]
- [[Requirements elicitation]]
- Something the system should do
- Some constraint the system should have
- Can be functional or non functional
- Good requirements prevent failure
## SDLC Variations
- different terminology
- change focus on people
- change speed of development
- [[Prototyping]]
- Rapid application development (RAD)
## Failure
main goal: Avoid project failure
- complete fail implies nothing delivered
- Types of fail
- cost overruns
- sw quality issues
- missed deadlines
- unhappy [[stakeholders]]
Suprisingly very common with large projects
reasons for fail:
![[Pasted image 20220301172507.png|300]]
![[Pasted image 20220310160839.png|300]]
**coding rarely causes problems**
![[Pasted image 20220310161009.png|300]]

View File

@ -1,6 +0,0 @@
# Test driven development
tests are developed before the code
are a spec of what the code should do
first they fail ⇒ as you develop, they pass
+ quantifiable progress of code
> tests are not always bug free

View File

@ -1,72 +0,0 @@
---
sr-due: 2022-04-11
sr-interval: 20
sr-ease: 250
---
tags: #review
resources: https://www.sciencedirect.com/topics/computer-science/unified-process
https://doi.org/10.1016/B978-0-12-805476-5.00002-2
#### Review questions
1. give a brief description of UP
UP is an iterative and incremental develoopment process
2. Give a brief description of each of the four phases of UP
1. inception
2. elaboration
3. constuction
4. transition
-------------------------------------------------------
# Unified process (UP)
oop development
uses UML for modelling
four phase life cycle
- inception
- elaboration
- construction
- transition
![[Pasted image 20220308132944.png]]
![[Pasted image 20220308133325.png]]
![[Pasted image 20220322172120.png]]
##### best practices
- develop iteratively
- define and mange system requirements
- effectively managing changes in requirements
- use component architectures
- create visual models (UML)
- verify quality
- Control changes
##### Values and principles
Values:
- **individuals and interactions** over processes and tools
- **working software** over comprehensive documentation
- **customer collaboration** over contract negotiation
- **responding to change** over following a plan
Twelve modelling principles:
> Build only necessary models that are useful and at the right level of detail
- Software is your primary goal — dont get distracted by
documentation or models.
- The next effort is your secondary goal — be aware of next
step versions or revisions.
- Minimise modelling — only build what helps move the project
forward.
- Embrace change, change incrementally — take small steps
that keep you on track and that can be reversed if necessary.
- Model with a purpose — to understand and communicate.
- Build multiple models — look at problems from different
perspectives.
- Build high-quality models and get feedback — from [[stakeholders]], other developers.
- Focus on content, not representation — always focus on stakeholder needs; informal hand-drawn models are often fine.
- Communicate and learn from each other.
- Know your models and how to use them.
- Adapt to specific project needs.
- Maximise stakeholder ROI.
![[Pasted image 20220308132628.png]]

View File

@ -1,168 +0,0 @@
---
sr-due: 2022-04-17
sr-interval: 30
sr-ease: 270
---
tags: #review
---
# 1 Union Find/Disjoint set
## 1 Example
- We have 12 'objects'
- *Some* pairs have been connected
- Nodes with a sequence of edges between them form a group
- e.g., 0 5, 2, 1 4 6 9, 3 8 10 11, 7
![](https://i.imgur.com/9iRxZoh.png)
- Groups with no connecting edges are *disjoint* sets
## 2 Requirements
- Make(n) - make a set of n vertices with no edges between them
- Union(x, y) - connect x and y by an edge (merge their two groups)
- y becomes the representative node for the whole group
- e,g,. Union(2, 1)
- now : 0 5 2 1 4 6 9 3 8 10 11 7
- the representative node of the new group is 1
- the number of groups is always : n - number of union operations between elements of different groups
- Find(x) Find and return a representative of the group the x belongs to.
- If x and y are in the same group then Find(x) == Find(y)
-
## 3 Implementation
### 3.1 UF 1
```java
int[] reps;
public void make(int n){
reps = new int[n];
for(int = 0; i < n; i++) reps[i] = i;
}
public int find(int x){
return reps[x];
}
public void union(int x, int y){
rx = reps[x]
ry = reps[y]
for i = 0 to n-1
if reps[i] = rx then
reps[i] = ry
end if
end for
}
``````
Operation | Cost | reason
-------------|------| --
make | $\Theta(n)$ | filling n place of an array
find(x) | $\Theta(1)$ | find value in array is constant
union(x, y) | $\Theta(n)$ | When x and y's rep are different, the whole array must be examined
Total possible number of union calls where x and y's rep are different is n-1
So the Total possible cost of all union calls is $\theta(n^2)$
### 3.2 UF 2
``` java
int[] reps;
public void make(int n){
reps = new int[n];
for(int = 0; i < n; i++) reps[i] = i;
}
public int find(int x){
if(reps[x]==x) return x;
return find(reps[x]);
}
public void union(int x, int y){
reps[find(x)] = find(y);
}
```
Operation | Cost | reason
-------------|------| --
make | $\Theta(n)$ | filling n place of an array
find(x) | $\Theta(n)$ | need to look through chain nodes for representative
union(x, y) | $\Theta(n)$ | bounded by two calls to find
Total possible number of union calls where x and y's rep are different is n-1
So the Total possible cost of all union calls is $\theta(n^2)$
### 3.3 UF 3
For each rep, let its rank be the length of the longest chain of local reps that reaches it
When union(x,y) make the rep with the larger rank the rep of the other
If equal ranks -> make the second the rep of the first
``` java
int[] reps;
int[] rank;
public void make(int n){
reps = new int[n];
rank = new int[n];
for(int = 0; i < n; i++) reps[i] = i;
}
public int find(int x){
if(reps[x]==x) return x;
return find(reps[x]);
}
public void union(int x, int y){
rootUnion(find(x), find(y))
}
//x and y are known to be representatives
private void rootUnion(x, y){
if(rank[x] > rank[y]){
reps[y] = x;
} else if (rank[y] > rank[x]){
reps[x] = y;
} else { //rank[x] == rank[y]
reps[x] = y;
rank[y] ++;
}
}
```
Operation | Cost | reason
------------|------| --
make | $\Theta(n)$ | filling n place of an array
find(x) | $\Theta(lg\ n)$ | rank is bounded by $lg\ n$
union(x, y) | $\Theta(lg\ n)$ | bounded by two calls to find
Total possible number of union calls where x and y's rep are different is n-1
So the Total possible cost of all union calls is $\theta(n^2)$
trade off means this requires an extra $\theta(n)$ space
#### 3.3.1 Min size of set of rank k
for k = 0 -> size must be at least 1
for k = 1 -> size must be at least 2
for larger k -> the set must have been formed by the union of two sets of rank k-1. So its size must be at least twice the min size of a set of rank k-1
--> min size of set of rank k is $2^k$
#theorem
>a set of rank k must contain at least $2^k$ elements
$\therefore$ The maximum rank of an element is $\log_2(n)$ -> $lg(n)$
since the time for $Find$ is big-$\theta$ of the rank of the representative found we get $O(lg n)$ bounds for both find and union
^we used $O$ not $\theta$ because we dont know that the worst case will always occur.
If could happen that the sequence of Union operations does not create a rank that is as big as i could be
^this is an example of a semi-formal proof by [[Induction]]
### 3.4 UF 4
Change find so it implements [[path compression]] to "flatten" the chains
```java
if (x != reps[x]) {
reps[x] = find(reps[x]);
}
return reps[x];
```

View File

@ -1,77 +0,0 @@
# Unit testing
- divide code into units ⇒ test those units
- consider appropriate scale
- depends on type of code project as well as language
- object oriented: classes? methods?
- procedural: functions? modules?
- test each unit independently
- frequently
- often after each commit/push
- can run tests if parallel
- may need to build environment in which tests run
### 0.1 supports useful principles
can support complementary work by team members
early discovery of problems
can help with documentation and specification
- unit tests can be a form of executable specification
- helps team members understand requirements
### 0.2 Test environment
consider code that interacts with a database
- you cant let that code write to a real database
- but you want to check that writes were performed
common solution is to create a fake database
- class that mocs database operations
- can also test error handling by returning error codes
mock up the database with a pretend model that returns fixed results to query
- be careful not to mock up data base incorrectly
can be a pre-recorded interaction
### 0.3 Test life cycle
- set up test environment
- run test code
- check results
- aggregate results into test summary
simple test: run method ⇒ check value
tests may chack that code fails appropriately
- crash when expected
- exceptions are generated
### 0.4 Language support
language may have bilt in testing support
- e.g., Go and Rust have command line tools to run tests
External tools can often work well too
- e.g., java code annotations can mark tests
- java ignores most annotations, but testing tools (JUnit) can use them
- annotations are symbols that begin with @ in source code
we want to distinguish between tests and normal code
- also should support for sqapping in/out mocking code
### 0.5 JUnit
test classes have a particular filename pattern
annotate test methods with @Test
other annotations
- @BeforeAll and @BeforeEach (and after)
- @RepeatedTest
JUnit 5 also supports dynamically generated tests
### 0.6 TestNG
based off JUnit and fixes some it it's problems
- provides control over threading
- run tests in parallel
- also tests for parallelism bugs
- multithreaded code i hard to debug
- data driven testing
- also
- integration testing
- end to end testing

View File

@ -1,101 +0,0 @@
# Use case diagrams
- specifies the participants (actors) and the relationships between them
- high level view of what a system does (not how) and who uses it
- represent users perspective of a system
- used mainly in requirements specification and early system dev
- effectively a todo list
## 1 pros
+ informal,flexible, easy to construct
+ easily understood
+ improve communication between users and developers
+ can be used to confirm requirements
+ provide overview
+ link analysis to design
+ can be used to inform subsequent dev tasks
+ derive test cases
+ prioritise imlementation tasks
+ help clarify new feature requests or bug reports
## 2 Notation
### 2.1 Actor
- roles that people have when interacting with the system
- external systems or hardware that are essential to system operation
![[Pasted image 20220320224458.png]]
### 2.2 Use case
- discrete unit of system functionality
- activity from perpective of an actor
- can be abstract or focused
- say nothing about flow or behaviour
- map to ⇒ menu items, forms, reports, etc
![[Pasted image 20220320224329.png]]
### 2.3 Association
- relationship (interaction) between actor and use casel
- actor can be associated with more than one use case
- use case can be associated with more than one actor
- ![[Pasted image 20220320224618.png]]
### 2.4 Specialisation/generalisation
- actors and use cases can be orgainsed into special/general hierachies
- acotrs can be specialisations of another actor
- same for use cases
- mutually exclusive
- similar to inheritance
![[Pasted image 20220320224736.png]]
### 2.5 Dependency
- occur between use cases
- one case extends the behaviour of another
- one case includes the behabiour of another
- one case requires the behaviour of another
- read in direction of arrow
- indicate opportunities for reuse of functionality
![[Pasted image 20220320224908.png]]
#### 2.5.1 Extends dependency
- use cases can have optional, subordinate tasks
- useful with specialised actors
![[Pasted image 20220320225018.png]]
#### 2.5.2 Includes dependency
- use cases that have mandatory, subordinate tasks
- does not indicate sequence, only that they must happen
![[Pasted image 20220320225129.png]]
#### 2.5.3 Requires dependency
- mandatory, _independent_ tasks, that must be completed first
- forces sequence
- use sparingly
![[Pasted image 20220320225301.png]]
## 3 development of use case diagrams
organise related use case diagrms itno use case model
- have have multiple levels of detail
- group related diagrams into packages
### 3.1 example methods
- user goal technique ⇒ simple
- event decompositition technique ⇒ more comprehensive
### 3.2 top down
identify actors ⇒ identify use cases ⇒ detail use cases
- who will enter and/or recience information
- what other systems will interact with the system
- prioritise use cases
- further develop use case, starting with highest priority
- structure overall use case model
> **avoid specifying the sequence**
### 3.3 bottom up
create scenario ⇒ generalise scenario ⇒ organise use case model
## 4 Examples
![[Pasted image 20220320225922.png|300]]
![[Pasted image 20220320225932.png|300]]
![[Pasted image 20220320230001.png|300]]
![[Pasted image 20220320230009.png|300]]

View File

@ -1,16 +0,0 @@
---
sr-due: 2022-05-01
sr-interval: 37
sr-ease: 290
---
tags: #review
---
# User experience
> "encompasses all aspects of the end users interaction with the company, its services, and its products" - Jakob Nielsen and Don Normann
Marketing, branding, etc.
![[Pasted image 20220302103456.png|1/2]]

View File

@ -1,93 +0,0 @@
---
sr-due: 2022-04-30
sr-interval: 39
sr-ease: 270
---
#### 0.1.1 Review questions
1. what are the main goals of VCSs
2. describe the three types of version control system
3. what is forking. Why is it useful
---
tags: #review
resources: https://www.youtube.com/watch?v=Yc8sCSeMhi4
# VCSs
VCSs (version control systems) Are systems to keep track of changes to a set of files
E.g., [[Git]]
## 1 Goals
- allow collaboration
- track changes
- restoring previous versions
- finding out origins of issues
- backups
- not restrict workflow
## 2 Terms
[[Git Cheat Sheet]]
## 3 Discipline
- Pull/Push Regularly
- Use topic/features branches to keep main clean
- Dont use -f
## 4 Types
### 4.1 Centralised VCS
- Data is stored in one single central location
- Access is remote
- Checkout can block other devs
```mermaid
graph TD
subgraph Centralised Repo
Boris-. commit .->R((Repository))-- checkout -->Boris
R-- checkout -->Doris-. commmit .->R
R-- checkout -->Dennis-. commmit .->R
end
```
### 4.2 Distributed VCS
![](https://i.imgur.com/IVXAaFF.png)
- Data is stored on every access point
- Good
- more robust -> each dev has a backup
- Don't need internet
- Bad
- Hard to keep track of "main" files
### 4.3 Distributed + Centralised
- Main files are stored on central repo
- Each user also has their own copy locally
![](https://i.imgur.com/BxC8Tiq.png)
## 5 Sensitive information
- Passwords and other credentials among other things
- Data should be stored as encrypted blobs
- [BlackBox](https://github.com/StackExchange/blackbox)
## 6 Forking
- Cloning into a new remote repo in your account
- Allows community to contribute to projects without giving them write access to the original repo
- Process
- Create a fork of a project
- Make Changes
- Pull request to merge fork back into project
- Admins of project can acccept modify or reject pull request
## 7 software dev needs file wrangling
many copies of a project's source code files needed:
- facilitating different developers private code experiments
- working on fixing bugs in code
- developing new features
- reviewing code changes
- managing releases of sofware products
- using [[Git]]

View File

@ -1,43 +0,0 @@
Jet Hughes 9474308
## 1.1 Blackboard
![[Pasted image 20220317125811.png|300]]
The first example of bad usability is in blackboard. Blackboard is a "web based virtual learning environment and learning management system". The issue occurs with the menu in the top right (shown below) when the window in which the user is viewing the page is smaller (either on a mobile device or a shrunk down desktop Browser).
![[Pasted image 20220310211739.png|300]]
The issue is that the menu gets hidden behind the main page when the window is smaller (shown below)
This means that when the user is using black board in a small browser window, they are unable to navigate between their courses in the intended way. This is an example of bad usability because it prevents the user from being able to use the product for its intended purpose. It is not effective, efficient nor satisfactory.
## 1.2 Sky go
![[Pasted image 20220310212758.png|150]]
The second example is an issue with the web application sky go. Sky go is a television streaming service. It allows users to watch on demand or live Sky TV with just an internet connection. There is a usability issue with the sign in screen on desktop browsers, which may also affect mobile and other platforms. In particular, with the error messages. On some plans, users are only allowed to use the account on one device at a time. When logging in, if another user is already signed in on another device, the login will fail. In such an event, the error message displayed alerts the user that their username or password are incorrect, not that another user is logged in.
This is an example of bad usability due to uninformative error messages. In this example, the user does not know the reason why there are unable to login. In my case, it led to me resetting the password multiple times before I realized what the actual error was.
## 1.3 Udisc
![[Pasted image 20220317145732.png|150]]
My third example is of the Mobile App Udisc. Udisc is a disc golf scoring app. The problem with this app occurs when in the "select players" phase of creating a new round scorecard. The user can choose to add existing players, or they can create a new player using the icon in the top right of the page. The issue is that after adding a new player and returning to the select players screen, the new player is not visible. To make the new player visible, the user somehow reload the page, without a reload button. One way is to switch from the 'frequent' tab to the 'recent' or the 'all' tab. This will reload the page and the added player will appear in all tabs.
It was hard to show this with just screenshots, so I recorded a GIF and uploaded to Imgur [https://i.imgur.com/VuXshdZ.gif](https://i.imgur.com/VuXshdZ.gif)
## 1.4 Epomaker
![[Pasted image 20220315113752.png|300]]
My final example of bad usability is the Epomaker website. This is a mechanical keyboard ecommerce site. On loading the create an account page, a cookies pop obscured behind the floating 'rewards' button appears. The final line of the message and the bottom left portion of the pop-up is not visible. When I saw this, I thought there might be an option to configure my cookie settings hidden behind the floating button. I didn't want to allow the site to use cookie's that weren't strictly necessary. So I just ignored the pop-up and finished creating my account while the pop-up was obscuring the bottom left of the page. This is bad usability because the pop blocked me from being able to create an account as easily as I could have.
## 1.5 NZ Herald
Finally I have an example of a web app that is usable, but has a bad user experience. This app is NZ Herald. Upon loading the page, the user is faced with a screen that is at least 75% advertisements. The app still has good usability as the user can easily scroll down which hides most of the ads, so there are only the strips on the sides. However, the initial loading page is crammed full of advertisements. This bombardment of ads makes the site appear unprofessional, and untrustworthy, despite the "website of the year" stub. This degradation of trust contributes to a bad user experience, despite the overall usability.
On entry:
![[Pasted image 20220318141434.png|300]]
![[Pasted image 20220318141839.png|300]]
After scrolling down
![[Pasted image 20220318144803.png|300]]

View File

@ -1,152 +0,0 @@
---
aliases: Proof by induction, induction
sr-due: 2022-05-02
sr-interval: 29
sr-ease: 250
---
#review
## 1 Review Questions
Do one practice problem
### 1.1 MaxNum
```
maxNum = -1
for num in numbers
if num < maxNum then
maxNum = num;
end
end
```
parameter n is length of the array of number
we will prove that, for every non-negative integer n, the maximum time to find the max num is Ο(n)
for n = 1 this is true because the maximum number is always the first number we check
for n =2 this is true because the maximum number is always on of the first two numbers we check
for any n >0, assuming this is true for all n-1, this is true at n because the maximum amount of number to check is never greater than n
∴ by induction, the time comnplexity is Ο(n)
___
# Analysis of recursion algorithms
- induction and recursion are linked
- inductive approach is esential for understanding time-complexity of resursive algorithms
## 2 Proof by induction
[[Induction]]
Find a (positive integer) _parameter_ that gets smaller in all recursive calls
Prove inductively that "for all values of the parameter, the result computed is correct"
To do that:
- check correctness is all non-recursive cases
- check correctness in recursive cases assuming correcness in the recursive calls
## 3 Examples
### 3.1 Quicksort
[[divide and conquer]] algorithm
sorts a range in an array (a group of elements between some lower index, $lo$ inclusive and some upper index $hi$ exclusive) as follows:
- If length of range $(hi - lo)$ is at most 1 -> do nothing
- otherwise, choose a pivot p (e.g., the element at $lo$) and:
- place all items less that p in positions $lo$ to $lo +r$
- place all items >= p in positions $lo +r+1$ to $hi$
- place p in position $lo+r$
- call quicksort on the ranges $lo$ to $lo + r$ and $lo+r+1$ to $hi$
#### 3.1.1 Proof
parameter is $hi - lo$
the parameter gets smaller in all recusive call because we always remove the element $p$ so, even if it is the smallest or largest element of the range ,,the recursive call has a range of size at most $hi - lo - 1$
the non-recursive case is correct because if we have 1 or fewer elements in a range they are already sorted
in the recirsive case, since all the elements before $p$ are smaller than it and we assume they get sorted correctly be quicksort, and the same happens for the elements larger than p, we will get a correctly sorted array
### 3.2 Fibonacci 1
```python
def fib(n)
if n <= 1
return 1
return fib(n-1) + fib(n-2)
```
line 1 -> always executed
line 2 -> executed if n<=1
line 4 -> executed if n>1, cost equal to cost of callling fib(n-1), fib(n-2), and some constant cost for the addition and return
#### 3.2.1 Cost bounds/Proof
if we let T(n) denote the time required for evaluating fib(n) using this algorithm this analysis gives:
>## $T(0) = T(1) = C$
>## $T(n) = D + T(n-1) + T(n-2)$
where c and d are some positive (non-zero) constants.
- this shows that T(n) grows at least as quick as fib(n)
- even if $D=0$ we'd get $T(n) = C \times fib(n)$
- growth rates are the same $\therefore$ exponential (at least $1.6^n$) and far too slow
> A recurive algorithm that makes two or more recurive calls with parameter values close to the original will generally have exponential time complexity
### 3.3 Fibonacci 2
```python
def fibPair()
if n == 1
return 1, 1
a,b = fibpair(n-1)
return b, a+b
```
line 1 -> always executed some constant cost
line 2-> executed if n=1, some constant cost
line 4-> executed if n>1, cost equal to cost of calling fibPair(n-1)
line 5 -> executed if n>1, some constant cost
#### 3.3.1 Proof
it's true for $n-1 by design$
If it's true at n-1 then the result of computing fibpair(n) is:
$(f_{n-1}, f_{n-1} + f_{n-1}) = (f_{n-1}, f_n)$
which is what we want
#### 3.3.2 Cost bounds
if we let P(n) denote the time required for evaluating fib(n) using this algorithm this analysis gives:
$P(1) = C$
$P(n) = P(n-1) + D\ for\ n>1$
where $C$ and $D$ are some positive (non-zero) constants.
Claim: $P(n) = C + D(n-1)$
By induction:
it's true for n = 1 since,
$P(1) = C$
$C+D\times(1-1)=C$
suppose that it's true for n-1. Then it's true for n as well because
$P(n) = P(n-1) + D$
$\ \ \ \ \ \ \ \ \ = C+D\times(n-2)+D$
$\ \ \ \ \ \ \ \ \ = C+D\times(n-1)$
$\therefore$ By induction it's true for all $n>=1$
$P(n)$ is the time for evaluating $fibPair(n)$ using this algorithm. This analysis gives:
$P(1) = C$
$P(n) = P(n-1) +D$
where C and D are some positive constants
#theorem
> ## $P(n) = C+D\times(n-1)$
> in particular, $P(n) = \theta(n)$
> A recursive algorithm that make one recurive call with a smaller value and a constant amount of additional work will have at most linear time complexity

View File

@ -1,111 +0,0 @@
# COSC201 Assignment 1: Counting the seas
## 1 Due : 11:59 p.m. Friday, April 1, 2022
[[9474308Hughes]]
## 2 Introduction
Imagine a square world consisting of cells each of which is either land or water. A
computational cartographers paradise if you will. Anyhow, it turns out that a number
of such worlds exist of varying sizes and varying proportions of land to water. Your
continuing mission has been to search out these strange worlds and count how many
distinct bodies of water there are on each of them.
Heres a world that you discovered recently its dimensions are 8 × 8 and it has only
14 land cells.
![[Pasted image 20220314221111.png]]
Obviously, in this world there is only one giant sea. On the other hand, another world
with a 10 × 10 grid was also recently discovered:
![[Pasted image 20220314221121.png]]
This world is dominated by land, and there are 10 seas. You may disagree, and think
there are 15 seas, but water cells are considered to be part of the same sea if they meet
along an edge **or** at a corner.
Exploration is a complicated and expensive business and the thoughts of your superiors
have turned to simulation that is, to creating imaginary worlds of this type in order
to try and understand how the number of seas changes depending on the size of the
underlying grid and the ratio of water to land.
### 2.1 Raw materials
You will be provided with a number of Java classes. These include:
- All the union-find implementations weve looked at.
- A classMap.javathat represents maps of the type were interested in. This class includes a number of convenience methods for various tasks. For instance:
- indexing the cells of a map from 0 in the top left corner and then increasing from left to right and top to bottom (so, in the 10 × 10 grid the first row contains cells 0 to 9, the second 10 to 19, the third 20 to 29, and so on);
- recognising the type of each cell (by index or coordinates);
- identifying all the neighbours of a given cell (by index).
Using these classes, you are asked to produce some more code and to conduct and
report on some experiments.
### 2.2 Code submission (5 points)
The code you submit for this assignment will be a single class calledMapAnalyser.
Skeleton code for that class will be provided and its Javadoc will specify the require-
ments in detail. However, these and the required underlying algorithms are also dis-
cussed briefly below.
MapAnalyser(Map m)
The constructor for aMapAnalyserrequires aMapinstance. All of its methods refer to
this underlyingMap.
countSeas()
This method returns an integer which is the total number of seas of the underlyingMap.
To compute this number you must be able to identify the seas, i.e., which water cells
belong to the same seas. This is exactly the kind of task that the union-find framework
is designed for.
Specifically, given a map you can initialise aUnionFindinstance whose size is the
total number of cells in the map. Then, you can iterate once over the cells of the map
whenever you find a water cell, you can do a union operation between it and its water
neighbours. At the end of this process, two water cells belong to the same sea if and
only if they are in same set of the partition (i.e., if and only if they have the samefind
value).
There are a number of options about how to use this idea to count seas (you can do it
as you construct the final state of the union-find instance, or after you have done so).
The choice is up to you.
seaSize(int r, int c)
This method just returns the total number of cells belonging to the same sea as the cell
in rowrand columnc. If this cell is land rather than water it should just return the
value 0.
### 2.3 Written submission (5 points
Please submit the answers to the following questions as a single **PDF** document with
filename of the form314159Pi.pdfwhere 314159 is replaced by your ID number
andPiis replaced by your surname. There are no formal requirements for the format
of your submission, but presentation, spelling and grammar are all important elements
which will account for roughly 40% of the marks for this part of the assignment.
The written answers to questions one and two could be a couple of paragraphs each
(or a bit longer) along with supporting data. A single paragraph (and possibly some
pseudocode) is enough to answer question three.
1. The efficiency of the various union-find instances affects how large a square map
can be analysed. A reasonable length of time for a single computation might be
something on the order of a second. Conduct experiments usingUF1,UF2,UF3,
andUF4to determine rough values for that limit on the hardware you are us-
ing when the probability of a cell being water is 0. 5. Describe those experiments
(including the number of repetitions) and report on their results (a table or chart
would be appropriate). Comment briefly on whether the outcomes match our the-
oretical discussions of the four different algorithms and how changing the water
probability might affect their performance.
2. Consider 10 × 10 , 100 × 100 , and 1000 × 1000 maps. Conduct experiments to
try and determine the proportion of water needed on each so that on average
there are two or fewer seas. Describe those experiments (including the number of
repetitions - this should be large enough that you have confidence in the results
youre claiming) and report on their results.
3. Suppose that we also wanted to count the islands. How would you do that - and
what changes to the code might be needed?

View File

@ -1,19 +0,0 @@
---
sr-due: 2022-06-01
sr-interval: 62
sr-ease: 271
---
tags: #review
---
# Big-O
>Big O means $f(n) = O(g(n))$ if there is some constant $A > 0$ such that for all sufficiently large n, $f(n) ≤ A × g(n).$
- Big O provides *upper bounds* only. (usually on worst case runtimes)
- sometimes cost will be much less
- does not take special cases into account
- upper bound
- $O$ says that $g(n)$ provides an upper bound for $f(n)$
- "Insertion sort is $O(n^2)$" -> the maximum number of basic operations in never more than some constanct times $n^2$
- if $f(n) =O(g(n))$ then the opposite is also true
- usually $f(n)$ is complex but $g(n)$ is very simple

View File

@ -1,2 +0,0 @@
# Books
[[All the light we cannot see]]

View File

@ -1,107 +0,0 @@
---
sr-due: 2022-04-10
sr-interval: 13
sr-ease: 210
---
#### 0.1.1 Review Questions
1. name and describe two methodologies for using branches. Acronym for methodologies -> (GOOF)
- gitflow
- very structured
- uses a set of branches each with a specific purpose
- On the main branch
- focused on not creating new branches
- smaller self-contained commits are better
- Off the main branch
- most work occurs on a branch
- Feature branches
- each features has it's own branch which is merged and ~~deleted~~ can be worked on after completion
1. what is the difference between a topic/feature branch and a persistent branch
- feature branch
- used for a fixed term task such as a bug or a feature
- persistent branch
- branch that exists for the lifetime of the project
2. what is continuous intergration
---
#review
# Branch
Split current dev path into two to work on e.g., a bug or a feature
![Books](Books.md)
## 1 Overview
- allows users to work independently
- development continues independently along each branch
- can easily switch between branches
- can push a branch without affecting others
- branches can be merged back into the original
- always at least one main branch (usually master, main, trunk)
## 2 Default branch
used to be called master
now called main
## 3 Methodologies
### 3.1 Working on the main branch
focuses on not creating branches
- over time long branches become difficult to merge
- smaller, self-contained changes are encouraged
- focus on main code objective, avoiding side-experiments
sometimes this is not possible
- complex bugs or features need branches
pair programming
- e.g., vs code allows multiple developers to work on the same code at the same time.
### 3.2 Working off the main branch
- branches can be shared with teams
- still isolated commits from the main branch
- more commits can be added to a branch _after_ it has been merged
### 3.3 Feature branching
all new features are developed in a separate branch
merging to the branch "adds" that feature
after a feature is added, it call still be added to using the same branch
### 3.4 Gitflow
viewed as ovecomplicated
a set of shell scripts helps it be used
highly structured
e.g.,
- main branch -> branch has commit for release versions
- develop branch -> branch is where development occurs
- feature branch -> branches branch off development branch
- release branch -> branch polishes for release
- hotfix -> branches of main branch thence into develop
## 4 continuous integration
- [CI vs feature branch](https://www.youtube.com/watch?v=v4lijkq6Myfc)
- [cl vs feature branch](https://www.youtube.com/watch?v=IXQEi1O5!OI)
## 5 Topic/feature branch
- created for a specific purpose .e.g, bug/feature
- can pull from remote without marge conflicts (should be only one person working on branch)
- the more short-lived branches are the less likely there are to be merge conflicts with main
## 6 Persistent branch
- long term branch that exists for the lifetime of the project
- e.g.,
- release branches
- release v1, start on v2
- security flaw in v1, needs to be fixed
- v2 not finished yet
- create branch at last v1 commit and fix there
- also fix in v2 (if applicable)
- v1 branch will last until v2 is released
- specialsed versions of code base
- e.g., to support specific platforms or hardware
- e.g., to support feaures for a specific customer
- features for this specilised version on go on that branch
- keeps specialised code out of main codebase

View File

@ -1,67 +0,0 @@
---
title: "Configuration"
tags:
- setup
---
## Configuration
Quartz is designed to be extremely configurable. You can find the bulk of the configuration scattered throughout the repository depending on how in-depth you'd like to get.
The majority of configuration can be be found under `data/config.yaml`. An annotated example configuration is shown below.
```yaml
name: Your name here! # Shows in the footer
enableToc: true # Whether to show a Table of Contents
enableLinkPreview: true # whether to render card previews for links
description: Page description to show to search engines
page_title: Quartz Example Page # Default Page Title
links: # Links to show in footer
- link_name: Twitter
link: https://twitter.com/_jzhao
- link_name: Github
link: https://github.com/jackyzha0
```
### Graph View
To customize the Interactive Graph view, you can poke around `data/graphConfig.yaml`.
```yaml
enableLegend: false # automatically generate a legend
enableDrag: true # allow dragging nodes in the graph
enableZoom: true # allow zooming and panning the graph
depth: -1 # how many neighbours of the current node to show (-1 is all nodes)
paths: # colour specific nodes path off of their path
- /moc: "#4388cc"
```
## Styling
Want to go even more in-depth? You can add custom CSS styling and change existing colours through editing `assets/styles/custom.scss`. If you'd like to target specific parts of the site, you can add ids and classes to the HTML partials in `/layouts/partials`.
### Partials
Partials are what dictate what actually gets rendered to the page. Want to change how pages are styled and structured? You can edit the appropriate layout in `/layouts`.
For example, the structure of the home page can be edited through `/layouts/index.html`. To customize the footer, you can edit `/layouts/partials/footer.html`
More info about partials on [Hugo's website.](https://gohugo.io/templates/partials/)
Still having problems? Checkout our [FAQ and Troubleshooting guide](notes/troubleshooting.md).
## Multilingual
[CJK + Latex Support (测试)](notes/CJK%20+%20Latex%20Support%20(测试).md) comes out of the box with Quartz.
Want to support languages that read from right-to-left (like Arabic)? Hugo (and by proxy, Quartz) supports this natively.
Follow the steps [Hugo provides here](https://gohugo.io/content-management/multilingual/#configure-languages) and modify your `config.toml`
For example:
```toml
defaultContentLanguage = 'ar'
[languages]
[languages.ar]
languagedirection = 'rtl'
title = 'مدونتي'
weight = 1
```

View File

@ -1,19 +0,0 @@
# CROCS - Communist republic of computer science
![[Pasted image 20220311100212.png]] ![[Pasted image 20220311100213.png]]
## TODO
- [ ] Setup gitlab
- [ ] add webhooks
## Information
## Roles
- Riley -> Team Leader
- Arlo -> gulag Inspector
- Jet -> Food Rationer
- Will -> Worker Scum
- Brad -> Propaganda Distributor
## Comms
Discord
## Meeting time
Friday Afternoon

View File

@ -1,17 +0,0 @@
---
title: "Custom Domain"
---
### Registrar
This step is only applicable if you are using a **custom domain**! If you are using a `<YOUR-USERNAME>.github.io` domain, you can skip this step.
For this last bit to take effect, you also need to create a CNAME record with the DNS provider you register your domain with (i.e. NameCheap, Google Domains).
GitHub has some [documentation on this](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site), but the tldr; is to
1. Go to your forked repository (`github.com/<YOUR-GITHUB-USERNAME>/quartz`) settings page and go to the Pages tab. Under "Custom domain", type your custom domain, then click **Save**.
2. Go to your DNS Provider and create a CNAME record that points from your domain to `<YOUR-GITHUB-USERNAME.github.io.` (yes, with the trailing period).
![Example Configuration for Quartz](/notes/images/google-domains.png)*Example Configuration for Quartz*
3. Wait 30 minutes to an hour for the network changes to kick in.
4. Done!

View File

@ -1,59 +0,0 @@
# Debugging
removing technical faults
isolaing and remove technical faults
a human process
- requires creativity/disipline/knowledge
- deepr understanding of code
debuggers are tools to help debugging
## 1 common approaches
temporarily add output of diagnostic info
- "printf" debugging
permanently include calls to logging system
- route to terminal, log files etc
## 2 debugging machine code
- cpu runs code instruction by instruction
- thus debugger can intervene between instructions
- most cpus help debugger interrupt and resume programs
- cpu reached current code via a sequence on callers
- called **stack trace** , aka back frame, stack frame etc
- may reach point where it cannot continue
- e.g., integer division by zero, program execution must stop
- stack trace of stopped program can be analysed
## 3 Imperative languages
These are language that are executed in a step-wise, sequentail manner.
- debug symbols
- e.g., method named, variable named
- source code context
- line numbers
- variable name
- function method names
## 4 doing debugging
### 4.1 stepping skipping running
- step into --> steps one statement and steps into function calls
- step over --> a step that treats function calls as statement
- step out --> return to the instruction after the function call you're in
- continue --> go back to running code continuously
### 4.2 controlling debugger execution
Can run normally --> debugger wil run when program crashes
Set Breakpoint --> debugger will stop program when/if that line is reached
- conditional breakpoints only suspend if a condition is true
Watch point --> program is suspended when some data changes (e.g., variables)
## 5 debugging non imperative languages
e.g, spreadsheet (Dataflow programming)
- no breakpoints
- must step through _iterations of computations_
e.g., Equation
- break into smaller parts
- try 'compile' it in multiple ways
e.g., Data base query (declarative programming)
- -reexpressign the query and comaring can be useful

View File

@ -1,23 +0,0 @@
---
sr-due: 2022-05-13
sr-interval: 46
sr-ease: 290
---
tags: #review
---
# Developer
![[Pasted image 20220301172040.png]]
## Role
- translate technical specs into code
- test code
- maintin system
- fix/locate bugs
- add/modify features
- test, test, test
## Skills
- logical thinking and problem solving
- coding and testing, toolchains
- database, networking etc, (as necessary)

View File

@ -1,61 +0,0 @@
# Documentation
## 1 Who, what where
- Audience
- users
- other devs
- your team members
- anyone trying to understand you software
- your future self
- Locations
- source code
- project repo
- emebedding in program
- hosted separately
- User expectations
- evolving towards software that _facilitates experimentation_
- No help docs => everything is self-explanatory
- high usability
- users familar with many abstractions
- e.g., touchscreens, menus, links
- API's
- for devs writing code to interact with your code
- typically coupled with docs
- entirely technical audience --> tool generated docs are okay
- not self explanatory
- used by devs unfamiliar with code base
- Project Docs
- meaningful commit msgs
- extra mangement with e.g., github
- issue tracking
- ensures relevant material is cross linked where possible
- can easily refer to source code
- Source code docs
- header comments
- software licencing
- support devs
- indicate code ownership
- in code comments on fields methods etc
- keep in sync with code changes
- descriptive variable/class/other names
## 2 Built in language support
- basic
- syntax for code comments
- indicate that the compiler should ingnore
- also more advanced like python "doc strings"
- Structured comments and docs
- machine parseable comments
- e.g., javadocs, perl plain old docs
- creates a doc website
- uses annotations e.g., @author, @returns, @param
- Literate programming
- donald knuth suggestions (1984)
- source code should be primarily natural language documentation
- executable code snippetrs are included within the description
- tools are used to:
- tangle the code snippets
- weave out the documentation
- Modern implementations
- jupyter notebooks
- swift playgrounds
- r markdown

View File

@ -1,69 +0,0 @@
---
title: "Editing Content in Quartz"
tags:
- setup
---
## Editing
Quartz runs on top of [Hugo](https://gohugo.io/) so all notes are written in [Markdown](https://www.markdownguide.org/getting-started/).
### Obsidian
I recommend using [Obsidian](http://obsidian.md/) as a way to edit and grow your digital garden. It comes with a really nice editor and graphical interface to preview all of your local files.
This step is **highly recommended**.
🔗 [How to setup your Obsidian Vault to work with Quartz](notes/obsidian.md)
### Ignoring Files
Only want to publish a subset of all of your notes? Don't worry, Quartz makes this a simple two-step process.
❌ [Excluding pages from being published](notes/ignore%20notes.md)
### Folder Structure
Here's a rough overview of what's what.
**All content in your garden can found in the `/content` folder.** To make edits, you can open any of the files and make changes directly and save it. You can organize content into any folder you'd like.
**To edit the main home page, open `/content/_index.md`.*
To create a link between notes in your garden, just create a normal link using Markdown pointing to the document in question. Please note that **all links should be relative to the root `/content` path**.
```markdown
For example, I want to link this current document to `notes/config.md`.
[A link to the config page](notes/config.md)
```
Similarly, you can put local images anywhere in the `/content` folder.
```markdown
Example image (source is in content/notes/images/example.png)
![Example Image](/content/notes/images/example.png)
```
### Front Matter
Hugo is picky when it comes to metadata for files. Make sure that your title is double-quoted and that you have a title defined at the top of your file like so. You can also add tags here as well.
```markdown
---
title: "Example Title"
tags:
- example-tag
enableToc: false # do not show a table of contents on this page
---
Rest of your content here...
```
## Previewing Changes
This step is purely optional and mostly for those who want to see the published version of their digital garden locally before opening it up to the internet. This is *highly recommended* but not required.
👀 [Preview Quartz Changes](notes/preview%20changes.md)
For those who like to live life more on the edge, viewing the garden through Obsidian gets you pretty close to the real thing.
## Publishing Changes
Now that you know the basics of managing your digital garden using Quartz, you can publish it to the internet!
🌍 [Hosting Quartz online!](notes/hosting.md)
Having problems? Checkout our [FAQ and Troubleshooting guide](notes/troubleshooting.md).

View File

@ -1,59 +0,0 @@
coded biases doco
# Ethics
## 1 Case studies
1. [[facial recognition in US riots 2021-01-06]]
2. [[Anti govt protest china]]
3. [[How is safe enough for autonomous vehicles]]
### 1.1 Differences 1 vs 2
Govt vs vigilante
my judgements contain additionl context
e.g., pro-democratic vs anti
world contains vast differences
how systems of laws work
extent of civil liberties afforded to individuals
### 1.2 Discussion
When developing a technology you dont know what is could be used for
## 2 Ethical handling of data
- Data moves very quickly due to computerised systems
- privacy act 2020
- its unethical to ignore potential security problems
- df
## 3 Ethical handling of bias and errors, e.g., in AI
- large datasets oftenb incdlude bias and errors
- to AI trained on these datasets with also be biased
- e.g., facial recognition trining overrepresenting white males
- ML algorithgms are often opqaue
- its not possible to understand how decisions are reached
- makes asessing suitability of AI for a use case difficult
- explainable AI
- attacks e.g., 'trapdoors' within ML training data
## 4 False or misleading claims
- pressure to release can lead to false claims
- are features fully tested
- need to assess risks of bias
- e.g., AWS uptime information
- rumoured that service status colour is n management decision
-
## 5 Your responsibility
- dont stay silent
## 6 Professional reponsibilities
- comp science per se lacks profressional standards
- there are some prefessional bodies which encoede responsibilities
- ACM coc
- IEEE coc
- neither are specific to NZ
- Within NZ must consider treaty obligations

View File

@ -1,6 +0,0 @@
# Capital riots face recognition
capital riots occured on 2021-01-06
there was video from the riots which contained faces
- facial recognition acquired a pic of each person
- faces were uploaded to a website

View File

@ -1,6 +0,0 @@
# Finance
## Trading
[[Options]]
## Tech
[[Blockchain]]

View File

@ -1,127 +0,0 @@
---
sr-due: 2022-04-12
sr-interval: 29
sr-ease: 270
---
tags: #review
---
# Git
Git is a tool to track changes to sets of files
It is the most used [[Version Control Systems|VCS]
## Team git protocols
you can develop a team protocol for Git use
e.g.,
- agree to commit often
- know what branches are being used and why
- consider pair programming / live sharing
- try not to touch lots of files without signalling why
- agree who's going to edit files that maight not auto merge
## web based repo access control
owner of repo chooses who can push to project
- maintainer -> cant remove data
- developer -> cant manage team
- reporter -> cant change codebase
- guest -> can view
### open source collaboration
you want contributions from everyone
but you dont want to manage user-level control
-> pull/merge requests
unknown users can fork then add a feature/bug then do a merge request which can be reviewed
## git repos
[[Git Cheat Sheet#^3b3a5d|Repositories]] maintain code history
can be conceptualised as a graph
```mermaid
graph RL
A[HEAD]-->1[MASTER]-->B((ab348b))-->C((hf33h3))
C-->D((3hh39h))
C-.Merge.->E((n3383b))
3[Branch]-->E
D-->H((kfj383))
E-->G((gj4jf4))
G-->H
H-->I((fjfj39))
I-->2[Inital Commit]
```
```mermaid
gitGraph:
checkout master
commit
commit
branch newbranch
checkout newbranch
commit
commit
checkout master
commit
merge newbranch
commit
commit
```
![[Pasted image 20220306103955.png|300]]
- nodes are commits -> immutable snapshots of the tracked files
- edges record how nodes emerged over time
- arrows can be read as "is derived from"
git is a [[Version Control Systems#^98d838|Decentralised and Centralised VCS]]
- every team members has their own local copy of the repo
- git repos are often syned with a server: github, gitlab,etc
## levels of complexity/Abstraction
```mermaid
graph TD
w(github gitlab from web browser)-->b(graphical ide's e.g., vscode)-->c(command line git)-->d(low level git plumbing commands)-->e(direct manipulation of records within repo's .git directory)
```
## Limitations/pain points
not designed for broad usability
- bottom up design stems from its implementaion,
- rather than top down design from user interface
- thus, command naming and syntax can be unintuitive
git is not suited to handling large data files
- git scans whole files to generate hash codes
- can use git lfs (large file support) to get around this
flexibility of git can lead to high cognitive load
- e.g., many ways to get others' commits to your repo
binary files e.g., JPEG images are treated as whole
- no differencing, no content merging
some text files may not have stable line structure
- e.g., XML data can be reordered wihout changing so:
- git can auto merge when this is destructive
- git may get confused and force you to merge
- e.g., node package-lock.json
- you can turn of auto-merge if you are working with files that may be problematic
## advantages
git repos' data structures are well designed
- clear in structure yet flexible and efficient
few dependencies
- widely available
- free and open source
community support around use of git is great
- eforts to get researches to use version control;
- github helped open source software flourish by making it easy for citizens to contribute to projects

View File

@ -1,9 +0,0 @@
#flashcards
![[Pasted image 20220302102809.png]]
# HCI
HCI definition::The design and use of computer technology, focused on the interfaces between users and computers
<!--SR:!2022-03-23,13,250-->

Some files were not shown because too many files have changed in this diff Show More