Skip to content

Commit c3ee305

Browse files
authored
Merge pull request #2 from mutable-learning/dev
Add more software development content - Programming Concepts
2 parents 7026547 + 4b29878 commit c3ee305

28 files changed

Lines changed: 535 additions & 9 deletions

pages/Analysis Stage.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ softdev:: Unit 3 Outcome 2
1010
- [[Solution Requirements]]
1111
- [[Solution Constraints]]
1212
- [[Solution Scope]]
13-
- update and maintain the [[Project Plan]]
13+
- update and maintain the [[Project Plan]]
14+
-

pages/Boundary Values.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
tags:: Software Development
2+
topic:: [[Software Errors]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- Boundary Value Analysis (BVA)
7+
- a software testing technique that tests the boundaries of a software program's input and output values
8+
- based on the principle that software programs are most likely to fail at the edges of their input and output ranges
9+
- because the code that handles these values is often the most complex and difficult to test
10+
- first identify the input and output ranges of the software program
11+
- then test the program with values at the edges of these ranges, as well as slightly inside and outside of the ranges
12+
- these are the *Boundary Values*
13+
- the maximum and minimum values
14+
- if a software program has an input range of 1 to 100, the tester would test the program with the values 1, 100, 101, and 0
15+
- maximum and minimum acceptable values
16+
- closest invalid values
17+
- particularly useful for testing software programs with complex input and output requirements that require extensive use of {{embed ((6542d358-8f3e-4d79-a58e-6f78d0d070a6)) }}
18+
- tips to perform BVA
19+
- identify the input and output ranges of the software program
20+
- use [[Test Data]] to test the program with values at the edges of these ranges
21+
- as well as outside of the ranges
22+
- test the program with valid and invalid values
23+
- test the program with combinations of valid and invalid values

pages/CSV file.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
tags:: Software Development
2+
topic:: [[Programming Concepts]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- is a type of [[Text file]]
7+
- follows a standard formatting structure that **delimitates** data into rows and columns
8+
- an optional header row can be included as the first row of the file to provide names for columns
9+
- Delimiter
10+
- is the character used to separate data within a row into columns
11+
- commonly a comma or tab, but many systems support any character as the delimiter
12+
- works best with data that maps to a row/column relationship well
13+
- does not work well for data that has a more complex relationship such as parent with multiple children
14+
- no other information is stored in the file to describe the data
15+
- provides a simple method to format a file for data transfer between systems
16+
- does not work well for complex data or data sets containing varied data

pages/Conditional Expressions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ algo:: Unit 3 Outcome 2
2323
- $NOT\ P$ is true if $P$ is false
2424
- ![Latex commands for Logic and Set notation](../assets/logic_set_notation.png)
2525
- use parentheses to group parts of an expression together to make it more understandable
26-
- use a truth table to help understand the result of more complex expression involving multiple logical statements
26+
- use a [[Truth Table]] to help understand the result of more complex expression involving multiple logical statements
2727
-
2828
- Further Research
2929
background-color:: purple

pages/Internal Documentation.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
tags:: Software Development
2+
topic:: [[Programming Concepts]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- the notes and comments written by a programmer within the code itself
7+
- includes information about the program as a whole, including
8+
- about each of the classes, methods, objects, algorithms, etc. within it
9+
- combined with using a [[Naming Convention]] to include well-named variables to create understandable and maintainable code
10+
- has no impact on the compilation or running of the code
11+
- extensive documentation may increase storage size for source code, but is usually negligable
12+
- exists only to provide context and important information about the code
13+
- most useful when a programmer is reading through code that they did not write themselves, or that was written in the past
14+
- relying on memory alone or on interpreting complex algorithms to understand what code is doing is hard work
15+
- saves time
16+
- reduces developer effort
17+
- more efficiently creating and maintaining software
18+
- good Internal Documentation practices
19+
- write meaningful internal documentation for your code
20+
- help you and other developers understand how the code works
21+
- include
22+
- file header comments
23+
- documentation of classes and methods
24+
- function and subroutine comments
25+
- single-line and multi-line comments explaining why code is written this way such as
26+
- to work with another system
27+
- legal requirement constraint
28+
- things that aren't immediately obvious just by looking at the code (background)
29+
- information about testing
30+
- possibly add extra information on upgrades, changes or enhancements made
31+
- [[Version Control]] will also house documentation related to code change
32+
- clear and concise
33+
- avoid jargon or technical terms that are not specific to the software domain
34+
- be specific
35+
- explain less about what code does and more about why it was written this way
36+
- be consistent
37+
- use the same style and format for your internal documentation throughout your code
38+
- follow standard documentation conventions for the programming language
39+
- keep it up to date
40+
- if the code changes, the documentation must be checked and updated as well, if needed
41+
-
42+
-

pages/Linear Search.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
tags:: Software Development
2+
topic:: Search Algorithms
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- the simplest type of search
7+
- checks every element of the input for a match in order until a match is found of the end of the input is reached
8+
- usually completed using [[Iteration]] with a For loop style of [[Processing Feature/Iteration]]
9+
- inefficient as the size of the input grows
10+
- can be useful when input sizes are known to be small
11+
- unlike [[Binary Search]], the input is not required to be sorted first before searching
12+
- ```
13+
Algorithm LinearSearch(input, item)
14+
// input is an ordered collection of elements such as a list or array
15+
// item is the data we wish to find in the input
16+
// returns the index number of the item if found or -1 if not found
17+
18+
found <-- -1
19+
For i in Length(input) - 1 Do
20+
If input[i] = item Then
21+
found <-- i
22+
Break
23+
End If
24+
End For
25+
Return found
26+
End
27+
```

pages/Naming Convention.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
tags:: Software Development
2+
topic:: [[Programming Concepts]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- a set of rules followed when creating variables and objects in source code
7+
- provides consistency and clarity to developers
8+
- can add meaning to objects not instantly identifiable otherwise
9+
- often used to provide information about the purpose of the object
10+
- can be used to inform about the object's data type or structure
11+
- many programming languages have conventions about naming conventions
12+
- how to use them for various different objects
13+
- Python's naming conventions are listed in [PEP 8](https://peps.python.org/pep-0008/#naming-conventions)
14+
- aim is to make code easier to read and understand
15+
- Camel Case
16+
- words are combined without spaces
17+
- each word after the first is capitalized
18+
- long names should be avoided
19+
- allows for some meaning to be provided to the object with its name
20+
- readInputFromFile
21+
- Snake Case
22+
- words are combined with an underscore (_)
23+
- all lowercase and underscores instead of spaces
24+
- may be easier for humans to read the words
25+
- read_input_from_file
26+
- Hungarian Notation
27+
- words are combined without spaces
28+
- each word after the first is capitalized
29+
- adds a *prefix* to the beginning of the name
30+
- a combination of lowercase letters
31+
- indicate the [[Data Type]] or [[Data Structure]] of the object
32+
- fnReadInputFromFile returns a value to strFileContents
33+
- can lead to inconsistency when code is changed (refactored)
34+
- not as commonly used in modern software development
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
tags:: Software Development
2+
topic:: [[Processing Feature]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- an object-oriented programming feature only supported in languages that support OOP
7+
- a programmer defined representation of an *object* in code
8+
- can store both variables and subroutines ( **methods** ) as part of the class definition
9+
- {{embed ((65421482-6808-45d6-a8c2-6cf29d278c75))}}
10+
- can be extended and represent a relationship between multiple class types using subclasses
11+
- implements the principles of [[Abstraction]], [[Modularity]] and [[Encapsulation]]
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
tags:: Software Development
2+
topic:: [[Processing Feature]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- a named [[Processing Feature/Sequence]] of [[Processing Feature/Instruction]]s
7+
- a generic term used by programmers to describe the structure that stores a block of code and can be executed by calling it by name
8+
- can have **parameters** specified in the function declaration which allow for values and objects to be made available to the functions statements when it is executed ( **arguments** )
9+
- these arguments are assigned to temporary variables when the function is called and are *local* to the function
10+
- they don't exist outside the function
11+
- different languages pass data into functions in different ways using as arguments
12+
- by reference
13+
- the original data will be modified if it is changed during the function's execution
14+
- by value
15+
- the original data is not changed during the function's execution
16+
- languages often allow functions to have access restrictions
17+
- depends on the language implementation
18+
- Private
19+
- Public
20+
- Protected
21+
- Subroutine
22+
- a general name for a structure that stores a block of statements and can be executed with a call using its name
23+
- Function
24+
- a subroutine that returns a value when executed
25+
- Procedure
26+
- a subroutine that doesn't return a value when executed
27+
- Method
28+
id:: 65421482-6808-45d6-a8c2-6cf29d278c75
29+
- a function or procedure that is part of an object ( belongs to a [[Processing Feature/Class]] )
30+
- Class Method
31+
- is shared by all objects of the same class
32+
- can be called without an instance object by using the generic class type object
33+
- Instance Method
34+
- is defined in the class type
35+
- can only be called on an object instance of the class
36+
- {{embed ((6540dff6-8035-491b-a86d-536b2812bfe7))}}
37+
-
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
tags:: Software Development
2+
topic:: [[Processing Feature]]
3+
softdev:: Unit 3 Outcome 1
4+
5+
-
6+
- a line of code executed to perform an action
7+
- can *define* a value into a variable, known as *assigning* the value to the variable
8+
- can *state* the code to be executed on a line
9+
- some instructions can appear to cover multiple lines of source code, but they are one statement that will be executed as the instruction by the compiler or interpreter

0 commit comments

Comments
 (0)