https://computersciencewiki.org/api.php?action=feedcontributions&user=Bmackenty&feedformat=atomComputer Science Wiki - User contributions [en]2024-03-28T23:28:37ZUser contributionsMediaWiki 1.39.6https://computersciencewiki.org/index.php?title=Rules_of_simulations&diff=12178Rules of simulations2023-11-16T08:31:40Z<p>Bmackenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
It's important to define rules that process data appropriately to produce accurate and meaningful results. Here are some key concepts and rules that can be introduced to your students:<br />
<br />
# Data Integrity Rules: Ensure that the data entered into the simulation is accurate and relevant. This includes rules for data validation (like range checks or format checks) to prevent incorrect data from being used, which could lead to erroneous results.<br />
# Transformation Rules: Define how input data is transformed within the simulation. This could be mathematical formulas, algorithms, or logical operations that are applied to the input data to simulate the behavior of the real-world system.<br />
# Conditional Rules: Set up conditions under which certain actions occur. For example, in a traffic simulation, you might have a rule like "If the traffic light is red, cars must stop."<br />
# Feedback Loops: Incorporate rules for feedback mechanisms where the output of the simulation can influence future inputs. This is particularly important in dynamic systems where the state of the system changes over time.<br />
# Conservation Rules: In simulations that involve physical systems, conservation laws (like conservation of energy, mass, or momentum) should be respected to maintain realism.<br />
# Boundary Conditions: Define rules for how the simulation handles the edges of the system. For example, in a simulation of gas particles in a box, rules must specify what happens when a particle hits the wall of the box.<br />
# Time Progression Rules: Establish how time is handled in the simulation. This includes setting time steps (intervals at which the simulation updates) and determining how time-related changes are applied to the model.<br />
# Termination Conditions: Set rules for when the simulation should end. This could be after a certain amount of simulated time, after a specific event occurs, or once a particular condition is met.<br />
<br />
<br />
<br />
== Data Integrity Rules ==<br />
* '''Example 1:''' In a weather simulation, ensuring temperature data is within a realistic range (e.g., -100 to 150 degrees Fahrenheit) to prevent impossible weather scenarios.<br />
* '''Example 2:''' In a population growth model, verifying that the initial population number is a positive integer, as negative or fractional people are not possible.<br />
<br />
== Transformation Rules ==<br />
* '''Example 1:''' In an economic simulation, applying a formula to calculate GDP based on input factors like labor force, capital, and productivity.<br />
* '''Example 2:''' In a physics simulation, using Newton's second law (Force = mass x acceleration) to determine the movement of an object.<br />
<br />
== Conditional Rules ==<br />
* '''Example 1:''' In a simulation of a school cafeteria, implementing a rule that if the queue length exceeds 30 students, open another serving line.<br />
* '''Example 2:''' In a biology simulation, a rule where a plant's growth rate decreases if the water level falls below a certain threshold.<br />
<br />
== Feedback Loops ==<br />
* '''Example 1:''' In an environmental simulation, higher pollution levels could reduce air quality, which in turn affects public health and subsequently changes the pollution-producing activities.<br />
* '''Example 2:''' In a market simulation, increasing product prices as demand increases, which then affects future demand and production rates.<br />
<br />
== Conservation Rules ==<br />
* '''Example 1:''' In a chemical reaction simulation, ensuring the number of atoms of each element is the same before and after the reaction, adhering to the law of conservation of mass.<br />
* '''Example 2:''' In an energy simulation, making sure that the total energy (kinetic plus potential) in a closed system remains constant over time.<br />
<br />
== Boundary Conditions ==<br />
* '''Example 1:''' In a simulation of a fish tank ecosystem, fish that swim to the edge of the tank are turned around, simulating the tank's walls.<br />
* '''Example 2:''' In a heat transfer simulation, setting the outer edges of a material to a fixed temperature to simulate insulation.<br />
<br />
== Time Progression Rules ==<br />
* '''Example 1:''' In a historical simulation, advancing the simulation by one year each step, applying changes such as population growth or technological advancements.<br />
* '''Example 2:''' In a day/night cycle simulation, updating lighting conditions every simulated hour to reflect the position of the sun.<br />
<br />
== Termination Conditions ==<br />
* '''Example 1:''' Ending a pandemic spread simulation once the number of active cases falls below a certain threshold, indicating control of the outbreak.<br />
* '''Example 2:''' Completing a traffic flow simulation after a simulated 24-hour period to analyze daily traffic patterns.<br />
<br />
<br />
<br />
Please review and play this simulation. What rules are used for this very simple simulation?<br />
<br />
# http://www.shodor.org/interactivate/activities/SpreadofDisease/<br />
<br />
Please review and play this simulation. What rules are used for this very simple simulation? <br />
<br />
# https://www.thephysicsaviary.com/Physics/Programs/Labs/DroneDeliveryLab/index.html<br />
<br />
Please review and play this simulation. What rules are used for this very simple simulation.<br />
<br />
# https://graebor.itch.io/sort-the-court<br />
<br />
Please review and play this simulation. What rules are used for this very simple simulation?<br />
<br />
# https://sipho.itch.io/sipho<br />
<br />
Please review and play this simulation. What rules are used for this complex simulation? <br />
<br />
# https://forio.com/app/showcase/nurse-scheduling/index.html<br />
<br />
== Standards ==<br />
* Describe rules that process data appropriately and that produce results.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=The_most_important_thing_about_your_grade&diff=12165The most important thing about your grade2023-11-09T18:47:21Z<p>Bmackenty: /* how your grade is calculated */</p>
<hr />
<div>[[file:test-results.png|right|frame|Grading, assessment, and knowing<ref>http://www.flaticon.com/</ref>]]<br />
<br />
[[:media:IB grade descriptors for computer science.pdf| Click here for a PDF describing grades in IB computer science]]<br />
<br />
== memorizing vs understanding ==<br />
<br />
You can memorize your way to a 3 or a 4. You can understand your way to a 5 or 6. Please make sure you understand this distinction.<br />
<br />
The most important thing I care about is if you really understand this material. The most important thing you should care about is if you understand this material. I also care after you, our class social environment, and other stuff. However, what matters most to me if you understand computer science. <br />
<br />
Understanding something isn't a yes/no or true/false. The best way to answer this question is to ask yourself '''to what extent do you understand''' this material.<br />
<br />
I understand you worry about your grade. <br />
You should worry more about how well you understand and can apply our material.<br />
<br />
<br />
== how your grade is calculated ==<br />
<br />
The final grade for an IB (International Baccalaureate) Computer Science course is calculated through a combination of internal assessments (IA) and external assessments (EA). Here is a general breakdown:<br />
<br />
1. '''Internal Assessment (IA):'''<br />
- This is a project that students complete over an extended period, usually in their second year of the course. It accounts for 20-30% of the final grade, depending on the level of the course (Standard Level or Higher Level).<br />
- The IA is graded by the teacher and then samples are sent to the IB for moderation to ensure consistent marking standards.<br />
<br />
2. '''External Assessment (EA)''':<br />
- These are exams that the IB sets and marks.<br />
- For Computer Science, the external assessment typically consists of two or three papers (written exams), depending on whether the student is taking the course at Standard Level (SL) or Higher Level (HL).<br />
- **Paper 1**: This paper tests students on core topics and accounts for a significant portion of the final grade (about 40% for SL and 30% for HL).<br />
- **Paper 2**: This paper focuses on the option topics chosen by the student and accounts for 20% (SL) or 25% (HL) of the final grade.<br />
- **Paper 3** (HL only): This paper is based on a case study provided by the IB and accounts for 20% of the final grade for HL students.<br />
<br />
The final mark is based on the boundary scales provided by the IB for that examination session. The IB grades on a scale of 1 to 7, with 7 being the highest. The overall final grade is a combination of the weighted scores of both the IA and the EA.<br />
<br />
To calculate a final grade, each component's score is multiplied by its weight, and these weighted scores are added together. This sum is then matched against the grade boundaries for that year's examination session to determine the final IB grade.<br />
<br />
For example, if a student scores a 6 on the IA (weighted at 20%), and 5 on Paper 1 (40%), 6 on Paper 2 (20%), and 5 on Paper 3 (20%) for HL, the calculation would be as follows:<br />
<br />
# - IA: 6 x 0.20 = 1.2<br />
# - Paper 1: 5 x 0.40 = 2.0<br />
# - Paper 2: 6 x 0.20 = 1.2<br />
# - Paper 3: 5 x 0.20 = 1.0<br />
<br />
Total: 1.2 + 2.0 + 1.2 + 1.0 = 5.4, which would then be matched to the closest grade boundary (usually this would round down to a 5).<br />
<br />
Teachers can provide predicted grades to universities, which are their professional estimation of how the student will score based on their performance in the course up to that point.<br />
<br />
Please note that the specific percentages and structure can vary slightly with each examination session and course update.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=The_most_important_thing_about_your_grade&diff=12164The most important thing about your grade2023-11-09T18:46:45Z<p>Bmackenty: </p>
<hr />
<div>[[file:test-results.png|right|frame|Grading, assessment, and knowing<ref>http://www.flaticon.com/</ref>]]<br />
<br />
[[:media:IB grade descriptors for computer science.pdf| Click here for a PDF describing grades in IB computer science]]<br />
<br />
== memorizing vs understanding ==<br />
<br />
You can memorize your way to a 3 or a 4. You can understand your way to a 5 or 6. Please make sure you understand this distinction.<br />
<br />
The most important thing I care about is if you really understand this material. The most important thing you should care about is if you understand this material. I also care after you, our class social environment, and other stuff. However, what matters most to me if you understand computer science. <br />
<br />
Understanding something isn't a yes/no or true/false. The best way to answer this question is to ask yourself '''to what extent do you understand''' this material.<br />
<br />
I understand you worry about your grade. <br />
You should worry more about how well you understand and can apply our material.<br />
<br />
<br />
== how your grade is calculated ==<br />
<br />
The final grade for an IB (International Baccalaureate) Computer Science course is calculated through a combination of internal assessments (IA) and external assessments (EA). Here is a general breakdown:<br />
<br />
1. '''Internal Assessment (IA):'''<br />
- This is a project that students complete over an extended period, usually in their second year of the course. It accounts for 20-30% of the final grade, depending on the level of the course (Standard Level or Higher Level).<br />
- The IA is graded by the teacher and then samples are sent to the IB for moderation to ensure consistent marking standards.<br />
<br />
2. '''External Assessment (EA)''':<br />
- These are exams that the IB sets and marks.<br />
- For Computer Science, the external assessment typically consists of two or three papers (written exams), depending on whether the student is taking the course at Standard Level (SL) or Higher Level (HL).<br />
- **Paper 1**: This paper tests students on core topics and accounts for a significant portion of the final grade (about 40% for SL and 30% for HL).<br />
- **Paper 2**: This paper focuses on the option topics chosen by the student and accounts for 20% (SL) or 25% (HL) of the final grade.<br />
- **Paper 3** (HL only): This paper is based on a case study provided by the IB and accounts for 20% of the final grade for HL students.<br />
<br />
The final mark is based on the boundary scales provided by the IB for that examination session. The IB grades on a scale of 1 to 7, with 7 being the highest. The overall final grade is a combination of the weighted scores of both the IA and the EA.<br />
<br />
To calculate a final grade, each component's score is multiplied by its weight, and these weighted scores are added together. This sum is then matched against the grade boundaries for that year's examination session to determine the final IB grade.<br />
<br />
For example, if a student scores a 6 on the IA (weighted at 20%), and 5 on Paper 1 (40%), 6 on Paper 2 (20%), and 5 on Paper 3 (20%) for HL, the calculation would be as follows:<br />
<br />
- IA: 6 x 0.20 = 1.2<br />
- Paper 1: 5 x 0.40 = 2.0<br />
- Paper 2: 6 x 0.20 = 1.2<br />
- Paper 3: 5 x 0.20 = 1.0<br />
<br />
Total: 1.2 + 2.0 + 1.2 + 1.0 = 5.4, which would then be matched to the closest grade boundary (usually this would round down to a 5).<br />
<br />
Teachers can provide predicted grades to universities, which are their professional estimation of how the student will score based on their performance in the course up to that point.<br />
<br />
Please note that the specific percentages and structure can vary slightly with each examination session and course update.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=The_most_important_thing_about_your_grade&diff=12163The most important thing about your grade2023-11-09T18:45:50Z<p>Bmackenty: /* how your grade is calculated */</p>
<hr />
<div>[[file:test-results.png|right|frame|Grading, assessment, and knowing<ref>http://www.flaticon.com/</ref>]]<br />
<br />
[[:media:IB grade descriptors for computer science.pdf| Click here for a PDF describing grades in IB computer science]]<br />
<br />
== memorizing vs understanding ==<br />
<br />
You can memorize your way to a 3 or a 4. You can understand your way to a 5 or 6. Please make sure you understand this distinction.<br />
<br />
The most important thing I care about is if you really understand this material. The most important thing you should care about is if you understand this material. I also care after you, our class social environment, and other stuff. However, what matters most to me if you understand computer science. <br />
<br />
Understanding something isn't a yes/no or true/false. The best way to answer this question is to ask yourself '''to what extent do you understand''' this material.<br />
<br />
I understand you worry about your grade. <br />
You should worry more about how well you understand and can apply our material.<br />
<br />
<br />
== how your grade is calculated ==<br />
<br />
The final grade for an IB (International Baccalaureate) Computer Science course is calculated through a combination of internal assessments (IA) and external assessments (EA). Here is a general breakdown:<br />
<br />
1. '''Internal Assessment (IA):'''<br />
- This is a project that students complete over an extended period, usually in their second year of the course. It accounts for 20-30% of the final grade, depending on the level of the course (Standard Level or Higher Level).<br />
- The IA is graded by the teacher and then samples are sent to the IB for moderation to ensure consistent marking standards.<br />
<br />
2. '''External Assessment (EA)''':<br />
- These are exams that the IB sets and marks.<br />
- For Computer Science, the external assessment typically consists of two or three papers (written exams), depending on whether the student is taking the course at Standard Level (SL) or Higher Level (HL).<br />
- **Paper 1**: This paper tests students on core topics and accounts for a significant portion of the final grade (about 40% for SL and 30% for HL).<br />
- **Paper 2**: This paper focuses on the option topics chosen by the student and accounts for 20% (SL) or 25% (HL) of the final grade.<br />
- **Paper 3** (HL only): This paper is based on a case study provided by the IB and accounts for 20% of the final grade for HL students.<br />
<br />
The final mark is based on the boundary scales provided by the IB for that examination session. The IB grades on a scale of 1 to 7, with 7 being the highest. The overall final grade is a combination of the weighted scores of both the IA and the EA.<br />
<br />
To calculate a final grade, each component's score is multiplied by its weight, and these weighted scores are added together. This sum is then matched against the grade boundaries for that year's examination session to determine the final IB grade.<br />
<br />
For example, if a student scores a 6 on the IA (weighted at 20%), and 5 on Paper 1 (40%), 6 on Paper 2 (20%), and 5 on Paper 3 (20%) for HL, the calculation would be as follows:<br />
<br />
- IA: 6 x 0.20 = 1.2<br />
- Paper 1: 5 x 0.40 = 2.0<br />
- Paper 2: 6 x 0.20 = 1.2<br />
- Paper 3: 5 x 0.20 = 1.0<br />
<br />
Total: 1.2 + 2.0 + 1.2 + 1.0 = 5.4, which would then be matched to the closest grade boundary (usually this would round down to a 5).<br />
<br />
Teachers can provide predicted grades to universities, which are their professional estimation of how the student will score based on their performance in the course up to that point.<br />
<br />
Please note that the specific percentages and structure can vary slightly with each examination session and course updates, so it's always best to check the latest IB Computer Science guide or speak with the IB coordinator at your school.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=The_most_important_thing_about_your_grade&diff=12162The most important thing about your grade2023-11-09T18:45:22Z<p>Bmackenty: </p>
<hr />
<div>[[file:test-results.png|right|frame|Grading, assessment, and knowing<ref>http://www.flaticon.com/</ref>]]<br />
<br />
[[:media:IB grade descriptors for computer science.pdf| Click here for a PDF describing grades in IB computer science]]<br />
<br />
== memorizing vs understanding ==<br />
<br />
You can memorize your way to a 3 or a 4. You can understand your way to a 5 or 6. Please make sure you understand this distinction.<br />
<br />
The most important thing I care about is if you really understand this material. The most important thing you should care about is if you understand this material. I also care after you, our class social environment, and other stuff. However, what matters most to me if you understand computer science. <br />
<br />
Understanding something isn't a yes/no or true/false. The best way to answer this question is to ask yourself '''to what extent do you understand''' this material.<br />
<br />
I understand you worry about your grade. <br />
You should worry more about how well you understand and can apply our material.<br />
<br />
<br />
== how your grade is calculated ==<br />
<br />
The final grade for an IB (International Baccalaureate) Computer Science course is calculated through a combination of internal assessments (IA) and external assessments (EA). Here is a general breakdown:<br />
<br />
1. **Internal Assessment (IA)**:<br />
- This is a project that students complete over an extended period, usually in their second year of the course. It accounts for 20-30% of the final grade, depending on the level of the course (Standard Level or Higher Level).<br />
- The IA is graded by the teacher and then samples are sent to the IB for moderation to ensure consistent marking standards.<br />
<br />
2. **External Assessment (EA)**:<br />
- These are exams that the IB sets and marks.<br />
- For Computer Science, the external assessment typically consists of two or three papers (written exams), depending on whether the student is taking the course at Standard Level (SL) or Higher Level (HL).<br />
- **Paper 1**: This paper tests students on core topics and accounts for a significant portion of the final grade (about 40% for SL and 30% for HL).<br />
- **Paper 2**: This paper focuses on the option topics chosen by the student and accounts for 20% (SL) or 25% (HL) of the final grade.<br />
- **Paper 3** (HL only): This paper is based on a case study provided by the IB and accounts for 20% of the final grade for HL students.<br />
<br />
The final mark is based on the boundary scales provided by the IB for that examination session. The IB grades on a scale of 1 to 7, with 7 being the highest. The overall final grade is a combination of the weighted scores of both the IA and the EA.<br />
<br />
To calculate a final grade, each component's score is multiplied by its weight, and these weighted scores are added together. This sum is then matched against the grade boundaries for that year's examination session to determine the final IB grade.<br />
<br />
For example, if a student scores a 6 on the IA (weighted at 20%), and 5 on Paper 1 (40%), 6 on Paper 2 (20%), and 5 on Paper 3 (20%) for HL, the calculation would be as follows:<br />
<br />
- IA: 6 x 0.20 = 1.2<br />
- Paper 1: 5 x 0.40 = 2.0<br />
- Paper 2: 6 x 0.20 = 1.2<br />
- Paper 3: 5 x 0.20 = 1.0<br />
<br />
Total: 1.2 + 2.0 + 1.2 + 1.0 = 5.4, which would then be matched to the closest grade boundary (usually this would round down to a 5).<br />
<br />
Teachers can provide predicted grades to universities, which are their professional estimation of how the student will score based on their performance in the course up to that point.<br />
<br />
Please note that the specific percentages and structure can vary slightly with each examination session and course updates, so it's always best to check the latest IB Computer Science guide or speak with the IB coordinator at your school.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Levels_of_knowing_(Level_1,_Level_2,_Level_3)&diff=12098Levels of knowing (Level 1, Level 2, Level 3)2023-05-28T08:52:12Z<p>Bmackenty: </p>
<hr />
<div>[[file:test-results.png|right|frame|Grading, assessment, and knowing<ref>http://www.flaticon.com/</ref>]]<br />
<br />
== Introduction ==<br />
<br />
When you see a standard in this course, you might also see the word "Level 1, Level 2, or Level 3" next to it. Level refers to how deeply you need to understand something. Please below for the actual list of learning verbs, Most learning verbs should be defined. Hover your mouse over a word to see the definition. <br />
<br />
The objective level associated with each command term indicates the depth of treatment for a given assessment statement.<ref>http://www.ibo.org/programmes/diploma-programme/curriculum/sciences/computer-science/</ref><br />
<br />
* '''Level 1:''' classify, define, draw, label, list, state<br />
<br />
* ''' Level 2:''' annotate, apply, calculate, describe, design, distinguish, estimate, identify, outline, present, trace<br />
<br />
* '''Level 3:''' analyse, comment, compare, compare and contrast, construct, contrast, deduce, demonstrate, derive, determine, discuss, evaluate, examine, explain, formulate, interpret, investigate, justify, predict, sketch, suggest, to what extent<br />
<br />
== PDF reference == <br />
<br />
* [[Media:Command-terms-IB.pdf | Click here for a PDF reference]]<br />
<br />
== How the IB marks questions == <br />
<br />
If your first two answers are wrong, and your second two answers are correct, you will earn zero marks. <br />
<br />
<br />
Question: State the factors which influence the speed of a network [2]<br />
<br />
Example Answer 1:<br />
# Time of day <- correct<br />
# cable quality <- correct<br />
# if my cat is happy <- incorrect<br />
# If my mom is cooking <- incorrect<br />
For example answer 1, you will get 2 marks. <br />
<br />
Example Answer 2:<br />
# if my cat is happy <- incorrect<br />
# If my mom is cooking <- incorrect<br />
# Time of day <- correct<br />
# cable quality <- correct<br />
For example answer 2, you will get zero marks. <br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=A_deep_dive_into_email&diff=12041A deep dive into email2023-02-20T07:19:01Z<p>Bmackenty: Created page with "I have discovered a wonderful resource about email; [https://explained-from-first-principles.com/email/#preface perhaps the best deep discussion of email I have ever read!] From the concepts section of the article: === Concepts === Before diving into the technical aspects of email, let’s first look at email from the perspective of its users. === Message === The purpose of email is to send messages over the Internet. A message is a recorded piece of information whic..."</p>
<hr />
<div>I have discovered a wonderful resource about email; [https://explained-from-first-principles.com/email/#preface perhaps the best deep discussion of email I have ever read!]<br />
<br />
From the concepts section of the article:<br />
<br />
<br />
=== Concepts ===<br />
Before diving into the technical aspects of email, let’s first look at email from the perspective of its users.<br />
<br />
=== Message ===<br />
The purpose of email is to send messages over the Internet. A message is a recorded piece of information which is delivered asynchronously from a sender to one or several recipients. Asynchronous communication means that a message can be consumed at an arbitrary point after it has been produced, rather than having to interact with the sender concurrently. A message can be transmitted with a physical object, such as a letter, or with a physical signal, such as an acoustic or electromagnetic wave. While humans have delivered messages in the form of objects for millennia with couriers and pigeons, it’s only since the invention of the optical telegraph in the late 18th century and the invention of the electrical telegraph in the middle of the 19th century that we can signal arbitrary messages over long distances. The fundamental principle of communication stayed the same over all those years: You can either start a new conversation or continue an existing one by replying to a previous message.<br />
<br />
=== Mailbox ===<br />
A mailbox is a box for incoming mail (also called an inbox), into which everyone can deposit messages but ideally only the intended recipient can retrieve them. In some countries, the privacy of such messages is legally protected by the secrecy of correspondence.<br />
<br />
=== Provider ===<br />
There are three things that set email apart from the traditional postal system, which is sometimes also referred to as snail mail:<br />
<br />
Email conveys digital data, whereas a letter is a physical item. The former is much more useful for further processing.<br />
Email enables instant global delivery at a marginal cost of zero. The only fee you pay is for your access to the Internet.<br />
Mailboxes for email are provided and operated by companies, which are called mailbox providers. While you could operate your own server since email is an open and decentralized system, this is rarely done in practice for reasons we discuss later on.<br />
Terminology: Earlier versions of this article used the term email service provider (ESP) instead of mailbox provider. Since the former term is also used to refer to email delivery vendors, I decided to replace it with the latter term. Somewhat confusingly, mail service provider (MSP) is a synonym for mailbox provider even though mail and email are used interchangeably in the context of email.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Protocols_and_standards_on_the_web&diff=12040Protocols and standards on the web2023-02-20T07:14:47Z<p>Bmackenty: /* See Also */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
In a digital network, protocols are necessary because they provide a set of rules that govern how devices in the network communicate with each other. Without protocols, it would be difficult for devices to exchange information and data in a meaningful way, because there would be no standard way for them to encode, transmit, and interpret that data.<br />
<br />
Protocols are necessary for a number of reasons, including:<br />
<br />
# Ensuring interoperability: Protocols ensure that devices from different manufacturers and operating systems can communicate with each other, regardless of their underlying hardware and software differences.<br />
# Facilitating error detection and correction: Protocols often include mechanisms for detecting and correcting errors that may occur during data transmission, which helps to ensure the integrity of the data being transmitted.<br />
# Ensuring security: Protocols can include measures to protect against unauthorized access and data tampering, which is important in today's digital world where security is a top concern.<br />
# Allowing for efficient communication: Protocols can optimize the way that devices communicate with each other, helping to minimize delays and maximize the speed at which data can be transmitted.<br />
<br />
Overall, protocols are essential for enabling digital devices to communicate with each other in a reliable, secure, and efficient manner.<br />
<br />
== Difference between standard and protocol ==<br />
<br />
In the context of digital networks, a standard is a document that specifies a set of requirements, specifications, or guidelines that must be followed in order to achieve a certain level of quality or compatibility. Standards are often developed by industry organizations, committees, or other groups, and are intended to be adopted and used by a wide range of individuals or organizations.<br />
<br />
A protocol, on the other hand, is a set of rules or guidelines that define how devices or systems should communicate with each other. Protocols are used to establish a common language or framework for communication, and may include specifications for encoding and decoding messages, transmission and reception of messages, error detection and correction, and other aspects of communication.<br />
<br />
Standards and protocols are often related to each other in the context of digital networks. For example, a standard might specify the physical characteristics of a network, such as the types of cables and connectors that can be used, the maximum distances between devices, and the maximum data rates that can be achieved. A protocol, on the other hand, might define how devices on the network should encode and transmit data, and how they should interpret and respond to data received from other devices.<br />
<br />
In summary, a standard is a set of guidelines or requirements that define how something should be done, while a protocol is a set of rules that define how devices should communicate with each other. In the context of digital networks, standards and protocols work together to ensure that devices can communicate with each other effectively and efficiently.<br />
<br />
<br />
== IP protocol ==<br />
<br />
* What is the IP protocol: [https://www.youtube.com/watch?v=rPoalUa4m8E Click here to watch a video]<br />
<br />
Some characteristics of IP are <ref>http://waksudir.blogspot.com/2015/03/characteristics-of-ip-protocol.html</ref>: <br />
<br />
* Connectionless - No connection with the destination is established before sending data packets.<br />
* Best Effort (unreliable) - Packet delivery is not guaranteed.<br />
* Media Independent - Operation is independent of the medium carrying the data.<br />
<br />
== TCP protocol ==<br />
<br />
* What is the TCP protocol: [https://www.youtube.com/watch?v=4IMc3CaMhyY Click here to watch a video]<br />
* Please watch this part 2: [https://www.youtube.com/watch?v=F27PLin3TV0&index=13&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW part 2 of TCP]<br />
<br />
For a practical hands-on look at open TCP connections on your Mac, type the following command in terminal: <br />
lsof -i | grep -E "(LISTEN|ESTABLISHED)"<br />
<br />
and also: <br />
<br />
nettop (push "c" and "e" and "p" for different views)<br />
<br />
Characteristics of TCP are <ref>http://www.omnisecu.com/tcpip/transmission-control-protocol-tcp.php</ref>: <br />
<br />
* Stream Data transfer: Applications working at the Application Layer transfers a contiguous stream of bytes to the bottom layers. It is the duty of TCP to pack this byte stream to packets, known as TCP segments, which are passed to the IP layer for transmission to the destination device. The application does not have to bother to chop the byte stream data packets.<br />
<br />
* Reliability: The most important feature of TCP is reliable data delivery. In order to provide reliability, TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the Network Layer. TCP assigns a sequence number to each byte transmitted, and expects a positive acknowledgment (ACK) from the receiving TCP layer. If the ACK is not received within a timeout interval, the data is retransmitted. The receiving TCP uses the sequence numbers to rearrange the TCP segments when they arrive out of order, and to eliminate duplicate TCP segments.<br />
<br />
* Flow control: Network devices operate at different data rates because of various factors like CPU and available bandwidth. It may happen a sending device to send data at a much faster rate than the receiver can handle. TCP uses a sliding window mechanism for implementing flow control. The number assigned to a segment is called the sequence number and this numbering is actually done at the byte level. The TCP at the receiving device, when sending an ACK back to the sender, also indicates to the TCP at the sending device, the number of bytes it can receive (beyond the last received TCP segment) without causing serious problems in its internal buffers.<br />
<br />
* Multiplexing: Multitasking achieved through the use of port numbers.<br />
<br />
* Connections: Before application processes can send data by using TCP, the devices must establish a connection. The connections are made between the port numbers of the sender and the receiver devices. A TCP connection identifies the end points involved in the connection. A socket number is a combination of IP address and port number, which can uniquely identify a connection.<br />
<br />
* Full duplex: TCP provides for concurrent data streams in both directions<br />
<br />
=== A deeper dive ===<br />
This video is a little on the dry side, but the level of detail is excellent:<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0s_w8eHu6LQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain the importance of protocols ==<br />
<br />
Without protocols and standards we wouldn't be able to achieve interoperability. That is, if my website used a totally different protocol for storing data (non-html) your browser would not be able to parse it, and you as a user wouldn't be able to understand it.<br />
<br />
Protocols are important because they: <br />
<br />
* Ensure '''data integrity''' (overall completeness, accuracy and consistency of data<ref>https://www.techopedia.com/definition/27858/data-integrity-networking</ref>)<br />
* Regulate '''flow control''' (In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver.<ref>https://en.wikipedia.org/wiki/Flow_control_(data)</ref>)<br />
* Manage '''deadlock''' (A condition that occurs when two processes are each waiting for the other to complete before proceeding <ref>https://www.webopedia.com/TERM/D/deadlock.html</ref>)<br />
* Manage '''congestion''' (Network congestion in data networking is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle.<ref>https://en.wikipedia.org/wiki/Network_congestion</ref>)<br />
* Manage '''error checking''' (techniques that enable reliable delivery of digital data over unreliable communication channels.<ref>https://en.wikipedia.org/wiki/Error_detection_and_correction</ref>)<br />
<br />
== Why standards are important == <br />
<br />
Value of Creating Standards at W3C<ref>https://www.w3.org/standards/about.html</ref> W3C continues to evolve to provide the community a productive environment for creating Web standards. W3C standards:<br />
<br />
* are created following a consensus-based decision process;<br />
* consider aspects of accessibility, privacy, security, and internationalization;<br />
* reflect the views of diverse industries and global stakeholders;<br />
* balance speed, fairness, public accountability, and quality;<br />
* benefit from Royalty-Free patent licensing commitments from participants;<br />
* are stable (and W3C seeks to ensure their persistence at the published URI);<br />
* benefit from wide review from groups inside and outside W3C;<br />
* are downloadable at no cost;<br />
* are maintained in a predictable fashion;<br />
* are strengthened through interoperability testing;<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
* [[A deep dive into email]]<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain the importance of protocols and standards on the web.<br />
* Explain why protocols are necessary.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Internal_Assessment&diff=12039Internal Assessment2023-02-12T14:33:59Z<p>Bmackenty: /* Exemplars */</p>
<hr />
<div>[[file:test-results.png|right|frame|Internal Assessment<ref>http://www.flaticon.com/</ref>]]<br />
<br />
== Introduction ==<br />
I use this excellent summary from compscihub.net<ref>https://ib.compscihub.net/internal-assessment/overview</ref><br />
<br />
The Internal Assessment component (IA) accounts for 30% of the Standard Level grade and 20% of the Higher Level Grade. There are a maximum of 34 marks to be earned.<br />
<br />
The IA consists out of 5 parts and can be no longer than 2000 words (excluding any appendixes & footnotes/bibliographies). The video can be no longer than 7 minutes.<br />
<br />
<br />
* Criterion A – Planning – 6 marks<br />
* Criterion B – Record of Tasks (RoT) and Design – 6 marks<br />
* Criterion C – Development – 12 marks<br />
* Criterion D – Functionality (Video) – 4 marks<br />
* Criterion E – Evaluation – 6 marks<br />
<br />
== Helpful links == <br />
<br />
* Please [https://docs.google.com/document/d/1HaLijvMZX0gWJgEcJt4NlIUmPxF4raN-UdZAvHUI31M/edit click here for a checklist to help you stay organized].<br />
* Please [[:media:IA assessment criteria.pdf|Click here to see the IA assessment criteria]]<br />
* [[:File:Forms.zip| Your solution must be formatted precisely. Click this link for a compressed folder with the templates.]]<br />
** Please make sure you include section b AND section b record of tasks - these should be two separate files.<br />
** Please make sure your code is in the '''Product''' folder in plaintext so examiners can copy/paste code as needed. <br />
** Please watch this video for instructions to format your project: https://youtu.be/ezKDs4SWwWc<br />
<br />
== Exemplars == <br />
Exemplars are available from your teacher<br />
<br />
== The Solution ==<br />
<br />
The requirement of the internal assessment is to develop a solution for a specified client to a specified problem or an unanswered question.<br />
<br />
== Example of previous IA topics == <br />
<br />
* Interactive fiction creator<br />
* Personal budget tool <br />
* A web-based program that finds the best price for a food item in Warsaw. Limit food choices to 25 items. <br />
* A web-based program to manage exercise goals, exercise targets<br />
* a web based php text-based game<br />
* A locally-installed python script that perfroms network analysis tool that helps users clearly understand what might be wrong with a network connection application snooper (little snitch)<br />
* Arranging meeting time with counselors using google calendar API<br />
* A web-based program to automatically creates brackets for clubs and team events<br />
* A web-based program that makes scheduling free time with a teacher easier. <br />
* A google chrome extension that tracks how much time is wasted by a user<br />
* A web-based program to help students understand what school they might be accepted to with their GPA<br />
* A game to help users who are using assistive technologies <br />
* An event management system<br />
* tool to allocate billable hours<br />
* Application to analyze facial type <br />
* Sorting program for shoes<br />
* Application to help me with habits<br />
* A program for roomate best-fit algorithm<br />
* Application to help teachers remember students<br />
* An inventory management system<br />
* Application to make a computer science search engine <br />
* Application to help people manage event<br />
* Application to rationally play hearthstone<br />
* Application for facial recognition to make eye shadow<br />
<br />
== Key terms ==<br />
* The term “solution” refers to all the work submitted by the student for the internal assessment; the term “product” refers to the completed software only. The product is a subset of the solution.<br />
* The terms “developer” and “student” are synonymous.<br />
* The term “client” refers to the person for whom the product is being developed. <br />
* The term “adviser” refers to a third party the student must identify to assist him or her in the development of the product.<br />
<br />
== 3 scenarios in developing a product ==<br />
<br />
# The student is developing the product for a third party who is the client and also acts as the adviser.<br />
# The student is developing the product for a third party who is the client. Another person acts as the adviser.<br />
# The student is the client (developing the product for himself or herself). An appropriate adult must act as the adviser.<br />
<br />
== Requirements of the solution == <br />
<br />
* [[The solution cover page | a cover page that follows the prescribed format]]<br />
* [[The solution product | a product]]<br />
* [[The solution documentation | supporting documentation (word limit 2,000 words)]]<br />
<br />
=== Word count ===<br />
Bullet list of success criteria is not included in overall word count. However, if bullet list contains an extended writing, then that text will be included in word count.<br />
<br /><br />
[[File:Word count.png|400px]]<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]<br />
[[Category:internal assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Vector&diff=12031Vector2023-02-05T19:49:46Z<p>Bmackenty: Created page with "In computer science, a vector is a data structure that represents an ordered, dynamic array of elements. It's similar to an array, but it has the advantage of being able to dynamically resize its size as elements are added or removed. A vector typically stores elements of the same data type, and provides operations to add, remove, or access elements. The size of a vector can change as elements are inserted or deleted, and it automatically reallocates memory as needed. T..."</p>
<hr />
<div>In computer science, a vector is a data structure that represents an ordered, dynamic array of elements. It's similar to an array, but it has the advantage of being able to dynamically resize its size as elements are added or removed.<br />
<br />
A vector typically stores elements of the same data type, and provides operations to add, remove, or access elements. The size of a vector can change as elements are inserted or deleted, and it automatically reallocates memory as needed. This makes it a useful data structure for representing collections of objects or values that may change in size.<br />
<br />
Some common operations provided by a vector data structure include:<br />
<br />
* Push back: Add an element to the end of the vector.<br />
* Pop back: Remove the last element from the vector.<br />
* Access: Retrieve an element from the vector by index.<br />
* Insert: Add an element to the vector at a specific position.<br />
* Delete: Remove an element from the vector by index.<br />
<br />
Vectors are widely used in computer science, and are an important data structure in many programming languages, including C++, Python, and Rust, among others. They provide a convenient and flexible way to store and manipulate sequences of elements, and are often used in a variety of algorithms and data structures.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Abstract_data_structures&diff=12030Abstract data structures2023-02-05T19:48:18Z<p>Bmackenty: /* NOT Assessed by the IB, but you should know them */</p>
<hr />
<div>[[File:Square-target-interface-symbol.png|right|frame|Abstract data types<ref>http://www.flaticon.com/</ref>]]<br />
<br />
In computer science, an abstract data type (ADT) is a mathematical model for data types where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. This contrasts with data structures, which are concrete representations of data, and are the point of view of an implementer, not a user.<br />
<br />
Formally, an ADT may be defined as a "class of objects whose logical behavior is defined by a set of values and a set of operations"; this is analogous to an algebraic structure in mathematics. What is meant by "behavior" varies by author, with the two main types of formal specifications for behavior being axiomatic (algebraic) specification and an abstract model; these correspond to axiomatic semantics and operational semantics of an abstract machine, respectively. Some authors also include the computational complexity ("cost"), both in terms of time (for computing operations) and space (for representing values).<ref>https://en.wikipedia.org/wiki/Abstract_data_type</ref><br />
<br />
The reason we use abstract structures is because they efficiently use memory based on the design of the data stored in them. With very large amounts of data or very frequently changing data, the data structure can make a huge difference in the efficiency (run time) of your computer program. <br />
<br />
In more common language, an abstract data structure is just some '''arrangement of data that we've built into an orderly arrangement.'''<br />
<br />
== A perfectly lovely overview == <br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/DuDz6B4cqVc" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== Some types of abstract data structures ==<br />
<br />
=== Assessed by the IB ===<br />
# [[static and dynamic data structure]]<br />
<br />
# [[arrays]]<br />
# [[two-dimensional arrays]]<br />
# [[stack]]<br />
# [[queue]]<br />
# [[linked list]]<br />
# [[tree]]<br />
# [[binary tree]]<br />
# [[collections]]<br />
# [[recursion]]<br />
<br />
=== NOT Assessed by the IB, but you should know them ===<br />
<br />
# [[lists]]<br />
# [[dictionaries]]<br />
# [[sets]]<br />
# [[tuple]]<br />
# [[enum]]<br />
# [[struct]]<br />
# [[char]]<br />
# [[vector]]<br />
<br />
== Basic operations of data structures ==<br />
<br />
I found this excellent slide from Simon Allardice. <br />
<br />
[[File:Basic operations of arrays.png]]<br />
<br />
== Comparison of different data structures == <br />
<br />
<br />
<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
| '''Data Structure''' || '''Strengths''' || '''Weaknesses'''<br />
|-<br />
| '''[[arrays]]''' || Inserting and deleting elements, iterating through the collection || Sorting and searching, Inserting and deleting - especially if you are inserting and deleting at the beginning or the end of the array<br />
|-<br />
| '''[[linked list]]''' || direct indexing, Easy to create and use || direct access, searching and sorting<br />
|-<br />
| '''[[stack]] and [[queue]]''' || designed for LIFO / FIFO || direct access, searching and sorting<br />
|-<br />
| '''[[binary tree]]''' || speed of insertion and deletion, speed of access, maintaining sorted order || some overhead<br />
|-<br />
|}<br />
<br />
<br />
* Fixed structures are faster / smaller<br />
* When you are considering if you should use an abstract data structure, you should ask yourself: '''what holds the most data and what holds the most frequently changed data'''?<br />
<br />
== Comparison of static vs dynamic data structures == <br />
This comparison is used from [[IB Computer Science textbook | our computer science textbook]].<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
| '''Static data structure''' || '''Dynamic data structure'''<br />
|-<br />
| Inefficient as memory is allocated that may not be needed.|| Efficient as the amount of memory varies as needed.<br />
|-<br />
| Fast access to each element of data as the memory location is fixed when the program is written. || Slower access to each element as the memory location is allocated at run-time.<br />
|-<br />
| Memory addresses allocated will be contiguous so quicker to access. || Memory addresses allocated may be fragmented so slower to access.<br />
|-<br />
|Structures are a fixed size, making them more predictable to work with. For example, they can contain a header. || Structures vary in size so there needs to be a mechanism for knowing the size of the current structure.<br />
|-<br />
| The relationship between different elements of data does not change. || The relationship between different elements of data will change as the program is run.<br />
|-<br />
|}<br />
<br />
== Choosing which data structure to use ==<br />
<br />
This graphic is used with tremendous gratitude from Dartford Grammar School Computer Science Department.<br />
<br />
[[File:Choosing a data type flow chart.png]]<br />
<br />
== Standards ==<br />
<br />
* Identify a situation that requires the use of recursive thinking.<br />
* Identify recursive thinking in a specified problem solution.<br />
* Trace a recursive algorithm to express a solution to a problem.<br />
<br />
* Describe the characteristics of a two- dimensional array.<br />
* Construct algorithms using two- dimensional arrays.<br />
* Describe the characteristics and applications of a stack.<br />
<br />
* Construct algorithms using the access methods of a stack.<br />
* Describe the characteristics and applications of a queue.<br />
* Construct algorithms using the access methods of a queue.<br />
* Explain the use of arrays as static stacks and queues.<br />
* Describe the features and characteristics of a dynamic data structure.<br />
* Describe how linked lists operate logically.<br />
* Sketch linked lists (single, double and circular).<br />
* Describe the characteristics and applications of a collection.<br />
* Construct algorithms using the access methods of a collection.<br />
* Discuss the need for sub-programmes and collections within programmed solutions.<br />
* Construct algorithms using pre-defined sub-programmes, one-dimensional arrays and/or collections.<br />
<br />
* Describe how trees operate logically (both binary and non-binary).<br />
* Define the terms: parent, left-child, right-child, subtree, root and leaf.<br />
* State the result of inorder, postorder and preorder tree traversal.<br />
* Sketch binary trees.<br />
* Define the term dynamic data structure.<br />
* Compare the use of static and dynamic data structures.<br />
* Suggest a suitable structure for a given situation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:abstract data structures]]<br />
[[Category:HL]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Unsigned_integers&diff=12029Unsigned integers2023-02-05T19:32:22Z<p>Bmackenty: Created page with "Unsigned integers are a type of integer data type that can only represent non-negative whole numbers (positive numbers and zero). They are represented using a fixed number of bits, typically 8, 16, 32, or 64 bits, depending on the computer architecture and the programming language. Unlike signed integers, unsigned integers do not use a sign bit to indicate the sign of the integer value. Instead, all bits are used to represent the magnitude of the integer value. This all..."</p>
<hr />
<div>Unsigned integers are a type of integer data type that can only represent non-negative whole numbers (positive numbers and zero). They are represented using a fixed number of bits, typically 8, 16, 32, or 64 bits, depending on the computer architecture and the programming language.<br />
<br />
Unlike signed integers, unsigned integers do not use a sign bit to indicate the sign of the integer value. Instead, all bits are used to represent the magnitude of the integer value. This allows unsigned integers to represent a wider range of positive values than signed integers, as they can represent values between 0 to 2^n - 1, where n is the number of bits used to represent the integer.<br />
<br />
In programming languages, unsigned integers are usually represented using data types such as "unsigned int" or "unsigned short int". The size of the data type determines the number of bits used to represent the integer and the range of values that can be represented.<br />
<br />
It's important to note that unsigned integers are typically used when it's known that the values will always be positive and there is a need for a wider range of values than what is possible with signed integers. In other cases, signed integers may be a more appropriate choice.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Signed_integers&diff=12028Signed integers2023-02-05T19:31:17Z<p>Bmackenty: Created page with "Signed integers are a type of integer data type that can represent both positive and negative whole numbers. They are represented using a fixed number of bits, typically 8, 16, 32, or 64 bits, depending on the computer architecture and the programming language. The most significant bit (MSB) is used to indicate the sign of the integer value, with a value of 0 representing a positive number and a value of 1 representing a negative number. The remaining bits are used to r..."</p>
<hr />
<div>Signed integers are a type of integer data type that can represent both positive and negative whole numbers. They are represented using a fixed number of bits, typically 8, 16, 32, or 64 bits, depending on the computer architecture and the programming language.<br />
<br />
The most significant bit (MSB) is used to indicate the sign of the integer value, with a value of 0 representing a positive number and a value of 1 representing a negative number. The remaining bits are used to represent the magnitude of the integer value.<br />
<br />
For example, in a 8-bit signed integer, the first bit is used as the sign bit, while the remaining 7 bits are used to represent the magnitude of the value. This allows signed integers to represent a range of values between -2^(n-1) to 2^(n-1) - 1, where n is the number of bits used to represent the integer.<br />
<br />
In programming languages, signed integers are usually represented using data types such as "int" or "short int". The size of the data type determines the number of bits used to represent the integer and the range of values that can be represented.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12027Programming2023-02-05T19:31:10Z<p>Bmackenty: /* Primitive data types */</p>
<hr />
<div>[[file:computation.png|right|frame|Programming<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Introduction to programming =<br />
<br />
Programming is the process of planning, writing, executing and testing instructions for a computer system.<br />
<br />
* [[What is a programming language?]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Fundamental and compound operations]]<br />
** [[Higher level and lower level languages]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Interpreted and compiled languages]]<br />
<br />
<br />
== What is the best programming language? == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/RfWGJS7rckk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Learning to Program ==<br />
* [[Inputs and outputs]]<br />
* [[Variables]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Functions]]<br />
* [[Data types]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Iteration]] <br />
* [[Conditionals | Selection]]<br />
<br />
* [[Operators]]<br />
<br />
== Primitive data types ==<br />
In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data. Most programming languages support various types of data, for example: real, integer or Boolean.<ref>https://en.wikipedia.org/wiki/Data_type</ref><br />
<br />
The list below describes some of the more common primitive data types<br />
<br />
* [[Scalar type]]<br />
* [[Boolean]]<br />
* [[Int|Integers]]<br />
** [[Signed integers]]<br />
** [[Unsigned integers]]<br />
* [[Float]]<br />
* [[Char]]<br />
* [[String]]<br />
<br />
== Common data structures ==<br />
<br />
A data structure is just some organization of data that we've built into an orderly arrangement. The organization and arrangement of data can make our programs run much more efficiently. Each data structure has advantages and disadvantages. There are common data structures and abstract data structures. In general abstract data structures are advanced and more specific to a specific task. <br />
<br />
=== Common data structures which are assessed by the IB ===<br />
<br />
* [[Arrays]]<br />
* [[two-dimensional arrays]]<br />
* [[Collections]]<br />
* [[Linked list]]<br />
* [[Objects]] <br />
<br />
=== Common data structures which are not assessed by the IB ===<br />
<br />
* [[Lists]]<br />
* [[Dictionaries]]<br />
* [[Sets]]<br />
* [[Tuple]]<br />
<br />
=== Abstract data structures which are assessed by the IB ===<br />
For a deeper understanding of abstract data structures, please see this page: [[Abstract data structures]]<br />
* [[stack]]<br />
* [[queue]]<br />
* [[linked list]]<br />
* [[tree]]<br />
* [[binary tree]]<br />
<br />
= Python = <br />
<br />
* Please visit our [[python]] programming page<br />
<br />
= Object Oriented Programming =<br />
<br />
* [[Object-Oriented Programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Working with files]]<br />
* Working with [[Databases|databases]]<br />
* [[GUI|Graphical User Interfaces]]<br />
* [[Hashing]]<br />
* [[Blockchain]]<br />
* [[Genetic Algorithms]]<br />
* [[Machine learning]]<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:programming]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Int&diff=12026Int2023-02-05T19:30:33Z<p>Bmackenty: /* Signed and unsigned */</p>
<hr />
<div>[[file:arrows.png|right|frame|Programming basics<ref>http://www.flaticon.com/</ref>]]<br />
<br />
An int (integer) is a positive or negative whole numbers with no decimal point.<ref>https://www.tutorialspoint.com/python/python_numbers.htm</ref><br />
<br />
== Difference between an int and a float == <br />
<br />
Integers and floats are two different kinds of numerical data. An integer (more commonly called an int) is a number without a decimal point. A float is a floating-point number, which means it is a number that has a decimal place. Floats are used when more precision is needed.<ref>https://processing.org/examples/integersfloats.html</ref><br />
<br />
== Example ==<br />
<br />
In PHP: <br />
You will remember PHP isn't a strictly typed language (although it can be set to be). <br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
$a = 1234; // decimal number<br />
$a = -1234; // a negative number<br />
?><br />
</syntaxhighlight><br />
<br />
In Python:<br />
<syntaxhighlight lang="python3"><br />
# decimal number:<br />
a = 1234<br />
# a negative number:<br />
a = -1234 <br />
</syntaxhighlight><br />
<br />
In Javascript:<br />
<syntaxhighlight lang="javascript"><br />
// decimal number:<br />
var a = 1234; <br />
// a negative number:<br />
var a = -1234; <br />
</syntaxhighlight><br />
<br />
== Standards == <br />
<br />
* Define the terms: variable, constant, operator, object.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:computational thinking]]<br />
[[Category:programming]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12025Programming2023-02-05T19:29:33Z<p>Bmackenty: /* Primitive data types */</p>
<hr />
<div>[[file:computation.png|right|frame|Programming<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Introduction to programming =<br />
<br />
Programming is the process of planning, writing, executing and testing instructions for a computer system.<br />
<br />
* [[What is a programming language?]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Fundamental and compound operations]]<br />
** [[Higher level and lower level languages]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Interpreted and compiled languages]]<br />
<br />
<br />
== What is the best programming language? == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/RfWGJS7rckk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Learning to Program ==<br />
* [[Inputs and outputs]]<br />
* [[Variables]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Functions]]<br />
* [[Data types]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Iteration]] <br />
* [[Conditionals | Selection]]<br />
<br />
* [[Operators]]<br />
<br />
== Primitive data types ==<br />
In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data. Most programming languages support various types of data, for example: real, integer or Boolean.<ref>https://en.wikipedia.org/wiki/Data_type</ref><br />
<br />
The list below describes some of the more common primitive data types<br />
<br />
* [[Scalar type]]<br />
* [[Boolean]]<br />
* [[Int|Integers]]<br />
* [[Float]]<br />
* [[Char]]<br />
* [[String]]<br />
<br />
== Common data structures ==<br />
<br />
A data structure is just some organization of data that we've built into an orderly arrangement. The organization and arrangement of data can make our programs run much more efficiently. Each data structure has advantages and disadvantages. There are common data structures and abstract data structures. In general abstract data structures are advanced and more specific to a specific task. <br />
<br />
=== Common data structures which are assessed by the IB ===<br />
<br />
* [[Arrays]]<br />
* [[two-dimensional arrays]]<br />
* [[Collections]]<br />
* [[Linked list]]<br />
* [[Objects]] <br />
<br />
=== Common data structures which are not assessed by the IB ===<br />
<br />
* [[Lists]]<br />
* [[Dictionaries]]<br />
* [[Sets]]<br />
* [[Tuple]]<br />
<br />
=== Abstract data structures which are assessed by the IB ===<br />
For a deeper understanding of abstract data structures, please see this page: [[Abstract data structures]]<br />
* [[stack]]<br />
* [[queue]]<br />
* [[linked list]]<br />
* [[tree]]<br />
* [[binary tree]]<br />
<br />
= Python = <br />
<br />
* Please visit our [[python]] programming page<br />
<br />
= Object Oriented Programming =<br />
<br />
* [[Object-Oriented Programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Working with files]]<br />
* Working with [[Databases|databases]]<br />
* [[GUI|Graphical User Interfaces]]<br />
* [[Hashing]]<br />
* [[Blockchain]]<br />
* [[Genetic Algorithms]]<br />
* [[Machine learning]]<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:programming]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12024Programming2023-02-05T19:29:20Z<p>Bmackenty: /* Primitive data types */</p>
<hr />
<div>[[file:computation.png|right|frame|Programming<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Introduction to programming =<br />
<br />
Programming is the process of planning, writing, executing and testing instructions for a computer system.<br />
<br />
* [[What is a programming language?]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Fundamental and compound operations]]<br />
** [[Higher level and lower level languages]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Interpreted and compiled languages]]<br />
<br />
<br />
== What is the best programming language? == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/RfWGJS7rckk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Learning to Program ==<br />
* [[Inputs and outputs]]<br />
* [[Variables]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Functions]]<br />
* [[Data types]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Iteration]] <br />
* [[Conditionals | Selection]]<br />
<br />
* [[Operators]]<br />
<br />
== Primitive data types ==<br />
In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data. Most programming languages support various types of data, for example: real, integer or Boolean.<ref>https://en.wikipedia.org/wiki/Data_type</ref><br />
<br />
The list below describes some of the more common primitive data types<br />
<br />
* [[Scalar type]]<br />
* [[Boolean]]<br />
* [[Integers|Int]]<br />
* [[Float]]<br />
* [[Char]]<br />
* [[String]]<br />
<br />
== Common data structures ==<br />
<br />
A data structure is just some organization of data that we've built into an orderly arrangement. The organization and arrangement of data can make our programs run much more efficiently. Each data structure has advantages and disadvantages. There are common data structures and abstract data structures. In general abstract data structures are advanced and more specific to a specific task. <br />
<br />
=== Common data structures which are assessed by the IB ===<br />
<br />
* [[Arrays]]<br />
* [[two-dimensional arrays]]<br />
* [[Collections]]<br />
* [[Linked list]]<br />
* [[Objects]] <br />
<br />
=== Common data structures which are not assessed by the IB ===<br />
<br />
* [[Lists]]<br />
* [[Dictionaries]]<br />
* [[Sets]]<br />
* [[Tuple]]<br />
<br />
=== Abstract data structures which are assessed by the IB ===<br />
For a deeper understanding of abstract data structures, please see this page: [[Abstract data structures]]<br />
* [[stack]]<br />
* [[queue]]<br />
* [[linked list]]<br />
* [[tree]]<br />
* [[binary tree]]<br />
<br />
= Python = <br />
<br />
* Please visit our [[python]] programming page<br />
<br />
= Object Oriented Programming =<br />
<br />
* [[Object-Oriented Programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Working with files]]<br />
* Working with [[Databases|databases]]<br />
* [[GUI|Graphical User Interfaces]]<br />
* [[Hashing]]<br />
* [[Blockchain]]<br />
* [[Genetic Algorithms]]<br />
* [[Machine learning]]<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:programming]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Scalar_type&diff=12023Scalar type2023-02-05T19:28:25Z<p>Bmackenty: Created page with "Scalar type in programming refers to a data type that can represent a single value, as opposed to a more complex data structure such as an array or object. Scalar types can include primitive data types such as integers, floating-point numbers, and strings, among others. In many programming languages, scalar types are also referred to as simple or atomic data types. A scalar type is a general term used to describe a data type that can represent a single value. A primitiv..."</p>
<hr />
<div>Scalar type in programming refers to a data type that can represent a single value, as opposed to a more complex data structure such as an array or object. Scalar types can include primitive data types such as integers, floating-point numbers, and strings, among others. In many programming languages, scalar types are also referred to as simple or atomic data types.<br />
<br />
A scalar type is a general term used to describe a data type that can represent a single value. A primitive type is a specific type of scalar type that is built into the programming language and provides the most basic operations.<br />
<br />
Primitive types are the building blocks of more complex data structures and include data types like integers, floating-point numbers, booleans, and strings, among others. They are often used to represent simple values such as numbers or characters and are generally considered the simplest and most basic data types.<br />
<br />
In contrast, scalar types can include not only primitive types but also other data types like enumerated types or user-defined types that can represent single values.<br />
<br />
In summary, all primitive types are scalar types, but not all scalar types are primitive types.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12022Programming2023-02-05T19:27:34Z<p>Bmackenty: /* Primitive data types */</p>
<hr />
<div>[[file:computation.png|right|frame|Programming<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Introduction to programming =<br />
<br />
Programming is the process of planning, writing, executing and testing instructions for a computer system.<br />
<br />
* [[What is a programming language?]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Fundamental and compound operations]]<br />
** [[Higher level and lower level languages]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
** [[Interpreted and compiled languages]]<br />
<br />
<br />
== What is the best programming language? == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/RfWGJS7rckk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Learning to Program ==<br />
* [[Inputs and outputs]]<br />
* [[Variables]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Functions]]<br />
* [[Data types]] [[File:Answer.png|This topic has formative assessment as part of the article.]]<ref name="formative">Icons made by https://www.flaticon.com/authors/eucalyp from https://www.flaticon.com/ </ref><br />
* [[Iteration]] <br />
* [[Conditionals | Selection]]<br />
<br />
* [[Operators]]<br />
<br />
== Primitive data types ==<br />
In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data. Most programming languages support various types of data, for example: real, integer or Boolean.<ref>https://en.wikipedia.org/wiki/Data_type</ref><br />
<br />
The list below describes some of the more common primitive data types<br />
<br />
* [[Scalar type]]<br />
* [[Boolean]]<br />
* [[Int]]<br />
* [[Float]]<br />
* [[Char]]<br />
* [[String]]<br />
<br />
== Common data structures ==<br />
<br />
A data structure is just some organization of data that we've built into an orderly arrangement. The organization and arrangement of data can make our programs run much more efficiently. Each data structure has advantages and disadvantages. There are common data structures and abstract data structures. In general abstract data structures are advanced and more specific to a specific task. <br />
<br />
=== Common data structures which are assessed by the IB ===<br />
<br />
* [[Arrays]]<br />
* [[two-dimensional arrays]]<br />
* [[Collections]]<br />
* [[Linked list]]<br />
* [[Objects]] <br />
<br />
=== Common data structures which are not assessed by the IB ===<br />
<br />
* [[Lists]]<br />
* [[Dictionaries]]<br />
* [[Sets]]<br />
* [[Tuple]]<br />
<br />
=== Abstract data structures which are assessed by the IB ===<br />
For a deeper understanding of abstract data structures, please see this page: [[Abstract data structures]]<br />
* [[stack]]<br />
* [[queue]]<br />
* [[linked list]]<br />
* [[tree]]<br />
* [[binary tree]]<br />
<br />
= Python = <br />
<br />
* Please visit our [[python]] programming page<br />
<br />
= Object Oriented Programming =<br />
<br />
* [[Object-Oriented Programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Working with files]]<br />
* Working with [[Databases|databases]]<br />
* [[GUI|Graphical User Interfaces]]<br />
* [[Hashing]]<br />
* [[Blockchain]]<br />
* [[Genetic Algorithms]]<br />
* [[Machine learning]]<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:programming]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Struct&diff=12021Struct2023-02-04T08:11:38Z<p>Bmackenty: /* References */</p>
<hr />
<div>A "struct" is a composite data type that groups together zero or more values with different data types into a single unit. It is used to represent a single object made up of multiple pieces of data, such as a point in 2D space (x, y), or a record in a database (name, address, age, etc.). Each piece of data within a struct is called a "field". Structs can be found in many programming languages, including C, C++, and Rust. They provide a way to bundle related data into a single entity, making it easier to pass data around as a single argument, store it in a collection, or return it as a single result from a function.<ref>ChatGPT</ref><br />
<br />
Here are two examples of using structs in Rust:<br />
<br />
A struct representing a point in 2D space:<br />
<br />
<syntaxhighlight lang="rust"><br />
struct Point {<br />
x: f32,<br />
y: f32,<br />
}<br />
</syntaxhighlight><br />
<br />
A struct representing a person's information:<br />
<syntaxhighlight lang="rust"><br />
struct Person {<br />
name: String,<br />
age: u8,<br />
address: String,<br />
}<br />
</syntaxhighlight><br />
<br />
== References ==</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Struct&diff=12020Struct2023-02-04T08:11:32Z<p>Bmackenty: Created page with "A "struct" is a composite data type that groups together zero or more values with different data types into a single unit. It is used to represent a single object made up of multiple pieces of data, such as a point in 2D space (x, y), or a record in a database (name, address, age, etc.). Each piece of data within a struct is called a "field". Structs can be found in many programming languages, including C, C++, and Rust. They provide a way to bundle related data into a s..."</p>
<hr />
<div>A "struct" is a composite data type that groups together zero or more values with different data types into a single unit. It is used to represent a single object made up of multiple pieces of data, such as a point in 2D space (x, y), or a record in a database (name, address, age, etc.). Each piece of data within a struct is called a "field". Structs can be found in many programming languages, including C, C++, and Rust. They provide a way to bundle related data into a single entity, making it easier to pass data around as a single argument, store it in a collection, or return it as a single result from a function.<ref>ChatGPT</ref><br />
<br />
Here are two examples of using structs in Rust:<br />
<br />
A struct representing a point in 2D space:<br />
<br />
<syntaxhighlight lang="rust"><br />
struct Point {<br />
x: f32,<br />
y: f32,<br />
}<br />
</syntaxhighlight><br />
<br />
A struct representing a person's information:<br />
<syntaxhighlight lang="rust"><br />
struct Person {<br />
name: String,<br />
age: u8,<br />
address: String,<br />
}<br />
</syntaxhighlight><br />
<br />
== References ==<br />
</ref></div>Bmackentyhttps://computersciencewiki.org/index.php?title=Enum&diff=12019Enum2023-02-04T08:08:55Z<p>Bmackenty: </p>
<hr />
<div>An "enum" (short for "enumerated type") is a data type that consists of a set of named values. It is used to represent a set of distinct, named values in a program, making it easier to read, maintain, and avoid bugs. For example, in a program that tracks the days of the week, an enum could be used to represent the days of the week instead of using raw integers or strings. Enums can be found in many programming languages, including Rust, C++, and C#.<ref>ChatGPT</ref><br />
<br />
<br />
In computer programming, an enumerated type is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language. An enumerated type has values that are different from each other, and that can be compared and assigned, but are not specified by the programmer as having any particular concrete representation in the computer's memory; compilers and interpreters can represent them arbitrarily.<ref>https://en.wikipedia.org/wiki/Enumerated_type</ref><br />
<br />
<br />
<syntaxhighlight lang="rust"><br />
enum DayOfWeek {<br />
Monday,<br />
Tuesday,<br />
Wednesday,<br />
Thursday,<br />
Friday,<br />
Saturday,<br />
Sunday,<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
<br />
== References ==</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Enum&diff=12018Enum2023-02-04T08:07:52Z<p>Bmackenty: /* References */</p>
<hr />
<div>An "enum" (short for "enumerated type") is a data type that consists of a set of named values. It is used to represent a set of distinct, named values in a program, making it easier to read, maintain, and avoid bugs. For example, in a program that tracks the days of the week, an enum could be used to represent the days of the week instead of using raw integers or strings. Enums can be found in many programming languages, including Rust, C++, and C#.<ref>ChatGPT</ref><br />
<br />
<br />
In computer programming, an enumerated type is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language. An enumerated type has values that are different from each other, and that can be compared and assigned, but are not specified by the programmer as having any particular concrete representation in the computer's memory; compilers and interpreters can represent them arbitrarily.<ref>https://en.wikipedia.org/wiki/Enumerated_type</ref><br />
<br />
<br />
<syntaxhighlight><br />
enum DayOfWeek {<br />
Monday,<br />
Tuesday,<br />
Wednesday,<br />
Thursday,<br />
Friday,<br />
Saturday,<br />
Sunday,<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
<br />
== References ==</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Enum&diff=12017Enum2023-02-04T08:07:42Z<p>Bmackenty: Created page with "An "enum" (short for "enumerated type") is a data type that consists of a set of named values. It is used to represent a set of distinct, named values in a program, making it easier to read, maintain, and avoid bugs. For example, in a program that tracks the days of the week, an enum could be used to represent the days of the week instead of using raw integers or strings. Enums can be found in many programming languages, including Rust, C++, and C#.<ref>ChatGPT</ref> I..."</p>
<hr />
<div>An "enum" (short for "enumerated type") is a data type that consists of a set of named values. It is used to represent a set of distinct, named values in a program, making it easier to read, maintain, and avoid bugs. For example, in a program that tracks the days of the week, an enum could be used to represent the days of the week instead of using raw integers or strings. Enums can be found in many programming languages, including Rust, C++, and C#.<ref>ChatGPT</ref><br />
<br />
<br />
In computer programming, an enumerated type is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language. An enumerated type has values that are different from each other, and that can be compared and assigned, but are not specified by the programmer as having any particular concrete representation in the computer's memory; compilers and interpreters can represent them arbitrarily.<ref>https://en.wikipedia.org/wiki/Enumerated_type</ref><br />
<br />
<br />
<syntaxhighlight><br />
enum DayOfWeek {<br />
Monday,<br />
Tuesday,<br />
Wednesday,<br />
Thursday,<br />
Friday,<br />
Saturday,<br />
Sunday,<br />
}<br />
<br />
</syntaxhighlight><br />
<br />
<br />
== References ==<br />
</references></div>Bmackentyhttps://computersciencewiki.org/index.php?title=Abstract_data_structures&diff=12016Abstract data structures2023-02-04T08:03:04Z<p>Bmackenty: /* NOT Assessed by the IB, but you should know them */</p>
<hr />
<div>[[File:Square-target-interface-symbol.png|right|frame|Abstract data types<ref>http://www.flaticon.com/</ref>]]<br />
<br />
In computer science, an abstract data type (ADT) is a mathematical model for data types where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. This contrasts with data structures, which are concrete representations of data, and are the point of view of an implementer, not a user.<br />
<br />
Formally, an ADT may be defined as a "class of objects whose logical behavior is defined by a set of values and a set of operations"; this is analogous to an algebraic structure in mathematics. What is meant by "behavior" varies by author, with the two main types of formal specifications for behavior being axiomatic (algebraic) specification and an abstract model; these correspond to axiomatic semantics and operational semantics of an abstract machine, respectively. Some authors also include the computational complexity ("cost"), both in terms of time (for computing operations) and space (for representing values).<ref>https://en.wikipedia.org/wiki/Abstract_data_type</ref><br />
<br />
The reason we use abstract structures is because they efficiently use memory based on the design of the data stored in them. With very large amounts of data or very frequently changing data, the data structure can make a huge difference in the efficiency (run time) of your computer program. <br />
<br />
In more common language, an abstract data structure is just some '''arrangement of data that we've built into an orderly arrangement.'''<br />
<br />
== A perfectly lovely overview == <br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/DuDz6B4cqVc" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== Some types of abstract data structures ==<br />
<br />
=== Assessed by the IB ===<br />
# [[static and dynamic data structure]]<br />
<br />
# [[arrays]]<br />
# [[two-dimensional arrays]]<br />
# [[stack]]<br />
# [[queue]]<br />
# [[linked list]]<br />
# [[tree]]<br />
# [[binary tree]]<br />
# [[collections]]<br />
# [[recursion]]<br />
<br />
=== NOT Assessed by the IB, but you should know them ===<br />
<br />
# [[lists]]<br />
# [[dictionaries]]<br />
# [[sets]]<br />
# [[tuple]]<br />
# [[enum]]<br />
# [[struct]]<br />
# [[char]]<br />
<br />
== Basic operations of data structures ==<br />
<br />
I found this excellent slide from Simon Allardice. <br />
<br />
[[File:Basic operations of arrays.png]]<br />
<br />
== Comparison of different data structures == <br />
<br />
<br />
<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
| '''Data Structure''' || '''Strengths''' || '''Weaknesses'''<br />
|-<br />
| '''[[arrays]]''' || Inserting and deleting elements, iterating through the collection || Sorting and searching, Inserting and deleting - especially if you are inserting and deleting at the beginning or the end of the array<br />
|-<br />
| '''[[linked list]]''' || direct indexing, Easy to create and use || direct access, searching and sorting<br />
|-<br />
| '''[[stack]] and [[queue]]''' || designed for LIFO / FIFO || direct access, searching and sorting<br />
|-<br />
| '''[[binary tree]]''' || speed of insertion and deletion, speed of access, maintaining sorted order || some overhead<br />
|-<br />
|}<br />
<br />
<br />
* Fixed structures are faster / smaller<br />
* When you are considering if you should use an abstract data structure, you should ask yourself: '''what holds the most data and what holds the most frequently changed data'''?<br />
<br />
== Comparison of static vs dynamic data structures == <br />
This comparison is used from [[IB Computer Science textbook | our computer science textbook]].<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
| '''Static data structure''' || '''Dynamic data structure'''<br />
|-<br />
| Inefficient as memory is allocated that may not be needed.|| Efficient as the amount of memory varies as needed.<br />
|-<br />
| Fast access to each element of data as the memory location is fixed when the program is written. || Slower access to each element as the memory location is allocated at run-time.<br />
|-<br />
| Memory addresses allocated will be contiguous so quicker to access. || Memory addresses allocated may be fragmented so slower to access.<br />
|-<br />
|Structures are a fixed size, making them more predictable to work with. For example, they can contain a header. || Structures vary in size so there needs to be a mechanism for knowing the size of the current structure.<br />
|-<br />
| The relationship between different elements of data does not change. || The relationship between different elements of data will change as the program is run.<br />
|-<br />
|}<br />
<br />
== Choosing which data structure to use ==<br />
<br />
This graphic is used with tremendous gratitude from Dartford Grammar School Computer Science Department.<br />
<br />
[[File:Choosing a data type flow chart.png]]<br />
<br />
== Standards ==<br />
<br />
* Identify a situation that requires the use of recursive thinking.<br />
* Identify recursive thinking in a specified problem solution.<br />
* Trace a recursive algorithm to express a solution to a problem.<br />
<br />
* Describe the characteristics of a two- dimensional array.<br />
* Construct algorithms using two- dimensional arrays.<br />
* Describe the characteristics and applications of a stack.<br />
<br />
* Construct algorithms using the access methods of a stack.<br />
* Describe the characteristics and applications of a queue.<br />
* Construct algorithms using the access methods of a queue.<br />
* Explain the use of arrays as static stacks and queues.<br />
* Describe the features and characteristics of a dynamic data structure.<br />
* Describe how linked lists operate logically.<br />
* Sketch linked lists (single, double and circular).<br />
* Describe the characteristics and applications of a collection.<br />
* Construct algorithms using the access methods of a collection.<br />
* Discuss the need for sub-programmes and collections within programmed solutions.<br />
* Construct algorithms using pre-defined sub-programmes, one-dimensional arrays and/or collections.<br />
<br />
* Describe how trees operate logically (both binary and non-binary).<br />
* Define the terms: parent, left-child, right-child, subtree, root and leaf.<br />
* State the result of inorder, postorder and preorder tree traversal.<br />
* Sketch binary trees.<br />
* Define the term dynamic data structure.<br />
* Compare the use of static and dynamic data structures.<br />
* Suggest a suitable structure for a given situation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:abstract data structures]]<br />
[[Category:HL]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Recall&diff=12008Recall2023-01-29T08:47:30Z<p>Bmackenty: </p>
<hr />
<div>In the field of machine learning and data analysis, recall is a metric that is used to evaluate the performance of a model or algorithm. It is defined as the proportion of true positive predictions made by the model, relative to the total number of true positive cases in the data.<br />
<br />
Recall is often used in combination with another metric called precision, which measures the proportion of true positive predictions made by the model relative to the total number of positive predictions made by the model. Together, precision and recall can be used to assess the overall accuracy and effectiveness of a model in different situations.<br />
<br />
Recall is particularly useful when the cost of making a false negative prediction is high, or when the goal of the model is to identify as many positive cases as possible among a large number of negative cases. For example, in a spam filter, it might be more important to have a high recall rate, even if it comes at the cost of a lower precision rate, since false negative predictions could result in spam emails being delivered to a user's inbox.<br />
<br />
To calculate recall, you can use the following formula:<br />
<br />
Recall = True Positives / (True Positives + False Negatives)<br />
<br />
Where True Positives are the number of predictions made by the model that are correct, and False Negatives are the number of true positive cases that were not correctly predicted by the model.<br />
<br />
Recall can be used to evaluate the performance of a model on a single dataset, or it can be averaged over multiple datasets to get a more comprehensive evaluation of the model's accuracy.<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/jJ7ff7Gcq34" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
== Difference between recall and precision == <br />
<br />
In the context of machine learning, recall and precision are two measures of a model's performance in a binary classification problem.<br />
<br />
Recall, also known as sensitivity or the true positive rate, is a measure of a model's ability to correctly identify all relevant instances. It is calculated as the number of true positive predictions divided by the number of true positive predictions plus the number of false negative predictions. A high recall value indicates that the model has a low false negative rate, meaning that it correctly identifies most of the positive instances.<br />
<br />
Precision, on the other hand, is a measure of a model's ability to correctly identify only relevant instances. It is calculated as the number of true positive predictions divided by the number of true positive predictions plus the number of false positive predictions. A high precision value indicates that the model has a low false positive rate, meaning that it correctly identifies most of the instances that it predicts to be positive.<br />
<br />
In summary, recall is a measure of completeness and precision is a measure of correctness. A high recall and high precision are desirable, but sometimes a trade-off between them is needed, depending on the context of the problem and the costs of false positives and false negatives.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Precision&diff=12007Precision2023-01-29T08:47:11Z<p>Bmackenty: </p>
<hr />
<div>In the field of machine learning and data analysis, precision is a metric that is used to evaluate the performance of a model or algorithm. It is defined as the proportion of true positive predictions made by the model, relative to the total number of positive predictions made by the model.<br />
<br />
Precision is often used in combination with another metric called recall, which measures the proportion of true positive predictions made by the model relative to the total number of true positive cases in the data. Together, precision and recall can be used to assess the overall accuracy and effectiveness of a model in different situations.<br />
<br />
Precision is particularly useful when the cost of making a false positive prediction is high, or when the goal of the model is to identify a small number of positive cases among a large number of negative cases. For example, in a medical diagnostic system, it might be more important to have a high precision rate, even if it comes at the cost of a lower recall rate, since false positive predictions could lead to unnecessary treatments or procedures.<br />
<br />
To calculate precision, you can use the following formula:<br />
<br />
Precision = True Positives / (True Positives + False Positives)<br />
<br />
Where True Positives are the number of predictions made by the model that are correct, and False Positives are the number of predictions made by the model that are incorrect.<br />
<br />
Precision can be used to evaluate the performance of a model on a single dataset, or it can be averaged over multiple datasets to get a more comprehensive evaluation of the model's performance. It is important to note that precision should be considered in conjunction with other metrics, such as recall and accuracy, to get a complete picture of the model's performance.<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/2osIZ-dSPGE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
<br />
== Difference between recall and precision == <br />
<br />
In the context of machine learning, recall and precision are two measures of a model's performance in a binary classification problem.<br />
<br />
Recall, also known as sensitivity or the true positive rate, is a measure of a model's ability to correctly identify all relevant instances. It is calculated as the number of true positive predictions divided by the number of true positive predictions plus the number of false negative predictions. A high recall value indicates that the model has a low false negative rate, meaning that it correctly identifies most of the positive instances.<br />
<br />
Precision, on the other hand, is a measure of a model's ability to correctly identify only relevant instances. It is calculated as the number of true positive predictions divided by the number of true positive predictions plus the number of false positive predictions. A high precision value indicates that the model has a low false positive rate, meaning that it correctly identifies most of the instances that it predicts to be positive.<br />
<br />
In summary, recall is a measure of completeness and precision is a measure of correctness. A high recall and high precision are desirable, but sometimes a trade-off between them is needed, depending on the context of the problem and the costs of false positives and false negatives.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Cost_function&diff=12006Cost function2023-01-29T08:42:29Z<p>Bmackenty: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
In machine learning, a cost function is a function that is used to optimize a model's parameters by minimizing the error between the predicted output and the actual output. The cost function is used in training a machine learning model to find the set of parameters that minimizes the error between the predicted output and the actual output. The cost function is typically defined as a function of the model's parameters and the training data, and it is used to guide the optimization process by providing a measure of how well the model is doing on the training data.<br />
<br />
== A fairly decent video == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0twSSFZN9Mc" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain like I'm in 5th grade ==<br />
<br />
Imagine you are baking a cake and you have a recipe that tells you how much sugar, flour, eggs and other ingredients to use. The recipe is like a plan that tells you how to make the cake. Now, let's say you accidentally put too much sugar in the cake, it's going to taste too sweet and might not be as good as it should have been.<br />
<br />
A cost function is like a recipe for a machine learning model, it tells the model how to make predictions. The cost function helps the model learn from its mistakes and improve its predictions. Just like the cake, if the model makes a mistake, the cost function will tell how much of a mistake it made and how to fix it to make the predictions better.<br />
<br />
So, just like the cake recipe, the cost function is a set of instructions that helps the model learn from its mistakes and get better at making predictions.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Binary_classification_model&diff=12005Binary classification model2023-01-29T08:40:07Z<p>Bmackenty: Created page with "A binary classification model is a type of machine learning model that is used to classify data into two distinct classes or categories. These models are trained to differentiate between two possible outcomes, such as "yes" and "no", "true" and "false", or "positive" and "negative". Examples of binary classification problems include spam detection, sentiment analysis, and medical diagnosis. Common algorithms used in binary classification include logistic regression, deci..."</p>
<hr />
<div>A binary classification model is a type of machine learning model that is used to classify data into two distinct classes or categories. These models are trained to differentiate between two possible outcomes, such as "yes" and "no", "true" and "false", or "positive" and "negative". Examples of binary classification problems include spam detection, sentiment analysis, and medical diagnosis. Common algorithms used in binary classification include logistic regression, decision trees, and support vector machines.<br />
<br />
Some examples:<br />
<br />
# Spam detection: A binary classification model can be trained to classify emails as spam or not spam based on features such as the sender, subject, and content of the email.<br />
# Sentiment analysis: A binary classification model can be used to classify text as positive or negative based on features such as the words and phrases used in the text.<br />
# Medical diagnosis: A binary classification model can be trained to classify patients as having a certain disease or not based on features such as symptoms, medical test results, and demographic information.<br />
# Fraud detection: A binary classification model can be used to identify fraudulent transactions in financial systems based on features such as the amount, location, and time of the transaction.<br />
# Image recognition: A binary classification model can be trained to identify if an image contains a certain object or not based on features such as color, texture, and shape.</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Machine_learning&diff=12004Machine learning2023-01-29T08:36:41Z<p>Bmackenty: /* Terminology */</p>
<hr />
<div>[[file:Studying.png|right|frame|Case study notes<ref>http://www.flaticon.com/</ref>]]<br />
<br />
== Introduction ==<br />
<br />
Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks.[1] It is seen as a part of artificial intelligence. Machine learning algorithms build a model based on sample data, known as training data, in order to make predictions or decisions without being explicitly programmed to do so. Machine learning algorithms are used in a wide variety of applications, such as in medicine, email filtering, speech recognition, and computer vision, where it is difficult or unfeasible to develop conventional algorithms to perform the needed tasks.<ref>https://en.wikipedia.org/wiki/Machine_learning</ref><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/5q87K1WaoFI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/aircAruvnKk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/ukzFI9rgwfU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/nKW8Ndu7Mjw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><br />
</html><br />
<br />
== The recommender problem == <br />
<br />
Estimate a utility function that automatically predicts how a user will like an item<ref>Xavier Amatriain, https://www.youtube.com/watch?v=bLhq63ygoU8&t=1s&ab_channel=AlexSmola</ref><br />
<br />
Based on:<br />
* Past behavior<br />
* Relation to other users<br />
* Item similarity<br />
* Context<br />
<br />
== A way to approach this problem ==<br />
<br />
One way to estimate a utility function that predicts how a user will like an item is to use a machine learning model that takes as input the past behavior of the user, the relation of the user to other users, the similarity of the item to other items, and the context in which the item is being presented. The output of the model would be a prediction of how much the user will like the item.<br />
<br />
To build such a model, you would need to gather data on users' past behavior, including ratings or preferences for different items. You would also need data on the relationships between users, such as whether they are friends or share similar interests. The item similarity data could be based on the features of the items or on their co-occurrence with other items in past user behavior. The context in which the item is presented could include information such as the time of day, the user's location, and the user's current activity or task.<br />
<br />
Using this data, you could train a machine learning model, such as a decision tree, random forest, or neural network, to predict the user's preference for an item based on these factors. The model could then be used to estimate the utility of an item for a particular user by making a prediction of how much the user will like the item based on the input features.<br />
<br />
== Approaches to recommendation ==<br />
<br />
* Collaborative filtering: recommend on past behavior<br />
** User based: recommend what other users like who are like me<br />
** Item based: find similar items to those I have previously liked<br />
<br />
* Content-based: Recommended based on item features<br />
* Personalized learning to rank: treat recommendations as a tranking problem<br />
* Demographic: recommend based on user features<br />
* Social-recommendations: trust-based<br />
* Hybrid: any combination of the above<br />
<br />
== Terminology == <br />
<br />
# [[Behavioural data]]<br />
# Cloud delivery models:<br />
## [[Infrastructure as a service (IaaS)]]<br />
## [[Platform as a service (PaaS)]]<br />
## [[Software as a service (SaaS)]]<br />
# [[Cloud deployment models]]<br />
# [[Collaborative filtering]]<br />
# [[Content-based filtering]]<br />
# [[Cost function]]<br />
# [[F-measure]]<br />
# [[Hyperparameter]]<br />
# [[K-nearest neighbour (k-NN) algorithm]]<br />
# [[Matrix factorization]]<br />
# [[Mean absolute error (MAE)]]<br />
# [[Overfitting]]<br />
# [[Popularity bias]]<br />
# [[Precision]]<br />
# [[Recall]]<br />
# [[Reinforcement learning]]<br />
# [[Right to anonymity]]<br />
# [[Right to privacy]]<br />
# [[Root-mean-square error (RMSE)]]<br />
# [[Stochastic gradient descent]]<br />
# [[Training data]]<br />
<br />
not listed in case study but perhaps useful: <br />
<br />
# [[Binary classification model]]<br />
<br />
== Examples == <br />
<br />
An excellent, and I truly mean excellent example is MarI/O, a machine learning program that learns how to play mario, and mario kart. <br /> <br />
# Super Mario World: https://www.youtube.com/watch?v=qv6UVOQ0F44<br />
# Mario Kart: https://www.youtube.com/watch?v=S9Y_I9vY8Qw <br /><br />
<ref> https://www.youtube.com/channel/UC8aG3LDTDwNR1UQhSn9uVrw </ref><br />
<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:2018 case study]]<br />
[[Category:2023 case study]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Cost_function&diff=12003Cost function2023-01-29T08:26:36Z<p>Bmackenty: </p>
<hr />
<div><br />
== Introduction ==<br />
<br />
In machine learning, a cost function is a function that is used to optimize a model's parameters by minimizing the error between the predicted output and the actual output. The cost function is used in training a machine learning model to find the set of parameters that minimizes the error between the predicted output and the actual output. The cost function is typically defined as a function of the model's parameters and the training data, and it is used to guide the optimization process by providing a measure of how well the model is doing on the training data.<br />
<br />
== A fairly decent video == <br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0twSSFZN9Mc" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe><br />
</html></div>Bmackentyhttps://computersciencewiki.org/index.php?title=Compare_the_implementation_of_systems_using_a_client%E2%80%99s_hardware_with_hosting_systems_remotely&diff=11993Compare the implementation of systems using a client’s hardware with hosting systems remotely2023-01-21T11:20:59Z<p>Bmackenty: Created page with "System Fundamentals<ref>http://www.flaticon.com/</ref> Implementing a system using a client's hardware typically involves installing soft..."</p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Implementing a system using a client's hardware typically involves installing software and/or hardware on the client's premises. This approach provides the client with direct control over the system and the ability to customize it to their specific needs. However, it also requires the client to have the necessary hardware and infrastructure in place to support the system, and they are responsible for maintaining and updating it.<br />
<br />
Hosting systems remotely, on the other hand, involves providing access to the system through the internet. This approach eliminates the need for the client to have their own hardware and infrastructure, as the system is hosted on servers owned and maintained by the service provider. This approach can be more cost-effective for clients, as they do not need to invest in their own hardware. However, the client will have less control over the system and may be limited in their ability to customize it.<br />
<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Compare the implementation of systems using a client’s hardware with hosting systems remotely<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=System_fundamentals&diff=11992System fundamentals2023-01-21T11:19:22Z<p>Bmackenty: /* Planning and system installation */</p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
We are concerned with how systems integrate into organizations and how people use them. <br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/IIUbn4avDgA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
== The big ideas in system fundamentals == <br />
=== Systems in Organizations ===<br />
A computer program or computer system is used by people who work in organizations. It is very helpful to understand how people, computers, and organizations work together. <br />
<br />
=== System Design ===<br />
==== Components of a computer system ====<br />
* [[Hardware, software, peripheral, network, human resources]]<br />
* [[Computers in a networked world]]<br />
* [[Ethics]]<br />
<br />
==== System Design and analysis ====<br />
* [[Planning and stakeholder involvement]]<br />
* [[Getting requirements from stakeholders]] <br />
* [[Gathering information for solutions]] <br />
* [[Illustrate system requirements]]<br />
* [[Prototypes]]<br />
<br />
<br />
==== Planning and system installation ====<br />
<br />
* [[Change management]]<br />
* [[Legacy system]]<br />
* [[Testing implementation|Testing]]<br />
* [[Implementation methods]]<br />
* [[Data migration]]<br />
* [[Compare the implementation of systems using a client’s hardware with hosting systems remotely]]<br />
<br />
==== User Focus ====<br />
<br />
* [[User documentation]]<br />
* [[User training]]<br />
<br />
==== System Backup ====<br />
<br />
* [[Data loss]] and preventing data loss<br />
<br />
==== Software Deployment ==== <br />
<br />
* [[Managing releases and updates]]<br />
<br />
<br />
<br />
==== Human interaction with the system ====<br />
* [[Usability]]<br />
* [[Problems with usability]]<br />
* [[Improve the accessibility of a system]]<br />
* [[Moral, ethical, social, economic and environmental implications of the interaction between humans and machines]] (see also [[ethics]])<br />
<br />
=== Standards ===<br />
<br />
* Identify the context for which a new system is planned. <br />
* Describe the need for change management.<br />
* Outline compatibility issues resulting from situations including legacy systems or business mergers. <br />
* Compare the implementation of systems using a client’s hardware with hosting systems remotely. <br />
* Evaluate alternative installation processes. <br />
* Discuss problems that may arise as a part of data migration. <br />
* Suggest various types of testing. <br />
* Describe the importance of user documentation.<br />
* Evaluate different methods of providing user documentation.<br />
* Evaluate different methods of delivering user training. <br />
* Identify a range of causes of data loss. <br />
* Outline the consequences of data loss in a specified situation.<br />
* Describe a range of methods that can be used to prevent data loss. <br />
* Describe strategies for managing releases and updates. <br />
* Define the terms: hardware, software, peripheral, network, human resources. <br />
* Describe the roles that a computer can take in a networked world.<br />
* Discuss the social and ethical issues associated with a networked world. <br />
* Identify the relevant stakeholders when planning a new system. <br />
* Describe methods of obtaining requirements from stakeholders.<br />
* Describe appropriate techniques for gathering the information needed to arrive at a workable solution. <br />
* Construct suitable representations to illustrate system requirements.<br />
* Describe the purpose of prototypes to demonstrate the proposed system to the client. <br />
* Discuss the importance of iteration during the design process.<br />
* Explain the possible consequences of failing to involve the end-user in the design process.<br />
* Discuss the social and ethical issues associated with the introduction of new IT systems<br />
* Define the term usability.<br />
* Identify a range of usability problems with commonly used digital devices. <br />
* Identify methods that can be used to improve the accessibility of systems.<br />
* Identify a range of usability problems that can occur in a system. <br />
* Discuss the moral, ethical, social, economic and environmental implications of the interaction between humans and machines.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=2023_case_study&diff=119912023 case study2023-01-21T08:16:05Z<p>Bmackenty: /* Introduction */</p>
<hr />
<div>[[file:test-results.png|right|frame|Case study<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
== Introduction ==<br />
<br />
Higher-level students must write 3 papers. The case study is the third paper. Every year, the case study discusses a different topic. Students must become '''very very familiar''' with the case study. The IB recommends spending about a year studying this guide. <br />
<br />
This page will help you organize and understand the 2023 case study. Here are some external resources: <br />
<br />
# [https://www.computersciencecafe.com/ib-case-study-2023.html I have found a wonderful resource here, which may help you].<br />
# [https://sites.google.com/site/biscomputerscience/case-study-2023 There is another good collection of resources here]<br />
# [https://www.reddit.com/r/IBO/comments/w9fzbq/2023_compsci_case_study_all_resources_you_need/ here is an reddit with some links]<br />
<br />
== The case study ==<br />
<br />
[[Media:2023 case study.pdf| Click here for the full pdf case study for 2023]]<br />
<br />
== Every term in the case study ==<br />
<br />
* Please visit our [[Programming|programming]] page to see a list of terms involved in [[Machine learning]].<br />
<br />
== Markscheme for case study == <br />
<br />
[[File:MarkBands.png]]<br />
<br />
== Previous years case studies ==<br />
<br />
* [[Media:D 4 comsc css 2011 1a e.pdf|Click here for the 2022 case study]]<br />
* [[Media:Casestudy2020.pdf|Click here for the 2020 and 2021 case study]]<br />
* [[Media:2019 case study.pdf|Click here for the 2019 case study]]<br />
* [[Media:2018 case study.pdf|Click here for the 2018 case study]]<br />
* [[Media:2017 case study.pdf|Click here for the 2017 case study]]<br />
* [[Media:2016 case study.pdf | Click here for the 2016 case study]]<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:Grading]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Managing_releases_and_updates&diff=11989Managing releases and updates2023-01-13T03:24:32Z<p>Bmackenty: </p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
== Managing releases and updates ==<br />
<br />
Students should be aware of a variety of ways in which updates and patches are made available and deployed. This includes automatic updates received on a regular basis online and manual updates, which a user must download and install. <br />
<br />
== Manual updates == <br />
<br />
Manual updates are downloaded and installed by the end user. The main characteristics of a manual update are:<br />
<br />
* The user is notified about an update<br />
* The user must decide if they want to download the update<br />
* If the user updates, the user must install the update, although some applications make this process automatic<br />
<br />
Below is an example of notification of a new version. I don't especially like it as it doesn't help me make a choice about updating. <br />
<br />
[[File:Manual update.png|an example of a manual update notification]]<br />
<br />
Below is an excellent example of a manual update. Note how it informs the users about what has changed. <br />
<br />
[[File:Manual update2.png]]<br />
<br />
== Automatic updates == <br />
<br />
Automatic updates are downloaded and installed without the user needing to intervene. Many times, users must deliberately select automatic updates. The main characteristics of automatic updates are: <br />
<br />
* The application polls (regularly checks) to see if there are updates<br />
* If there is an update, the application downloads and installs the update.<br />
<br />
Performance issues related to the inability to install updates may hinder end-users and reduce compatibility between systems in geographically diverse locations. Or put another way, if you have bad internet, automatic updates might not be the best choice.<br />
<br />
<br />
== Strategies ==<br />
<br />
So the actual strategies for updates are fairly simple. Manual or automatic. We must keep in mind the relative advantages and disadvantages of both strategies. Forcing automatic updates should not be done without considering possible consequences.<br />
<br />
== Real-world practical advice ==<br />
<br />
I believe there is a difference between [[operating system]] updates (and other core-system software) and application updates. There is a difference between your [[operating system]] and a computer game you play. I believe security updates should be automatic, but all other updates should be manual.<br />
<br />
Forcing updates on your users is probably a bad idea. Please [https://www.cnet.com/news/microsoft-windows-10-forced-updates-auto-restarts-are-the-worst/ read this article to see one frustrated users experience of automatic updates in Windows].<br />
<br />
<br />
<br />
== Standards ==<br />
<br />
* Describe strategies for managing releases and updates.<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Decompression_software_in_the_transfer_of_information&diff=11985Decompression software in the transfer of information2023-01-11T17:23:25Z<p>Bmackenty: </p>
<hr />
<div>[[file:Connection.png|right|frame|Web Science<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Decompression software is used to decompress data that has been compressed in order to reduce its size or improve its transmission or storage. The use of decompression software can have several benefits in the transfer of information:<br />
<br />
# Improved transmission speeds: Decompressing data can improve the speed at which it is transmitted, as it reduces the amount of data that needs to be transmitted. This can be particularly important for large files or data sets that may take a long time to transmit in their uncompressed form.<br />
# Reduced storage requirements: Decompressing data can also reduce the amount of storage space required to store the data, which can be beneficial for both the sender and the receiver of the data.<br />
# Reduced costs: Reducing the amount of data that needs to be transmitted or stored can also help to reduce costs, such as the costs of bandwidth or storage.<br />
# Improved compatibility: Decompressing data can also improve compatibility with different systems or applications, as it allows the data to be accessed and used in its original form.<br />
# However, it is important to note that decompression software may also have some limitations or drawbacks, such as the need for additional processing power and the potential for security vulnerabilities if the decompression software is not properly secured.<br />
<br />
In summary, the use of decompression software can improve transmission speeds, reduce storage requirements, reduce costs, and improve compatibility in the transfer of information, but it may also have some limitations and potential drawbacks.<br />
<br />
== Do you understand this? ==<br />
From the IB: Students can test different compression methods to evaluate their effectiveness.<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Evaluate the use of decompression software in the transfer of information.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Web Science]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Network_data_compression&diff=11984Network data compression2023-01-11T17:22:27Z<p>Bmackenty: </p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
== Why compression of data is often necessary when transmitting across a network ==<br />
<br />
Compression of data is often necessary when transmitting across a network for several reasons:<br />
<br />
# Reducing bandwidth requirements: Compressing data can reduce the amount of data that needs to be transmitted, which can help to reduce the amount of bandwidth required to transmit the data. This can be particularly important when transmitting data over a network with limited bandwidth, such as a cellular network or a satellite connection.<br />
# Improving transmission speeds: Compressing data can also reduce the amount of time it takes to transmit the data, as there is less data to transmit. This can improve the overall speed and performance of the network.<br />
# Reducing storage requirements: Compressing data can also reduce the amount of storage space required to store the data, which can be beneficial for both the sender and the receiver of the data.<br />
# Reducing costs: Reducing the amount of data that needs to be transmitted or stored can also help to reduce costs, such as the costs of bandwidth or storage.<br />
<br />
In summary, compression of data is often necessary when transmitting across a network to reduce bandwidth requirements, improve transmission speeds, reduce storage requirements, and reduce costs.<br />
<br />
<br />
== A good INTRODUCTORY video to help you understand this ==<br />
The video below is used with gratitude from code.org<ref>https://www.youtube.com/watch?v=By30SCp-Tsw</ref><br />
<br /><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/By30SCp-Tsw" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== A much better video to help you understand it ==<br />
This video below is used with gratitude from computerphile <ref>https://www.youtube.com/watch?v=Lto-ajuqW3w</ref><br />
<br /><br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/Lto-ajuqW3w" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
Compression has enabled information to be disseminated more rapidly.<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
* [[Data packet]]<br />
<br />
== Different types of compression == <br />
<br />
* Lossy: the compressed file cannot be restored to the original file<br />
* Lossless: the compressed file CAN be restored to the original file<br />
<br />
== Difference between JPG and PNG == <br />
One of my students asked this question. I like the answer below. <br />
<br />
JPG aka JPEG is a standard of the Joint Photo Experts Group and works great for photographs. It doesn’t work well for line art or text, is optimum for photos that will be seen in browsers or on phones.<br />
<br />
JPG allows ‘compression’ so an image’s file-size can be reduced by a scheme that takes surrounding pixels and ‘averages’ them into a larger spot so the result is a somewhat coarser looking photo but a smaller file size.<br />
<br />
JPG compression is called ‘lossy’ because you can lose all the quality of an image if you compress it too much. _Some_ compression can greatly reduce the file size, and bandwidth for downloading to a browser, without making any noticeable difference. Too much compression and it looks ‘pixelated’.<br />
<br />
JPEGs don’t support transparency so the effect is always a photo with squared edges.<br />
<br />
PNG is a somewhat later standard. It can make a spectacular photo, but the file-size is larger relative to the same photo in a jpg. PNG is compressible, too, but the algorithm will not compress the quality out of the image, so it’s always safe to specify max compression.<br />
<br />
PNGs can also handle line art and text and keep the sharp edges. The PNG compression algorithm works really well for line art or text with solid-color backgrounds. It doesn’t reduce the file size much if it’s a busy graphic but can reduce it dramatically with line art and maintain the quality.<br />
<br />
PNGs can support transparency by adding an ‘alpha channel’, another 8 bits per pixel, that holds the opacity for that pixel. By making backgrounds transparent, graphics can appear to have irregular edges on any background.<br />
<br />
GIFs work well for graphics that are generated with a drawing tool, but have a very limited pallette and don’t work well for photos or scanned documents. GIFs can support transparency, and the can also be animated. BMP or ‘bit maps’ are seldom used for anything except little doodads, button faces, or other smaller graphics.<br />
<br />
JPEG, PNG, GIF, or BMP are ‘web graphics formats’ and work well for stuff seen in a browser or on a phone where the effective resolution is only something like 100 dots per inch and images are relatively small.<ref>https://www.quora.com/What-is-difference-between-JPG-and-PNG</ref><br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain why compression of data is often necessary when transmitting across a network.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Network_data_compression&diff=11983Network data compression2023-01-11T17:22:18Z<p>Bmackenty: /* Why compression of data is often necessary when transmitting across a network */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Data compression involves encoding information using fewer bits than the original representation. Compression can be either lossy or lossless. Lossless compression reduces bits by identifying and eliminating statistical redundancy. No information is lost in lossless compression. Lossy compression reduces bits by removing unnecessary or less important information. The process of reducing the size of a data file is often referred to as data compression. <ref>https://en.wikipedia.org/wiki/Data_compression</ref> [[File:NetworkDataCompression short.ogg]]<br />
<br />
<br />
== A good INTRODUCTORY video to help you understand this ==<br />
The video below is used with gratitude from code.org<ref>https://www.youtube.com/watch?v=By30SCp-Tsw</ref><br />
<br /><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/By30SCp-Tsw" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== A much better video to help you understand it ==<br />
This video below is used with gratitude from computerphile <ref>https://www.youtube.com/watch?v=Lto-ajuqW3w</ref><br />
<br /><br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/Lto-ajuqW3w" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
Compression has enabled information to be disseminated more rapidly.<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
* [[Data packet]]<br />
<br />
== Different types of compression == <br />
<br />
* Lossy: the compressed file cannot be restored to the original file<br />
* Lossless: the compressed file CAN be restored to the original file<br />
<br />
== Difference between JPG and PNG == <br />
One of my students asked this question. I like the answer below. <br />
<br />
JPG aka JPEG is a standard of the Joint Photo Experts Group and works great for photographs. It doesn’t work well for line art or text, is optimum for photos that will be seen in browsers or on phones.<br />
<br />
JPG allows ‘compression’ so an image’s file-size can be reduced by a scheme that takes surrounding pixels and ‘averages’ them into a larger spot so the result is a somewhat coarser looking photo but a smaller file size.<br />
<br />
JPG compression is called ‘lossy’ because you can lose all the quality of an image if you compress it too much. _Some_ compression can greatly reduce the file size, and bandwidth for downloading to a browser, without making any noticeable difference. Too much compression and it looks ‘pixelated’.<br />
<br />
JPEGs don’t support transparency so the effect is always a photo with squared edges.<br />
<br />
PNG is a somewhat later standard. It can make a spectacular photo, but the file-size is larger relative to the same photo in a jpg. PNG is compressible, too, but the algorithm will not compress the quality out of the image, so it’s always safe to specify max compression.<br />
<br />
PNGs can also handle line art and text and keep the sharp edges. The PNG compression algorithm works really well for line art or text with solid-color backgrounds. It doesn’t reduce the file size much if it’s a busy graphic but can reduce it dramatically with line art and maintain the quality.<br />
<br />
PNGs can support transparency by adding an ‘alpha channel’, another 8 bits per pixel, that holds the opacity for that pixel. By making backgrounds transparent, graphics can appear to have irregular edges on any background.<br />
<br />
GIFs work well for graphics that are generated with a drawing tool, but have a very limited pallette and don’t work well for photos or scanned documents. GIFs can support transparency, and the can also be animated. BMP or ‘bit maps’ are seldom used for anything except little doodads, button faces, or other smaller graphics.<br />
<br />
JPEG, PNG, GIF, or BMP are ‘web graphics formats’ and work well for stuff seen in a browser or on a phone where the effective resolution is only something like 100 dots per inch and images are relatively small.<ref>https://www.quora.com/What-is-difference-between-JPG-and-PNG</ref><br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain why compression of data is often necessary when transmitting across a network.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Network_data_compression&diff=11982Network data compression2023-01-11T17:22:04Z<p>Bmackenty: /* Why compression of data is often necessary when transmitting across a network */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Data compression involves encoding information using fewer bits than the original representation. Compression can be either lossy or lossless. Lossless compression reduces bits by identifying and eliminating statistical redundancy. No information is lost in lossless compression. Lossy compression reduces bits by removing unnecessary or less important information. The process of reducing the size of a data file is often referred to as data compression. <ref>https://en.wikipedia.org/wiki/Data_compression</ref> [[File:NetworkDataCompression short.ogg]]<br />
<br />
<br />
== A good INTRODUCTORY video to help you understand this ==<br />
The video below is used with gratitude from code.org<ref>https://www.youtube.com/watch?v=By30SCp-Tsw</ref><br />
<br /><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/By30SCp-Tsw" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== A much better video to help you understand it ==<br />
This video below is used with gratitude from computerphile <ref>https://www.youtube.com/watch?v=Lto-ajuqW3w</ref><br />
<br /><br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/Lto-ajuqW3w" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
Compression has enabled information to be disseminated more rapidly.<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
* [[Data packet]]<br />
<br />
== Why compression of data is often necessary when transmitting across a network ==<br />
<br />
Compression of data is often necessary when transmitting across a network for several reasons:<br />
<br />
# Reducing bandwidth requirements: Compressing data can reduce the amount of data that needs to be transmitted, which can help to reduce the amount of bandwidth required to transmit the data. This can be particularly important when transmitting data over a network with limited bandwidth, such as a cellular network or a satellite connection.<br />
# Improving transmission speeds: Compressing data can also reduce the amount of time it takes to transmit the data, as there is less data to transmit. This can improve the overall speed and performance of the network.<br />
# Reducing storage requirements: Compressing data can also reduce the amount of storage space required to store the data, which can be beneficial for both the sender and the receiver of the data.<br />
# Reducing costs: Reducing the amount of data that needs to be transmitted or stored can also help to reduce costs, such as the costs of bandwidth or storage.<br />
<br />
In summary, compression of data is often necessary when transmitting across a network to reduce bandwidth requirements, improve transmission speeds, reduce storage requirements, and reduce costs.<br />
<br />
== Different types of compression == <br />
<br />
* Lossy: the compressed file cannot be restored to the original file<br />
* Lossless: the compressed file CAN be restored to the original file<br />
<br />
== Difference between JPG and PNG == <br />
One of my students asked this question. I like the answer below. <br />
<br />
JPG aka JPEG is a standard of the Joint Photo Experts Group and works great for photographs. It doesn’t work well for line art or text, is optimum for photos that will be seen in browsers or on phones.<br />
<br />
JPG allows ‘compression’ so an image’s file-size can be reduced by a scheme that takes surrounding pixels and ‘averages’ them into a larger spot so the result is a somewhat coarser looking photo but a smaller file size.<br />
<br />
JPG compression is called ‘lossy’ because you can lose all the quality of an image if you compress it too much. _Some_ compression can greatly reduce the file size, and bandwidth for downloading to a browser, without making any noticeable difference. Too much compression and it looks ‘pixelated’.<br />
<br />
JPEGs don’t support transparency so the effect is always a photo with squared edges.<br />
<br />
PNG is a somewhat later standard. It can make a spectacular photo, but the file-size is larger relative to the same photo in a jpg. PNG is compressible, too, but the algorithm will not compress the quality out of the image, so it’s always safe to specify max compression.<br />
<br />
PNGs can also handle line art and text and keep the sharp edges. The PNG compression algorithm works really well for line art or text with solid-color backgrounds. It doesn’t reduce the file size much if it’s a busy graphic but can reduce it dramatically with line art and maintain the quality.<br />
<br />
PNGs can support transparency by adding an ‘alpha channel’, another 8 bits per pixel, that holds the opacity for that pixel. By making backgrounds transparent, graphics can appear to have irregular edges on any background.<br />
<br />
GIFs work well for graphics that are generated with a drawing tool, but have a very limited pallette and don’t work well for photos or scanned documents. GIFs can support transparency, and the can also be animated. BMP or ‘bit maps’ are seldom used for anything except little doodads, button faces, or other smaller graphics.<br />
<br />
JPEG, PNG, GIF, or BMP are ‘web graphics formats’ and work well for stuff seen in a browser or on a phone where the effective resolution is only something like 100 dots per inch and images are relatively small.<ref>https://www.quora.com/What-is-difference-between-JPG-and-PNG</ref><br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain why compression of data is often necessary when transmitting across a network.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Decentralization_of_the_web&diff=11981Decentralization of the web2023-01-11T17:20:23Z<p>Bmackenty: </p>
<hr />
<div>[[file:Connection.png|right|frame|Web Science<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Distributed systems are designed to distribute tasks and data across multiple computers or devices, rather than relying on a central server or location. This can enable greater decentralization of the web, as it allows for the creation of decentralized applications (DApps) and decentralized networks that are not controlled by a single entity.<br />
<br />
There are several reasons why distributed systems may act as a catalyst for greater decentralization of the web:<br />
<br />
Decentralization of control: Distributed systems can enable the creation of decentralized networks and applications that are not controlled by a single entity, which can increase the decentralization of the web by distributing control among multiple parties.<br />
<br />
# Increased security: Distributed systems can be more resilient to attacks and failures, as the failure of a single component does not necessarily result in the failure of the entire system. This can increase the security of decentralized networks and applications.<br />
# Greater scalability: Distributed systems can scale more easily and efficiently, as tasks and data can be distributed across multiple computers or devices. This can allow decentralized networks and applications to handle larger volumes of traffic and users.<br />
# Enhanced privacy: Distributed systems can provide greater privacy for users, as data is not stored in a central location that can be accessed by a single entity. This can be particularly important for decentralized networks and applications that handle sensitive data.<br />
<br />
In summary, distributed systems can act as a catalyst for greater decentralization of the web by enabling the creation of decentralized networks and applications, increasing security, scalability, and privacy, and decentralizing control. <br />
<br />
<br />
<br />
== What is the decentralized web? ==<br />
Here are some excellent quotes from the school of information studies at Syracuse University related to decentralized web: <br />
<br />
* Although originally decentralized, nowadays the Web is suffering the surveillance of U.S. centralized control monopolies. The Decentralized Web is the global effort to re-decentralize the infrastructure, protocols, applications and governance of the Web.<ref>https://ischoolonline.syr.edu/blog/what-is-the-decentralized-web/</ref><br />
<br />
* A Web designed to resist attempts to centralize its architecture, services, or protocols [so] that no individual, state, or corporation can substantially control its use. <ref>https://ischoolonline.syr.edu/blog/what-is-the-decentralized-web/</ref><br />
<br />
* A Decentralized Web belongs to all of us: Its power lies in our connections to each other. Its architecture encodes our values; its usage affirms our freedom to collaborate, share, and create.<ref>https://ischoolonline.syr.edu/blog/what-is-the-decentralized-web/</ref><br />
<br />
* A Decentralized Web is free of corporate or government overlords. It is to communication what local farming is to food. With it people can grow their own information.<ref>https://ischoolonline.syr.edu/blog/what-is-the-decentralized-web/</ref><br />
<br />
<br />
As there isn't one governing "overseer" of the web, and the web exists in the context of a [[Distributed networks]], it is easy to imagine how the web can become more decentralized.<br />
<br />
[[File:Decentralized networks.png|400px]]<br />
<br />
<br />
== Test advice == <br />
<br />
On tests, students are often able to explain the benefits of distributed web, but they often forget to include a brief outline of what exactly IS a distributed web. <br />
<br />
== Do you understand this? ==<br />
<br />
From the IB: Students should be aware of developments in mobile technology that have facilitated the growth of distributed networks.<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain why distributed systems may act as a catalyst to a greater decentralization of the web.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Web Science]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Protocols_and_standards_on_the_web&diff=11966Protocols and standards on the web2023-01-09T05:45:34Z<p>Bmackenty: </p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
In a digital network, protocols are necessary because they provide a set of rules that govern how devices in the network communicate with each other. Without protocols, it would be difficult for devices to exchange information and data in a meaningful way, because there would be no standard way for them to encode, transmit, and interpret that data.<br />
<br />
Protocols are necessary for a number of reasons, including:<br />
<br />
# Ensuring interoperability: Protocols ensure that devices from different manufacturers and operating systems can communicate with each other, regardless of their underlying hardware and software differences.<br />
# Facilitating error detection and correction: Protocols often include mechanisms for detecting and correcting errors that may occur during data transmission, which helps to ensure the integrity of the data being transmitted.<br />
# Ensuring security: Protocols can include measures to protect against unauthorized access and data tampering, which is important in today's digital world where security is a top concern.<br />
# Allowing for efficient communication: Protocols can optimize the way that devices communicate with each other, helping to minimize delays and maximize the speed at which data can be transmitted.<br />
<br />
Overall, protocols are essential for enabling digital devices to communicate with each other in a reliable, secure, and efficient manner.<br />
<br />
== Difference between standard and protocol ==<br />
<br />
In the context of digital networks, a standard is a document that specifies a set of requirements, specifications, or guidelines that must be followed in order to achieve a certain level of quality or compatibility. Standards are often developed by industry organizations, committees, or other groups, and are intended to be adopted and used by a wide range of individuals or organizations.<br />
<br />
A protocol, on the other hand, is a set of rules or guidelines that define how devices or systems should communicate with each other. Protocols are used to establish a common language or framework for communication, and may include specifications for encoding and decoding messages, transmission and reception of messages, error detection and correction, and other aspects of communication.<br />
<br />
Standards and protocols are often related to each other in the context of digital networks. For example, a standard might specify the physical characteristics of a network, such as the types of cables and connectors that can be used, the maximum distances between devices, and the maximum data rates that can be achieved. A protocol, on the other hand, might define how devices on the network should encode and transmit data, and how they should interpret and respond to data received from other devices.<br />
<br />
In summary, a standard is a set of guidelines or requirements that define how something should be done, while a protocol is a set of rules that define how devices should communicate with each other. In the context of digital networks, standards and protocols work together to ensure that devices can communicate with each other effectively and efficiently.<br />
<br />
<br />
== IP protocol ==<br />
<br />
* What is the IP protocol: [https://www.youtube.com/watch?v=rPoalUa4m8E Click here to watch a video]<br />
<br />
Some characteristics of IP are <ref>http://waksudir.blogspot.com/2015/03/characteristics-of-ip-protocol.html</ref>: <br />
<br />
* Connectionless - No connection with the destination is established before sending data packets.<br />
* Best Effort (unreliable) - Packet delivery is not guaranteed.<br />
* Media Independent - Operation is independent of the medium carrying the data.<br />
<br />
== TCP protocol ==<br />
<br />
* What is the TCP protocol: [https://www.youtube.com/watch?v=4IMc3CaMhyY Click here to watch a video]<br />
* Please watch this part 2: [https://www.youtube.com/watch?v=F27PLin3TV0&index=13&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW part 2 of TCP]<br />
<br />
For a practical hands-on look at open TCP connections on your Mac, type the following command in terminal: <br />
lsof -i | grep -E "(LISTEN|ESTABLISHED)"<br />
<br />
and also: <br />
<br />
nettop (push "c" and "e" and "p" for different views)<br />
<br />
Characteristics of TCP are <ref>http://www.omnisecu.com/tcpip/transmission-control-protocol-tcp.php</ref>: <br />
<br />
* Stream Data transfer: Applications working at the Application Layer transfers a contiguous stream of bytes to the bottom layers. It is the duty of TCP to pack this byte stream to packets, known as TCP segments, which are passed to the IP layer for transmission to the destination device. The application does not have to bother to chop the byte stream data packets.<br />
<br />
* Reliability: The most important feature of TCP is reliable data delivery. In order to provide reliability, TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the Network Layer. TCP assigns a sequence number to each byte transmitted, and expects a positive acknowledgment (ACK) from the receiving TCP layer. If the ACK is not received within a timeout interval, the data is retransmitted. The receiving TCP uses the sequence numbers to rearrange the TCP segments when they arrive out of order, and to eliminate duplicate TCP segments.<br />
<br />
* Flow control: Network devices operate at different data rates because of various factors like CPU and available bandwidth. It may happen a sending device to send data at a much faster rate than the receiver can handle. TCP uses a sliding window mechanism for implementing flow control. The number assigned to a segment is called the sequence number and this numbering is actually done at the byte level. The TCP at the receiving device, when sending an ACK back to the sender, also indicates to the TCP at the sending device, the number of bytes it can receive (beyond the last received TCP segment) without causing serious problems in its internal buffers.<br />
<br />
* Multiplexing: Multitasking achieved through the use of port numbers.<br />
<br />
* Connections: Before application processes can send data by using TCP, the devices must establish a connection. The connections are made between the port numbers of the sender and the receiver devices. A TCP connection identifies the end points involved in the connection. A socket number is a combination of IP address and port number, which can uniquely identify a connection.<br />
<br />
* Full duplex: TCP provides for concurrent data streams in both directions<br />
<br />
=== A deeper dive ===<br />
This video is a little on the dry side, but the level of detail is excellent:<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0s_w8eHu6LQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain the importance of protocols ==<br />
<br />
Without protocols and standards we wouldn't be able to achieve interoperability. That is, if my website used a totally different protocol for storing data (non-html) your browser would not be able to parse it, and you as a user wouldn't be able to understand it.<br />
<br />
Protocols are important because they: <br />
<br />
* Ensure '''data integrity''' (overall completeness, accuracy and consistency of data<ref>https://www.techopedia.com/definition/27858/data-integrity-networking</ref>)<br />
* Regulate '''flow control''' (In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver.<ref>https://en.wikipedia.org/wiki/Flow_control_(data)</ref>)<br />
* Manage '''deadlock''' (A condition that occurs when two processes are each waiting for the other to complete before proceeding <ref>https://www.webopedia.com/TERM/D/deadlock.html</ref>)<br />
* Manage '''congestion''' (Network congestion in data networking is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle.<ref>https://en.wikipedia.org/wiki/Network_congestion</ref>)<br />
* Manage '''error checking''' (techniques that enable reliable delivery of digital data over unreliable communication channels.<ref>https://en.wikipedia.org/wiki/Error_detection_and_correction</ref>)<br />
<br />
== Why standards are important == <br />
<br />
Value of Creating Standards at W3C<ref>https://www.w3.org/standards/about.html</ref> W3C continues to evolve to provide the community a productive environment for creating Web standards. W3C standards:<br />
<br />
* are created following a consensus-based decision process;<br />
* consider aspects of accessibility, privacy, security, and internationalization;<br />
* reflect the views of diverse industries and global stakeholders;<br />
* balance speed, fairness, public accountability, and quality;<br />
* benefit from Royalty-Free patent licensing commitments from participants;<br />
* are stable (and W3C seeks to ensure their persistence at the published URI);<br />
* benefit from wide review from groups inside and outside W3C;<br />
* are downloadable at no cost;<br />
* are maintained in a predictable fashion;<br />
* are strengthened through interoperability testing;<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain the importance of protocols and standards on the web.<br />
* Explain why protocols are necessary.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Protocols_and_standards_on_the_web&diff=11965Protocols and standards on the web2023-01-09T05:43:02Z<p>Bmackenty: </p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
In a digital network, protocols are necessary because they provide a set of rules that govern how devices in the network communicate with each other. Without protocols, it would be difficult for devices to exchange information and data in a meaningful way, because there would be no standard way for them to encode, transmit, and interpret that data.<br />
<br />
Protocols are necessary for a number of reasons, including:<br />
<br />
# Ensuring interoperability: Protocols ensure that devices from different manufacturers and operating systems can communicate with each other, regardless of their underlying hardware and software differences.<br />
# Facilitating error detection and correction: Protocols often include mechanisms for detecting and correcting errors that may occur during data transmission, which helps to ensure the integrity of the data being transmitted.<br />
# Ensuring security: Protocols can include measures to protect against unauthorized access and data tampering, which is important in today's digital world where security is a top concern.<br />
# Allowing for efficient communication: Protocols can optimize the way that devices communicate with each other, helping to minimize delays and maximize the speed at which data can be transmitted.<br />
<br />
Overall, protocols are essential for enabling digital devices to communicate with each other in a reliable, secure, and efficient manner.<br />
<br />
Standards are guidelines, these are more abstract. You can have products that meet the standard, exceed the standard or below a certain standard.<br />
<br />
Protocols are rules. They define exactly how data is exchanged and the expected behavior. These are rules you must follow exactly or your device will not be able to communicate at all with other devices. You can not exceed the protocol but its possible that you do not implement all the features of the protocols or you may implement the protocol completely.<ref>https://www.quora.com/What-is-the-difference-between-protocol-and-standard</ref> [[File:NetworkProtocols short.ogg]]<br />
<br />
== IP protocol ==<br />
<br />
* What is the IP protocol: [https://www.youtube.com/watch?v=rPoalUa4m8E Click here to watch a video]<br />
<br />
Some characteristics of IP are <ref>http://waksudir.blogspot.com/2015/03/characteristics-of-ip-protocol.html</ref>: <br />
<br />
* Connectionless - No connection with the destination is established before sending data packets.<br />
* Best Effort (unreliable) - Packet delivery is not guaranteed.<br />
* Media Independent - Operation is independent of the medium carrying the data.<br />
<br />
== TCP protocol ==<br />
<br />
* What is the TCP protocol: [https://www.youtube.com/watch?v=4IMc3CaMhyY Click here to watch a video]<br />
* Please watch this part 2: [https://www.youtube.com/watch?v=F27PLin3TV0&index=13&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW part 2 of TCP]<br />
<br />
For a practical hands-on look at open TCP connections on your Mac, type the following command in terminal: <br />
lsof -i | grep -E "(LISTEN|ESTABLISHED)"<br />
<br />
and also: <br />
<br />
nettop (push "c" and "e" and "p" for different views)<br />
<br />
Characteristics of TCP are <ref>http://www.omnisecu.com/tcpip/transmission-control-protocol-tcp.php</ref>: <br />
<br />
* Stream Data transfer: Applications working at the Application Layer transfers a contiguous stream of bytes to the bottom layers. It is the duty of TCP to pack this byte stream to packets, known as TCP segments, which are passed to the IP layer for transmission to the destination device. The application does not have to bother to chop the byte stream data packets.<br />
<br />
* Reliability: The most important feature of TCP is reliable data delivery. In order to provide reliability, TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the Network Layer. TCP assigns a sequence number to each byte transmitted, and expects a positive acknowledgment (ACK) from the receiving TCP layer. If the ACK is not received within a timeout interval, the data is retransmitted. The receiving TCP uses the sequence numbers to rearrange the TCP segments when they arrive out of order, and to eliminate duplicate TCP segments.<br />
<br />
* Flow control: Network devices operate at different data rates because of various factors like CPU and available bandwidth. It may happen a sending device to send data at a much faster rate than the receiver can handle. TCP uses a sliding window mechanism for implementing flow control. The number assigned to a segment is called the sequence number and this numbering is actually done at the byte level. The TCP at the receiving device, when sending an ACK back to the sender, also indicates to the TCP at the sending device, the number of bytes it can receive (beyond the last received TCP segment) without causing serious problems in its internal buffers.<br />
<br />
* Multiplexing: Multitasking achieved through the use of port numbers.<br />
<br />
* Connections: Before application processes can send data by using TCP, the devices must establish a connection. The connections are made between the port numbers of the sender and the receiver devices. A TCP connection identifies the end points involved in the connection. A socket number is a combination of IP address and port number, which can uniquely identify a connection.<br />
<br />
* Full duplex: TCP provides for concurrent data streams in both directions<br />
<br />
=== A deeper dive ===<br />
This video is a little on the dry side, but the level of detail is excellent:<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0s_w8eHu6LQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain the importance of protocols ==<br />
<br />
Without protocols and standards we wouldn't be able to achieve interoperability. That is, if my website used a totally different protocol for storing data (non-html) your browser would not be able to parse it, and you as a user wouldn't be able to understand it.<br />
<br />
Protocols are important because they: <br />
<br />
* Ensure '''data integrity''' (overall completeness, accuracy and consistency of data<ref>https://www.techopedia.com/definition/27858/data-integrity-networking</ref>)<br />
* Regulate '''flow control''' (In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver.<ref>https://en.wikipedia.org/wiki/Flow_control_(data)</ref>)<br />
* Manage '''deadlock''' (A condition that occurs when two processes are each waiting for the other to complete before proceeding <ref>https://www.webopedia.com/TERM/D/deadlock.html</ref>)<br />
* Manage '''congestion''' (Network congestion in data networking is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle.<ref>https://en.wikipedia.org/wiki/Network_congestion</ref>)<br />
* Manage '''error checking''' (techniques that enable reliable delivery of digital data over unreliable communication channels.<ref>https://en.wikipedia.org/wiki/Error_detection_and_correction</ref>)<br />
<br />
== Why standards are important == <br />
<br />
Value of Creating Standards at W3C<ref>https://www.w3.org/standards/about.html</ref> W3C continues to evolve to provide the community a productive environment for creating Web standards. W3C standards:<br />
<br />
* are created following a consensus-based decision process;<br />
* consider aspects of accessibility, privacy, security, and internationalization;<br />
* reflect the views of diverse industries and global stakeholders;<br />
* balance speed, fairness, public accountability, and quality;<br />
* benefit from Royalty-Free patent licensing commitments from participants;<br />
* are stable (and W3C seeks to ensure their persistence at the published URI);<br />
* benefit from wide review from groups inside and outside W3C;<br />
* are downloadable at no cost;<br />
* are maintained in a predictable fashion;<br />
* are strengthened through interoperability testing;<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain the importance of protocols and standards on the web.<br />
* Explain why protocols are necessary.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Protocols_and_standards_on_the_web&diff=11964Protocols and standards on the web2023-01-09T05:42:09Z<p>Bmackenty: /* Do you have an advanced understanding about this topic? */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
'''In telecommunications, a communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity.''' These are the rules or standard that defines the syntax, semantics and synchronization of communication and possible error recovery methods. Protocols may be implemented by hardware, software, or a combination of both.<br />
<br />
Communicating systems use well-defined formats (protocol) for exchanging messages. Each message has an exact meaning intended to elicit a response from a range of possible responses pre-determined for that particular situation. <ref>https://en.wikipedia.org/wiki/Communications_protocol</ref><br />
<br />
Standards are guidelines, these are more abstract. You can have products that meet the standard, exceed the standard or below a certain standard.<br />
<br />
Protocols are rules. They define exactly how data is exchanged and the expected behavior. These are rules you must follow exactly or your device will not be able to communicate at all with other devices. You can not exceed the protocol but its possible that you do not implement all the features of the protocols or you may implement the protocol completely.<ref>https://www.quora.com/What-is-the-difference-between-protocol-and-standard</ref> [[File:NetworkProtocols short.ogg]]<br />
<br />
== IP protocol ==<br />
<br />
* What is the IP protocol: [https://www.youtube.com/watch?v=rPoalUa4m8E Click here to watch a video]<br />
<br />
Some characteristics of IP are <ref>http://waksudir.blogspot.com/2015/03/characteristics-of-ip-protocol.html</ref>: <br />
<br />
* Connectionless - No connection with the destination is established before sending data packets.<br />
* Best Effort (unreliable) - Packet delivery is not guaranteed.<br />
* Media Independent - Operation is independent of the medium carrying the data.<br />
<br />
== TCP protocol ==<br />
<br />
* What is the TCP protocol: [https://www.youtube.com/watch?v=4IMc3CaMhyY Click here to watch a video]<br />
* Please watch this part 2: [https://www.youtube.com/watch?v=F27PLin3TV0&index=13&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW part 2 of TCP]<br />
<br />
For a practical hands-on look at open TCP connections on your Mac, type the following command in terminal: <br />
lsof -i | grep -E "(LISTEN|ESTABLISHED)"<br />
<br />
and also: <br />
<br />
nettop (push "c" and "e" and "p" for different views)<br />
<br />
Characteristics of TCP are <ref>http://www.omnisecu.com/tcpip/transmission-control-protocol-tcp.php</ref>: <br />
<br />
* Stream Data transfer: Applications working at the Application Layer transfers a contiguous stream of bytes to the bottom layers. It is the duty of TCP to pack this byte stream to packets, known as TCP segments, which are passed to the IP layer for transmission to the destination device. The application does not have to bother to chop the byte stream data packets.<br />
<br />
* Reliability: The most important feature of TCP is reliable data delivery. In order to provide reliability, TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the Network Layer. TCP assigns a sequence number to each byte transmitted, and expects a positive acknowledgment (ACK) from the receiving TCP layer. If the ACK is not received within a timeout interval, the data is retransmitted. The receiving TCP uses the sequence numbers to rearrange the TCP segments when they arrive out of order, and to eliminate duplicate TCP segments.<br />
<br />
* Flow control: Network devices operate at different data rates because of various factors like CPU and available bandwidth. It may happen a sending device to send data at a much faster rate than the receiver can handle. TCP uses a sliding window mechanism for implementing flow control. The number assigned to a segment is called the sequence number and this numbering is actually done at the byte level. The TCP at the receiving device, when sending an ACK back to the sender, also indicates to the TCP at the sending device, the number of bytes it can receive (beyond the last received TCP segment) without causing serious problems in its internal buffers.<br />
<br />
* Multiplexing: Multitasking achieved through the use of port numbers.<br />
<br />
* Connections: Before application processes can send data by using TCP, the devices must establish a connection. The connections are made between the port numbers of the sender and the receiver devices. A TCP connection identifies the end points involved in the connection. A socket number is a combination of IP address and port number, which can uniquely identify a connection.<br />
<br />
* Full duplex: TCP provides for concurrent data streams in both directions<br />
<br />
=== A deeper dive ===<br />
This video is a little on the dry side, but the level of detail is excellent:<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0s_w8eHu6LQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain the importance of protocols ==<br />
<br />
Without protocols and standards we wouldn't be able to achieve interoperability. That is, if my website used a totally different protocol for storing data (non-html) your browser would not be able to parse it, and you as a user wouldn't be able to understand it.<br />
<br />
Protocols are important because they: <br />
<br />
* Ensure '''data integrity''' (overall completeness, accuracy and consistency of data<ref>https://www.techopedia.com/definition/27858/data-integrity-networking</ref>)<br />
* Regulate '''flow control''' (In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver.<ref>https://en.wikipedia.org/wiki/Flow_control_(data)</ref>)<br />
* Manage '''deadlock''' (A condition that occurs when two processes are each waiting for the other to complete before proceeding <ref>https://www.webopedia.com/TERM/D/deadlock.html</ref>)<br />
* Manage '''congestion''' (Network congestion in data networking is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle.<ref>https://en.wikipedia.org/wiki/Network_congestion</ref>)<br />
* Manage '''error checking''' (techniques that enable reliable delivery of digital data over unreliable communication channels.<ref>https://en.wikipedia.org/wiki/Error_detection_and_correction</ref>)<br />
<br />
== Why standards are important == <br />
<br />
Value of Creating Standards at W3C<ref>https://www.w3.org/standards/about.html</ref> W3C continues to evolve to provide the community a productive environment for creating Web standards. W3C standards:<br />
<br />
* are created following a consensus-based decision process;<br />
* consider aspects of accessibility, privacy, security, and internationalization;<br />
* reflect the views of diverse industries and global stakeholders;<br />
* balance speed, fairness, public accountability, and quality;<br />
* benefit from Royalty-Free patent licensing commitments from participants;<br />
* are stable (and W3C seeks to ensure their persistence at the published URI);<br />
* benefit from wide review from groups inside and outside W3C;<br />
* are downloadable at no cost;<br />
* are maintained in a predictable fashion;<br />
* are strengthened through interoperability testing;<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain the importance of protocols and standards on the web.<br />
* Explain why protocols are necessary.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Protocols_and_standards_on_the_web&diff=11963Protocols and standards on the web2023-01-09T05:41:52Z<p>Bmackenty: /* Network protocols */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
'''In telecommunications, a communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity.''' These are the rules or standard that defines the syntax, semantics and synchronization of communication and possible error recovery methods. Protocols may be implemented by hardware, software, or a combination of both.<br />
<br />
Communicating systems use well-defined formats (protocol) for exchanging messages. Each message has an exact meaning intended to elicit a response from a range of possible responses pre-determined for that particular situation. <ref>https://en.wikipedia.org/wiki/Communications_protocol</ref><br />
<br />
Standards are guidelines, these are more abstract. You can have products that meet the standard, exceed the standard or below a certain standard.<br />
<br />
Protocols are rules. They define exactly how data is exchanged and the expected behavior. These are rules you must follow exactly or your device will not be able to communicate at all with other devices. You can not exceed the protocol but its possible that you do not implement all the features of the protocols or you may implement the protocol completely.<ref>https://www.quora.com/What-is-the-difference-between-protocol-and-standard</ref> [[File:NetworkProtocols short.ogg]]<br />
<br />
== IP protocol ==<br />
<br />
* What is the IP protocol: [https://www.youtube.com/watch?v=rPoalUa4m8E Click here to watch a video]<br />
<br />
Some characteristics of IP are <ref>http://waksudir.blogspot.com/2015/03/characteristics-of-ip-protocol.html</ref>: <br />
<br />
* Connectionless - No connection with the destination is established before sending data packets.<br />
* Best Effort (unreliable) - Packet delivery is not guaranteed.<br />
* Media Independent - Operation is independent of the medium carrying the data.<br />
<br />
== TCP protocol ==<br />
<br />
* What is the TCP protocol: [https://www.youtube.com/watch?v=4IMc3CaMhyY Click here to watch a video]<br />
* Please watch this part 2: [https://www.youtube.com/watch?v=F27PLin3TV0&index=13&list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW part 2 of TCP]<br />
<br />
For a practical hands-on look at open TCP connections on your Mac, type the following command in terminal: <br />
lsof -i | grep -E "(LISTEN|ESTABLISHED)"<br />
<br />
and also: <br />
<br />
nettop (push "c" and "e" and "p" for different views)<br />
<br />
Characteristics of TCP are <ref>http://www.omnisecu.com/tcpip/transmission-control-protocol-tcp.php</ref>: <br />
<br />
* Stream Data transfer: Applications working at the Application Layer transfers a contiguous stream of bytes to the bottom layers. It is the duty of TCP to pack this byte stream to packets, known as TCP segments, which are passed to the IP layer for transmission to the destination device. The application does not have to bother to chop the byte stream data packets.<br />
<br />
* Reliability: The most important feature of TCP is reliable data delivery. In order to provide reliability, TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the Network Layer. TCP assigns a sequence number to each byte transmitted, and expects a positive acknowledgment (ACK) from the receiving TCP layer. If the ACK is not received within a timeout interval, the data is retransmitted. The receiving TCP uses the sequence numbers to rearrange the TCP segments when they arrive out of order, and to eliminate duplicate TCP segments.<br />
<br />
* Flow control: Network devices operate at different data rates because of various factors like CPU and available bandwidth. It may happen a sending device to send data at a much faster rate than the receiver can handle. TCP uses a sliding window mechanism for implementing flow control. The number assigned to a segment is called the sequence number and this numbering is actually done at the byte level. The TCP at the receiving device, when sending an ACK back to the sender, also indicates to the TCP at the sending device, the number of bytes it can receive (beyond the last received TCP segment) without causing serious problems in its internal buffers.<br />
<br />
* Multiplexing: Multitasking achieved through the use of port numbers.<br />
<br />
* Connections: Before application processes can send data by using TCP, the devices must establish a connection. The connections are made between the port numbers of the sender and the receiver devices. A TCP connection identifies the end points involved in the connection. A socket number is a combination of IP address and port number, which can uniquely identify a connection.<br />
<br />
* Full duplex: TCP provides for concurrent data streams in both directions<br />
<br />
=== A deeper dive ===<br />
This video is a little on the dry side, but the level of detail is excellent:<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/0s_w8eHu6LQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== Explain the importance of protocols ==<br />
<br />
Without protocols and standards we wouldn't be able to achieve interoperability. That is, if my website used a totally different protocol for storing data (non-html) your browser would not be able to parse it, and you as a user wouldn't be able to understand it.<br />
<br />
Protocols are important because they: <br />
<br />
* Ensure '''data integrity''' (overall completeness, accuracy and consistency of data<ref>https://www.techopedia.com/definition/27858/data-integrity-networking</ref>)<br />
* Regulate '''flow control''' (In data communications, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver.<ref>https://en.wikipedia.org/wiki/Flow_control_(data)</ref>)<br />
* Manage '''deadlock''' (A condition that occurs when two processes are each waiting for the other to complete before proceeding <ref>https://www.webopedia.com/TERM/D/deadlock.html</ref>)<br />
* Manage '''congestion''' (Network congestion in data networking is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle.<ref>https://en.wikipedia.org/wiki/Network_congestion</ref>)<br />
* Manage '''error checking''' (techniques that enable reliable delivery of digital data over unreliable communication channels.<ref>https://en.wikipedia.org/wiki/Error_detection_and_correction</ref>)<br />
<br />
== Why standards are important == <br />
<br />
Value of Creating Standards at W3C<ref>https://www.w3.org/standards/about.html</ref> W3C continues to evolve to provide the community a productive environment for creating Web standards. W3C standards:<br />
<br />
* are created following a consensus-based decision process;<br />
* consider aspects of accessibility, privacy, security, and internationalization;<br />
* reflect the views of diverse industries and global stakeholders;<br />
* balance speed, fairness, public accountability, and quality;<br />
* benefit from Royalty-Free patent licensing commitments from participants;<br />
* are stable (and W3C seeks to ensure their persistence at the published URI);<br />
* benefit from wide review from groups inside and outside W3C;<br />
* are downloadable at no cost;<br />
* are maintained in a predictable fashion;<br />
* are strengthened through interoperability testing;<br />
<br />
== Do you have an advanced understanding about this topic? ==<br />
<br />
* Define data integrity<br />
* Define source integrity<br />
* Define flow control<br />
* Define deadlock<br />
* Define congestion management<br />
* Define error correction<br />
* Define error checking<br />
<br />
== See Also ==<br />
<br />
* [[OSI model]]<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Explain the importance of protocols and standards on the web.<br />
* Explain why protocols are necessary.<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Prototypes&diff=11955Prototypes2023-01-08T05:33:10Z<p>Bmackenty: /* Standards */</p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
A prototype is an early model of a product built to test a concept or process or to act as a thing to be replicated or learned from. <br />
<br />
Prototypes are simplified versions of a system that are used to test and refine the requirements. They can be used to demonstrate the proposed system to the client in order to get feedback on the design and functionality of the system.<br />
<br />
There are several benefits to using prototypes to demonstrate the proposed system to the client:<br />
<br />
# Prototypes allow the client to see and interact with a rough version of the system, which can help them better understand how the system will work.<br />
# Prototypes allow the client to provide feedback on the design and functionality of the system, which can help the development team make necessary changes before the final version of the system is built.<br />
# Prototypes can help the client visualize the final product and understand how it will fit into their business or organization.<br />
# Prototypes can help reduce risk by allowing the client to identify and address any issues or concerns before the final version of the system is built.<br />
<br />
== Real-world practical advice ==<br />
<br />
There is almost always a gap between what the client wants and what the designer THINKS the client wants. Prototypes help narrow the gap efficiently.<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Describe the purpose of prototypes to demonstrate the proposed system to the client.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Illustrate_system_requirements&diff=11954Illustrate system requirements2023-01-08T05:32:41Z<p>Bmackenty: </p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Once you have understood and chosen a system, you must diagram how the system works. This works prevents problems in the future by ensuring you understand all inputs and outputs, AND how a system is organized. <br />
<br />
There are several ways to represent system requirements, including:<br />
<br />
# [https://www.indeed.com/career-advice/career-development/list-of-use-cases-examples Use Cases]: A use case is a description of a system's behavior as it responds to a request from one of its users. Use cases can be used to represent the functional requirements of a system.<br />
# [https://www.productplan.com/glossary/user-story/ User Stories]: A user story is a short, simple description of a feature written from the perspective of the user. User stories can be used to represent both functional and non-functional requirements of a system.<br />
# [https://krazytech.com/projects/sample-software-requirements-specificationsrs-report-airline-database Requirements Specification]: A requirements specification is a detailed document that describes the requirements for a system. It can include functional and non-functional requirements, as well as constraints, assumptions, and dependencies.<br />
# [https://www.guru99.com/traceability-matrix.html Requirements Traceability Matrix]: A requirements traceability matrix is a table that shows the relationships between different requirements in a system. It can be used to track the progress of the development of a system and ensure that all requirements have been addressed.<br />
# [[Prototypes]]: Prototypes are simplified versions of a system that are used to test and refine the requirements. Prototypes can be used to represent both functional and non-functional requirements.<br />
# [https://www.mindtools.com/augmkip/flow-charts Flowcharts]: Flowcharts are diagrams that show the steps in a process. They can be used to represent the logic and flow of a system, and can be useful in representing functional requirements.<br />
<br />
<br />
== Real-world practical advice ==<br />
<br />
This step is '''especially important''' when you are working with many different interdependent systems.<br />
<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Construct suitable representations to illustrate system requirements<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Illustrate_system_requirements&diff=11953Illustrate system requirements2023-01-08T05:22:58Z<p>Bmackenty: </p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Once you have understood and chosen a system, you must diagram how the system works. This works prevents problems in the future by ensuring you understand all inputs and outputs, AND how a system is organized. <br />
<br />
There are several ways to represent system requirements, including:<br />
<br />
# [https://www.indeed.com/career-advice/career-development/list-of-use-cases-examples Use Cases]: A use case is a description of a system's behavior as it responds to a request from one of its users. Use cases can be used to represent the functional requirements of a system.<br />
# [https://www.productplan.com/glossary/user-story/ User Stories]: A user story is a short, simple description of a feature written from the perspective of the user. User stories can be used to represent both functional and non-functional requirements of a system.<br />
# [https://krazytech.com/projects/sample-software-requirements-specificationsrs-report-airline-database Requirements Specification]: A requirements specification is a detailed document that describes the requirements for a system. It can include functional and non-functional requirements, as well as constraints, assumptions, and dependencies.<br />
# [https://www.guru99.com/traceability-matrix.html Requirements Traceability Matrix]: A requirements traceability matrix is a table that shows the relationships between different requirements in a system. It can be used to track the progress of the development of a system and ensure that all requirements have been addressed.<br />
# Prototypes: Prototypes are simplified versions of a system that are used to test and refine the requirements. Prototypes can be used to represent both functional and non-functional requirements.<br />
# [https://www.mindtools.com/augmkip/flow-charts Flowcharts]: Flowcharts are diagrams that show the steps in a process. They can be used to represent the logic and flow of a system, and can be useful in representing functional requirements.<br />
<br />
<br />
== Real-world practical advice ==<br />
<br />
This step is '''especially important''' when you are working with many different interdependent systems.<br />
<br />
<br />
== Standards ==<br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Construct suitable representations to illustrate system requirements<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Data_packet&diff=11952Data packet2023-01-08T05:22:49Z<p>Bmackenty: /* Standards */</p>
<hr />
<div><br />
[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
A packet is a basic unit of communication over a digital network.<br />
<br />
A packet is also called a datagram, a segment, a block, a cell or a frame, depending on the protocol used for the transmission of data. When data has to be transmitted, it is broken down into similar structures of data before transmission, called packets, which are reassembled to the original data chunk once they reach their destination.<br />
<br />
The structure of a packet depends on the type of packet it is and on the protocol. Normally, a packet has a header and a payload.<br />
<br />
The header keeps overhead information about the packet, the service, and other transmission-related data. For example, data transfer over the Internet requires breaking down the data into IP packets, which is defined in IP (Internet Protocol), and an IP packet includes:<br />
<br />
* The source IP address, which is the IP address of the machine sending the data. <br />
* The destination IP address, which is the machine or device to which the data is sent. <br />
* The sequence number of the packets, a number that puts the packets in order such that they are reassembled in a way to get the original data back exactly as it was prior to transmission. <br />
* The type of service <br />
* Flags <br />
* And some other technical data <br />
* The payload, which represents the bulk of the packet (all the above is considered as overhead), and is actually the data being carried. <br />
<br />
(Above used with gratitude from: https://www.lifewire.com/what-is-a-data-packet-3426310<ref>https://www.lifewire.com/what-is-a-data-packet-3426310</ref>) [[File:DataPacket short.ogg]]<br />
<br />
== A diagram of a packet == <br />
<br />
[[File:Ip header.jpg]]<br />
<br />
== Looking for a basic introduction to packets ?==<br />
<br />
* https://www.youtube.com/watch?v=xIuBmOufbls<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/ewrBalT_eBM" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
<br /><br /><br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/AEaKrq3SpW8" frameborder="0" allowfullscreen></iframe><br />
<br />
</html><br />
<br />
== Skills ==<br />
<br />
You should be aware how to capture and view packets. Diagnosing network problems via packet analysis is '''not within the scope of IB Computer Science''', but you should be able to view a network packet. The de-facto tool for this stuff is [https://www.wireshark.org/ wireshark]. It will take you many hours to learn how to use wireshark. <br />
<br />
OS X : <syntaxhighlight inline lang="bash">nettop -m tcp</syntaxhighlight><br />
<br />
OS X / Linux : <syntaxhighlight inline lang="bash">sudo tcpdump -nnSX port 443</syntaxhighlight><br />
<br />
OS X / Linux: <syntaxhighlight inline lang="bash">sudo tcpdump -nnSX port 80</syntaxhighlight> (visit example.com after running this command).<br />
<br />
tcpdump is a complex and powerful tool to view packets. There is a superb website to learn more about this, [https://danielmiessler.com/study/tcpdump/ you can request by clicking this link]<br />
<br />
== Standards == <br />
These standards are used from the IB Computer Science Subject Guide<ref>IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.</ref><br />
<br />
* Define the terms: protocol, data packet<br />
<br />
== References ==<br />
<references /><br />
<br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Illustrate_system_requirements&diff=11951Illustrate system requirements2023-01-08T05:21:43Z<p>Bmackenty: </p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Once you have understood and chosen a system, you must diagram how the system works. This works prevents problems in the future by ensuring you understand all inputs and outputs, AND how a system is organized. <br />
<br />
There are several ways to represent system requirements, including:<br />
<br />
# [https://www.indeed.com/career-advice/career-development/list-of-use-cases-examples Use Cases]: A use case is a description of a system's behavior as it responds to a request from one of its users. Use cases can be used to represent the functional requirements of a system.<br />
# [https://www.productplan.com/glossary/user-story/ User Stories]: A user story is a short, simple description of a feature written from the perspective of the user. User stories can be used to represent both functional and non-functional requirements of a system.<br />
# [https://krazytech.com/projects/sample-software-requirements-specificationsrs-report-airline-database Requirements Specification]: A requirements specification is a detailed document that describes the requirements for a system. It can include functional and non-functional requirements, as well as constraints, assumptions, and dependencies.<br />
# [https://www.guru99.com/traceability-matrix.html Requirements Traceability Matrix]: A requirements traceability matrix is a table that shows the relationships between different requirements in a system. It can be used to track the progress of the development of a system and ensure that all requirements have been addressed.<br />
# Prototypes: Prototypes are simplified versions of a system that are used to test and refine the requirements. Prototypes can be used to represent both functional and non-functional requirements.<br />
# [https://www.mindtools.com/augmkip/flow-charts Flowcharts]: Flowcharts are diagrams that show the steps in a process. They can be used to represent the logic and flow of a system, and can be useful in representing functional requirements.<br />
<br />
<br />
== Real-world practical advice ==<br />
<br />
This step is '''especially important''' when you are working with many different interdependent systems.<br />
<br />
<br />
<br />
<br />
== Standards ==<br />
<br />
* Construct suitable representations to illustrate system requirements<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackentyhttps://computersciencewiki.org/index.php?title=Prototypes&diff=11950Prototypes2023-01-08T05:19:59Z<p>Bmackenty: /* Real-world practical advice */</p>
<hr />
<div>[[file:system_fund.png|right|frame|System Fundamentals<ref>http://www.flaticon.com/</ref>]]<br />
<br />
A prototype is an early model of a product built to test a concept or process or to act as a thing to be replicated or learned from. <br />
<br />
Prototypes are simplified versions of a system that are used to test and refine the requirements. They can be used to demonstrate the proposed system to the client in order to get feedback on the design and functionality of the system.<br />
<br />
There are several benefits to using prototypes to demonstrate the proposed system to the client:<br />
<br />
# Prototypes allow the client to see and interact with a rough version of the system, which can help them better understand how the system will work.<br />
# Prototypes allow the client to provide feedback on the design and functionality of the system, which can help the development team make necessary changes before the final version of the system is built.<br />
# Prototypes can help the client visualize the final product and understand how it will fit into their business or organization.<br />
# Prototypes can help reduce risk by allowing the client to identify and address any issues or concerns before the final version of the system is built.<br />
<br />
== Real-world practical advice ==<br />
<br />
There is almost always a gap between what the client wants and what the designer THINKS the client wants. Prototypes help narrow the gap efficiently.<br />
<br />
== Standards ==<br />
<br />
* Describe the purpose of prototypes to demonstrate the proposed system to the client.<br />
<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:System fundamentals]]</div>Bmackenty