https://computersciencewiki.org/api.php?action=feedcontributions&user=Mr.+MacKenty&feedformat=atomComputer Science Wiki - User contributions [en]2024-03-29T07:27:23ZUser contributionsMediaWiki 1.39.6https://computersciencewiki.org/index.php?title=Hashing&diff=12195Hashing2024-03-18T06:12:27Z<p>Mr. MacKenty: /* Benefit of hashing */</p>
<hr />
<div>[[file:computation.png|right|frame|Advanced programming<ref>http://www.flaticon.com/</ref>]]<br />
<br />
A hash function is any function that can be used to map data of arbitrary size to fixed-size values. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes. The values are used to index a fixed-size table called a hash table. Use of a hash function to index a hash table is called hashing or scatter storage addressing.<ref>https://en.wikipedia.org/wiki/Hash_function</ref><br />
<br />
Hashing is the transformation of a string of characters into a usually shorter fixed-length value or key that represents the original string. Hashing is used to index and retrieve items in a database because it is faster to find the item using the shorter hashed key than to find it using the original value. It is also used in many encryption algorithms.<ref>https://searchsqlserver.techtarget.com/definition/hashing</ref><br />
<br />
[[File:Hashing.png|600px]]<br />
<br />
<br />
== Benefit of hashing == <br />
<br />
One main use of hashing is to compare two files for equality. Without opening two document files to compare them word-for-word, the calculated hash values of these files will allow the owner to know immediately if they are different.<br />
<br />
Hashing is also used to verify the integrity of a file after it has been transferred from one place to another, typically in a file backup program. To ensure the transferred file is not corrupted, a user can compare the hash value of both files. If they are the same, then the transferred file is an identical copy.<br />
<br />
In some situations, an encrypted file may be designed to never change the file size nor the last modification date and time (for example, virtual drive container files). In such cases, it would be impossible to tell at a glance if two similar files are different or not, but the hash values would easily tell these files apart if they are different.<ref>https://www.2brightsparks.com/resources/articles/introduction-to-hashing-and-its-uses.html</ref><br />
<br />
== Simple Code sample ==<br />
<br />
<syntaxhighlight lang="python"><br />
# this python file should be used as part of your process to understand hashing. <br />
# please change values so you can see how hashing works! <br />
<br />
import hashlib<br />
<br />
string = "hello there."<br />
print(string)<br />
<br />
hashed_string = hashlib.sha256(string.encode()).hexdigest()<br />
print(hashed_string)<br />
<br />
# Thank you to Max S for coming up with this sample<br />
</syntaxhighlight><br />
<br />
== Videos == <br />
This video will give you a general introduction to hashing. <br><br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/2BldESGZKB8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
The video below helps us understand hashing within the context of [[Blockchain|blockchain]].<br><br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/IGSB9zoSx70" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br />
</html><br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:computational thinking]]<br />
[[Category:programming]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Levels_of_knowing_(Level_1,_Level_2,_Level_3)&diff=12194Levels of knowing (Level 1, Level 2, Level 3)2024-03-14T06:46:15Z<p>Mr. MacKenty: </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. This is formally known as a '''command term'''. <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>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Sandbox&diff=12190Sandbox2024-02-13T15:42:25Z<p>Mr. MacKenty: </p>
<hr />
<div>__NOTOC__<br />
== This wiki supports learning of high school computing.==<br />
{| class="wikitable"<br />
|-<br />
| This wiki supports learning of IB Computer Science Standard Level and Higher Level (years 1 and 2). Additionally, this wiki supports learning for two computing design courses, Designing solutions through programming (aka introduction to programming) and Solving complex problems through programming (aka advanced programming). Both courses are [https://www.ibo.org/programmes/middle-years-programme/ MYP design courses].<br />
<br />
<p>If you are interested in registering an account, please send an email to bmackenty at gmail</p><br />
<br />
|}<br />
<br />
<br />
<br />
<hr /><br />
<br />
<html><br />
<div class="alert alert-info fade show" role="alert"><br />
<strong>Resources</strong><br />
<p></p><br />
<p></p><br />
<br />
</html><br />
* [[Getting started]]<br />
* [[Internal Assessment]]<br />
* [[Problem Sets]]<br />
* [[Permissions for fair use]]<br />
<html><br />
<br />
</div><br />
<br />
</html></div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Dice_rolling&diff=12189Dice rolling2024-02-05T20:03:55Z<p>Mr. MacKenty: /* The Problem */</p>
<hr />
<div>[[File:square.png|right|frame|This a problem set for you to work through <ref>http://www.flaticon.com/</ref>]]<br />
<br />
This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are: <br />
<br />
# to build your skill applying computational thinking to a problem<br />
# to assess your knowledge and skills of different programming practices<br />
<br />
<br />
== What is this problem set trying to do ==<br />
<br />
In this example we are learning about [[lists]], [[conditionals]], and processing user input.<br />
<br />
== The Problem ==<br />
<br />
[[File:Dice.jpeg|right|frame|Dice]]<br />
<br />
<br />
A common mechanic in computer games is to simulate a dice roll. Please write a function that rolls dice for you and RETURNS the result. <br />
<br />
for example: roll_dice(d6,3) <-- would roll a six sided die 3 times and return the result<br />
for example: roll_dice(d12,1) <-- would roll a 12 sided dice once and return the result<br />
for example: roll_dice(d20,4) <-- would roll a 20 sided die 4 times and return the result. <br />
<br />
You should model a 4 sided, 6 sided, 8 sided, 10 sided, 12 sided, 20 sided, and 100 sided die. <br />
<br />
As extra-credit, you might want to return the result of each roll and then the final total. <br />
for example: roll_dice(d6,3) <-- might return 6 3 1 10<br />
<br />
== How you will be assessed ==<br />
<br />
Your solution will be graded using the following axis: <br />
<br />
<br />
'''Scope'''<br />
* To what extent does your code implement the features required by our specification?<br />
* To what extent is there evidence of effort?<br />
<br />
'''Correctness'''<br />
* To what extent did your code meet specifications?<br />
* To what extent did your code meet unit tests?<br />
* To what extent is your code free of bugs?<br />
<br />
'''Design'''<br />
* To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?<br />
* To what extent is your code eliminating repetition?<br />
* To what extent is your code using functions appropriately?<br />
<br />
'''Style'''<br />
* To what extent is your code readable?<br />
* To what extent is your code commented?<br />
* To what extent are your variables well named?<br />
* To what extent do you adhere to style guide?<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
== A possible solution ==<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed"><br />
Click the expand link to see one possible solution, but NOT before you have tried and failed! <br />
<div class="mw-collapsible-content"><br />
<syntaxhighlight lang="python" ><br />
# I am very grateful to Filip, who wrote this code in 2019 as an 11th grade student. Thank you Filip! <br />
import random<br />
total = 0<br />
def roll(sides):<br />
sides = int(sides)<br />
return random.randint(1,sides)<br />
<br />
sides = input("Enter the number of sides on the dice: ")<br />
times = input("Enter the number of times you are rolling: ")<br />
<br />
times = int(times)<br />
for x in range(times):<br />
a = roll(sides)<br />
print("roll is", a)<br />
<br />
total = total + a<br />
<br />
print("The total sum is", total)<br />
<br />
</syntaxhighlight><br />
<br />
</div><br />
</div><br />
<br />
[[Category:problem set]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Recognize_an_image&diff=12188Recognize an image2024-02-05T19:57:20Z<p>Mr. MacKenty: /* The Problem */</p>
<hr />
<div>[[File:square.png|right|frame|This a problem set for you to work through <ref>http://www.flaticon.com/</ref>]]<br />
<br />
This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are: <br />
<br />
# to build your skill applying computational thinking to a problem<br />
# to assess your knowledge and skills of different programming practices<br />
<br />
<br />
== What is this problem set trying to do ==<br />
<br />
How does a computer system represent an image? How does a computer "see" an image? This problem asks you to write a program which identifies 6 different images. You must understand that images are stored as pixel values within an array. <br />
<br />
== The Problem ==<br />
<br />
# Please [https://github.com/bmackenty/studentPythonStuff/blob/master/data_rep_images.py download and save this file]<br />
# Please download the following images in the same directory as the file you saved. You will need to save image as:<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image1.png image1.png]<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image2.png image2.png]<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image3.png image3.png]<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image4.png image4.png]<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image5.png image5.png]<br />
## [https://github.com/bmackenty/studentPythonStuff/blob/master/image6.png image6.png]<br />
<br />
You must write a program which detects the position of edges. You must accurately identify the image. For example, if an image is a triangle your program should detect the edges and determine the image is a triangle.<br />
<br />
== How you will be assessed ==<br />
<br />
Your solution will be graded using the following axis: <br />
<br />
<br />
'''Scope'''<br />
* To what extent does your code implement the features required by our specification?<br />
* To what extent is there evidence of effort?<br />
<br />
'''Correctness'''<br />
* To what extent did your code meet specifications?<br />
* To what extent did your code meet unit tests?<br />
* To what extent is your code free of bugs?<br />
<br />
'''Design'''<br />
* To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?<br />
* To what extent is your code eliminating repetition?<br />
* To what extent is your code using functions appropriately?<br />
<br />
'''Style'''<br />
* To what extent is your code readable?<br />
* To what extent is your code commented?<br />
* To what extent are your variables well named?<br />
* To what extent do you adhere to style guide?<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
== A possible solution ==<br />
<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed"><br />
Click the expand link to see one possible solution, but NOT before you have tried and failed! <br />
<div class="mw-collapsible-content"><br />
<syntaxhighlight lang="python" ><br />
<br />
not yet!<br />
<br />
</syntaxhighlight><br />
<br />
</div><br />
</div><br />
<br />
[[Category:problem set]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Types_of_networks&diff=12187Types of networks2024-01-31T09:23:42Z<p>Mr. MacKenty: /* Types of networks you should be able to identify */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
There are different types of networks. Common types of networks are wide-area networks (WAN) and local area networks (LAN). Each network type helps us understand the purpose, design goals, and scale of the network. For example if we say a network is a LAN, we can assume it is a local network, probably in one building or in a reasonably restricted area. We might make an assumption that a LAN has a certain number of devices connected to it. However, if we say a network is a WAN, we might assume it is much larger, and designed to accommodate a much, much larger number of devices. [[File:TypesOfNetworks short.ogg]] <br />
<br />
== A helpful video == <br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/1gdrZwBouOs" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== Types of networks you should be able to identify ==<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
! Type of network !! Characteristics <br />
|-<br />
| local area network (LAN) || A local area network (LAN) is a computer network that interconnects computers within a limited area such as a residence, school, laboratory, university campus or office building<ref>https://en.wikipedia.org/wiki/Local_area_network</ref><br />
|-<br />
| virtual local area network (VLAN) || A virtual LAN (VLAN) is a logical overlay network that groups together a subset of devices that share a physical LAN, isolating the traffic for each group.<ref>https://www.techtarget.com/searchnetworking/definition/virtual-LAN</ref>. This video [https://www.youtube.com/watch?v=oo-hejIq3iQ might be helpful].<br />
|-<br />
| wide area network (WAN) || A wide area network (WAN) is a telecommunications network or computer network that extends over a large geographical distance. Wide area networks are often established with leased telecommunication circuits.<br />
Business, education and government entities use wide area networks to relay data to staff, students, clients, buyers, and suppliers from various locations across the world. In essence, this mode of telecommunication allows a business to effectively carry out its daily function regardless of location. The Internet may be considered a WAN.<ref>https://en.wikipedia.org/wiki/Wide_area_network</ref><br />
|-<br />
| storage area network (SAN) || [https://www.youtube.com/watch?v=BzjhHNfFQW0 watch this video, please]. A storage area network (SAN) is a network which provides access to consolidated, block level data storage. <ref>https://en.wikipedia.org/wiki/Storage_area_network</ref> Please don't confuse with [https://www.youtube.com/watch?v=3yZDDr0JKVc NAS].<br />
|-<br />
| wireless local area network (WLAN) || A wireless local area network (WLAN) is a wireless distribution method for two or more devices that use high-frequency radio waves and often include an access point to the Internet. A WLAN allows users to move around the coverage area, often a home or small office, while maintaining a network connection.<ref>https://www.techopedia.com/definition/5107/wireless-local-area-network-wlan</ref><br />
|-<br />
| internet || [https://www.youtube.com/watch?v=Dxcc6ycZ73M watch this]. The Internet is the global system of interconnected computer networks that use the Internet protocol suite (TCP/IP) to link devices worldwide. It is a network of networks that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies.<ref>https://en.wikipedia.org/wiki/Internet</ref><br />
|-<br />
| extranet || An extranet is a controlled private network that allows access to partners, vendors and suppliers or an authorized set of customers – normally to a subset of the information accessible from an organization's intranet. An extranet is similar to a DMZ in that it provides access to needed services for authorised parties, without granting access to an organization's entire network. An extranet is a private network organization.<ref>https://en.wikipedia.org/wiki/Extranet</ref><br />
|-<br />
| intranet || An intranet is a private network utilized by an organization. It's designed to facilitate internal communication, collaboration, and information sharing among members of the organization securely. Intranets are built using web technologies and provide a wide range of services similar to the internet, such as email, web sites, and databases, but are accessible only to authorized users within the organization. They often feature tools for document management, project management, CRM, and social networking to enhance productivity and engagement.<br />
|-<br />
| virtual private network (VPN) || A virtual private network (VPN) extends a private network across a public network, and enables users to send and receive data across shared or public networks as if their computing devices were directly connected to the private network. Applications running across the VPN may therefore benefit from the functionality, security, and management of the private network.<ref>https://en.wikipedia.org/wiki/Virtual_private_network</ref><br />
|-<br />
| personal area network (PAN) || A personal area network (PAN) is a computer network used for data transmission amongst devices such as computers, telephones, tablets and personal digital assistants.<ref>https://en.wikipedia.org/wiki/Personal_area_network</ref> It's designed for personal use and involves the interconnection of digital devices close to one person. Your smart phone, smart watch and perhaps your bluetooth headphones constitute a personal area network. <br />
|-<br />
| Peer-to-peer (P2P) || peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the application. They are said to form a peer-to-peer network of nodes.<ref>https://en.wikipedia.org/wiki/Peer-to-peer</ref><br />
|}<br />
<br />
== Standards == <br />
<br />
* Identify different types of networks.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Types_of_networks&diff=12186Types of networks2024-01-31T09:20:16Z<p>Mr. MacKenty: /* Types of networks you should be able to identify */</p>
<hr />
<div>[[file:network.png|right|frame|Networks<ref>http://www.flaticon.com/</ref>]]<br />
<br />
There are different types of networks. Common types of networks are wide-area networks (WAN) and local area networks (LAN). Each network type helps us understand the purpose, design goals, and scale of the network. For example if we say a network is a LAN, we can assume it is a local network, probably in one building or in a reasonably restricted area. We might make an assumption that a LAN has a certain number of devices connected to it. However, if we say a network is a WAN, we might assume it is much larger, and designed to accommodate a much, much larger number of devices. [[File:TypesOfNetworks short.ogg]] <br />
<br />
== A helpful video == <br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/1gdrZwBouOs" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== Types of networks you should be able to identify ==<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
! Type of network !! Characteristics <br />
|-<br />
| local area network (LAN) || A local area network (LAN) is a computer network that interconnects computers within a limited area such as a residence, school, laboratory, university campus or office building<ref>https://en.wikipedia.org/wiki/Local_area_network</ref><br />
|-<br />
| virtual local area network (VLAN) || A virtual LAN (VLAN) is a logical overlay network that groups together a subset of devices that share a physical LAN, isolating the traffic for each group.<ref>https://www.techtarget.com/searchnetworking/definition/virtual-LAN</ref>. This video [https://www.youtube.com/watch?v=oo-hejIq3iQ might be helpful].<br />
|-<br />
| wide area network (WAN) || A wide area network (WAN) is a telecommunications network or computer network that extends over a large geographical distance. Wide area networks are often established with leased telecommunication circuits.<br />
Business, education and government entities use wide area networks to relay data to staff, students, clients, buyers, and suppliers from various locations across the world. In essence, this mode of telecommunication allows a business to effectively carry out its daily function regardless of location. The Internet may be considered a WAN.<ref>https://en.wikipedia.org/wiki/Wide_area_network</ref><br />
|-<br />
| storage area network (SAN) || [https://www.youtube.com/watch?v=BzjhHNfFQW0 watch this video, please]. A storage area network (SAN) is a network which provides access to consolidated, block level data storage. <ref>https://en.wikipedia.org/wiki/Storage_area_network</ref> Please don't confuse with [https://www.youtube.com/watch?v=3yZDDr0JKVc NAS].<br />
|-<br />
| wireless local area network (WLAN) || A wireless local area network (WLAN) is a wireless distribution method for two or more devices that use high-frequency radio waves and often include an access point to the Internet. A WLAN allows users to move around the coverage area, often a home or small office, while maintaining a network connection.<ref>https://www.techopedia.com/definition/5107/wireless-local-area-network-wlan</ref><br />
|-<br />
| internet || [https://www.youtube.com/watch?v=Dxcc6ycZ73M watch this]. The Internet is the global system of interconnected computer networks that use the Internet protocol suite (TCP/IP) to link devices worldwide. It is a network of networks that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies.<ref>https://en.wikipedia.org/wiki/Internet</ref><br />
|-<br />
| extranet || An extranet is a controlled private network that allows access to partners, vendors and suppliers or an authorized set of customers – normally to a subset of the information accessible from an organization's intranet. An extranet is similar to a DMZ in that it provides access to needed services for authorised parties, without granting access to an organization's entire network. An extranet is a private network organization.<ref>https://en.wikipedia.org/wiki/Extranet</ref><br />
|-<br />
| intranet || An intranet is a private network utilized by an organization. It's designed to facilitate internal communication, collaboration, and information sharing among members of the organization securely. Intranets are built using web technologies and provide a wide range of services similar to the internet, such as email, web sites, and databases, but are accessible only to authorized users within the organization. They often feature tools for document management, project management, CRM, and social networking to enhance productivity and engagement.<br />
|-<br />
| virtual private network (VPN) || A virtual private network (VPN) extends a private network across a public network, and enables users to send and receive data across shared or public networks as if their computing devices were directly connected to the private network. Applications running across the VPN may therefore benefit from the functionality, security, and management of the private network.<ref>https://en.wikipedia.org/wiki/Virtual_private_network</ref><br />
|-<br />
| personal area network (PAN) || A personal area network (PAN) is a computer network used for data transmission amongst devices such as computers, telephones, tablets and personal digital assistants.<ref>https://en.wikipedia.org/wiki/Personal_area_network</ref><br />
|-<br />
| Peer-to-peer (P2P) || peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the application. They are said to form a peer-to-peer network of nodes.<ref>https://en.wikipedia.org/wiki/Peer-to-peer</ref><br />
|}<br />
<br />
== Standards == <br />
<br />
* Identify different types of networks.<br />
<br />
== References ==<br />
<br />
<references /><br />
<br />
[[Category:networks]]<br />
[[Category:formative assessment]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Archived_classes&diff=12185Archived classes2024-01-30T10:54:40Z<p>Mr. MacKenty: /* 2022 - 2023 school year */</p>
<hr />
<div>== 2023 - 2024 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2022 - 2023 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2021 - 2022 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2020 - 2021 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2019 - 2020 school year ==<br />
<br />
* I stopped hosting course materials on this wiki and drifted into Google classroom. Meh.<br />
<br />
== 2018 - 2019 school year ==<br />
<br />
* [[Archived 2018 - 2019 Solving Complex Problems Through Programming]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 6]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 8]]<br />
* [[Archived 2018 - 2019 IB Computer Science HL year 1]]<br />
* [[Archived 2018 - 2019 IB Computer Science SL year 1]]<br />
<br />
== 2017 - 2018 school year ==<br />
<br />
* [[Archived 2017 - 2018 Year 1 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 1 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 1]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 5]]<br />
<br />
== 2016 - 2017 school year ==<br />
<br />
* [[IB Computer Science HL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[IB Computer Science SL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[2016 - 2017 Designing Solutions Through Programming]] - this was an introduction to computer science offered during B block in room H121.<br />
<br />
== 2015 - 2016 school year ==<br />
<br />
* [[High School Exploring Computer Science]] met during F and G block in the High School in room 214a<br />
* [[Middle School Exploring Computer Science]] met during B block in the Middle School in room 214a<br />
* [[Design 6]] was a semester course for grade 6 students delivered during the 2016 2017 school year in the design center.<br />
<br />
[[Category:archived course]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Archived_classes&diff=12184Archived classes2024-01-30T10:54:34Z<p>Mr. MacKenty: /* 2023 - 2024 school year */</p>
<hr />
<div>== 2023 - 2024 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2022 - 2023 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
<br />
== 2021 - 2022 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2020 - 2021 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2019 - 2020 school year ==<br />
<br />
* I stopped hosting course materials on this wiki and drifted into Google classroom. Meh.<br />
<br />
== 2018 - 2019 school year ==<br />
<br />
* [[Archived 2018 - 2019 Solving Complex Problems Through Programming]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 6]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 8]]<br />
* [[Archived 2018 - 2019 IB Computer Science HL year 1]]<br />
* [[Archived 2018 - 2019 IB Computer Science SL year 1]]<br />
<br />
== 2017 - 2018 school year ==<br />
<br />
* [[Archived 2017 - 2018 Year 1 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 1 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 1]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 5]]<br />
<br />
== 2016 - 2017 school year ==<br />
<br />
* [[IB Computer Science HL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[IB Computer Science SL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[2016 - 2017 Designing Solutions Through Programming]] - this was an introduction to computer science offered during B block in room H121.<br />
<br />
== 2015 - 2016 school year ==<br />
<br />
* [[High School Exploring Computer Science]] met during F and G block in the High School in room 214a<br />
* [[Middle School Exploring Computer Science]] met during B block in the Middle School in room 214a<br />
* [[Design 6]] was a semester course for grade 6 students delivered during the 2016 2017 school year in the design center.<br />
<br />
[[Category:archived course]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Archived_classes&diff=12183Archived classes2024-01-30T10:54:25Z<p>Mr. MacKenty: </p>
<hr />
<div>== 2023 - 2024 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
<br />
== 2022 - 2023 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
<br />
== 2021 - 2022 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2020 - 2021 school year ==<br />
<br />
* I use [https://courses.computersciencewiki.org/ courses.computersciencewiki.org] in addition to google classroom for day-to-day course information<br />
<br />
== 2019 - 2020 school year ==<br />
<br />
* I stopped hosting course materials on this wiki and drifted into Google classroom. Meh.<br />
<br />
== 2018 - 2019 school year ==<br />
<br />
* [[Archived 2018 - 2019 Solving Complex Problems Through Programming]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 6]]<br />
* [[Archived 2018 - 2019 Designing Solutions Through Programming Block 8]]<br />
* [[Archived 2018 - 2019 IB Computer Science HL year 1]]<br />
* [[Archived 2018 - 2019 IB Computer Science SL year 1]]<br />
<br />
== 2017 - 2018 school year ==<br />
<br />
* [[Archived 2017 - 2018 Year 1 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 1 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 SL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Year 2 HL IB Computer Science]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 1]]<br />
* [[Archived 2017 - 2018 Designing Solutions Through Programming - Block 5]]<br />
<br />
== 2016 - 2017 school year ==<br />
<br />
* [[IB Computer Science HL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[IB Computer Science SL]] - this was the year 1 course offered 2016 - 2017 during A block in room H121<br />
* [[2016 - 2017 Designing Solutions Through Programming]] - this was an introduction to computer science offered during B block in room H121.<br />
<br />
== 2015 - 2016 school year ==<br />
<br />
* [[High School Exploring Computer Science]] met during F and G block in the High School in room 214a<br />
* [[Middle School Exploring Computer Science]] met during B block in the Middle School in room 214a<br />
* [[Design 6]] was a semester course for grade 6 students delivered during the 2016 2017 school year in the design center.<br />
<br />
[[Category:archived course]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Socket&diff=12182Socket2024-01-22T22:03:11Z<p>Mr. MacKenty: </p>
<hr />
<div>== Introduction ==<br />
Sockets are a critical component in network programming, serving as endpoints for exchanging data across a computer network. They allow different processes, possibly on different machines, to communicate, forming the backbone of internet and intranet communication.<br />
<br />
== Understanding Sockets ==<br />
=== Definition ===<br />
A socket is an interface between application layer and transport layer within a network stack. It allows an application to send and receive data over network protocols like TCP/IP.<br />
<br />
=== How Sockets Work ===<br />
Sockets enable communication between two different processes on the same or different machines. To achieve this, each socket is bound to a specific port number and IP address, creating a unique identifier for the communication endpoint.<br />
<br />
== Types of Sockets ==<br />
=== Stream Sockets (TCP Sockets) ===<br />
* '''Characteristics''': Connection-oriented, reliable, and guarantee that data will arrive in order and without duplication.<br />
* '''Usage''': Commonly used in applications where reliable and ordered delivery of data is crucial, such as web servers, database servers, and email transfer.<br />
<br />
=== Datagram Sockets (UDP Sockets) ===<br />
* '''Characteristics''': Connectionless, less reliable, and do not guarantee order or delivery of data.<br />
* '''Usage''': Suited for applications where speed and efficiency are more critical than reliability of data transfer, like video streaming, online gaming, or VoIP.<br />
<br />
== Socket Life Cycle ==<br />
=== Creation ===<br />
A socket is created with specified parameters, including the domain (like IPv4 or IPv6), type (stream or datagram), and protocol (typically TCP or UDP).<br />
<br />
=== Binding ===<br />
A server socket is bound to a specific address, which includes an IP address and a port number. This step is crucial for the server to define where it should listen for incoming requests.<br />
<br />
=== Listening ===<br />
After binding, the server socket listens for incoming connections, setting up a queue for connections if multiple clients attempt to connect simultaneously.<br />
<br />
=== Accepting Connections ===<br />
The server accepts a connection request from a client, resulting in the creation of a new socket dedicated to that particular connection. This allows the server to continue listening for new requests on the original socket.<br />
<br />
=== Data Transfer ===<br />
Once a connection is established, data can be sent and received between the server and client over the network.<br />
<br />
=== Closing the Socket ===<br />
After the communication is complete, the socket is closed. This step is essential to free up system resources and avoid potential security risks.<br />
<br />
== Advanced Concepts ==<br />
=== Non-blocking Sockets ===<br />
Non-blocking sockets return control to the application immediately, whether the operation is complete or not. This behavior is different from blocking sockets, which wait until the operation completes before returning control.<br />
<br />
=== Secure Sockets (SSL/TLS) ===<br />
Secure sockets layer (SSL) and transport layer security (TLS) are protocols for encrypting information sent over a socket. This is crucial for secure communications, such as in HTTPS.<br />
<br />
== Security Considerations ==<br />
* Always validate data received over a socket to prevent security vulnerabilities.<br />
* Implement proper error handling to avoid crashes or unwanted behavior in case of network issues.<br />
* Be cautious with socket exposure to public networks to prevent attacks like Denial of Service (DoS).<br />
<br />
== Conclusion ==<br />
Sockets are a cornerstone of network programming, enabling applications to communicate over a network. Understanding their operation, types, and best practices is essential for any network-based application development.<br />
<br />
== See also == <br />
<br />
* [[Ports]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Socket&diff=12181Socket2024-01-22T22:01:43Z<p>Mr. MacKenty: </p>
<hr />
<div>== Introduction ==<br />
Sockets are a critical component in network programming, serving as endpoints for exchanging data across a computer network. They allow different processes, possibly on different machines, to communicate, forming the backbone of internet and intranet communication.<br />
<br />
== Understanding Sockets ==<br />
=== Definition ===<br />
A socket is an interface between application layer and transport layer within a network stack. It allows an application to send and receive data over network protocols like TCP/IP.<br />
<br />
=== How Sockets Work ===<br />
Sockets enable communication between two different processes on the same or different machines. To achieve this, each socket is bound to a specific port number and IP address, creating a unique identifier for the communication endpoint.<br />
<br />
== Types of Sockets ==<br />
=== Stream Sockets (TCP Sockets) ===<br />
* '''Characteristics''': Connection-oriented, reliable, and guarantee that data will arrive in order and without duplication.<br />
* '''Usage''': Commonly used in applications where reliable and ordered delivery of data is crucial, such as web servers, database servers, and email transfer.<br />
<br />
=== Datagram Sockets (UDP Sockets) ===<br />
* '''Characteristics''': Connectionless, less reliable, and do not guarantee order or delivery of data.<br />
* '''Usage''': Suited for applications where speed and efficiency are more critical than reliability of data transfer, like video streaming, online gaming, or VoIP.<br />
<br />
== Socket Life Cycle ==<br />
=== Creation ===<br />
A socket is created with specified parameters, including the domain (like IPv4 or IPv6), type (stream or datagram), and protocol (typically TCP or UDP).<br />
<br />
=== Binding ===<br />
A server socket is bound to a specific address, which includes an IP address and a port number. This step is crucial for the server to define where it should listen for incoming requests.<br />
<br />
=== Listening ===<br />
After binding, the server socket listens for incoming connections, setting up a queue for connections if multiple clients attempt to connect simultaneously.<br />
<br />
=== Accepting Connections ===<br />
The server accepts a connection request from a client, resulting in the creation of a new socket dedicated to that particular connection. This allows the server to continue listening for new requests on the original socket.<br />
<br />
=== Data Transfer ===<br />
Once a connection is established, data can be sent and received between the server and client over the network.<br />
<br />
=== Closing the Socket ===<br />
After the communication is complete, the socket is closed. This step is essential to free up system resources and avoid potential security risks.<br />
<br />
== Advanced Concepts ==<br />
=== Non-blocking Sockets ===<br />
Non-blocking sockets return control to the application immediately, whether the operation is complete or not. This behavior is different from blocking sockets, which wait until the operation completes before returning control.<br />
<br />
=== Secure Sockets (SSL/TLS) ===<br />
Secure sockets layer (SSL) and transport layer security (TLS) are protocols for encrypting information sent over a socket. This is crucial for secure communications, such as in HTTPS.<br />
<br />
== Security Considerations ==<br />
* Always validate data received over a socket to prevent security vulnerabilities.<br />
* Implement proper error handling to avoid crashes or unwanted behavior in case of network issues.<br />
* Be cautious with socket exposure to public networks to prevent attacks like Denial of Service (DoS).<br />
<br />
== Conclusion ==<br />
Sockets are a cornerstone of network programming, enabling applications to communicate over a network. Understanding their operation, types, and best practices is essential for any network-based application development.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Socket&diff=12180Socket2024-01-22T21:59:11Z<p>Mr. MacKenty: </p>
<hr />
<div>== Overview ==<br />
Sockets are an endpoint for sending and receiving data across a computer network. They enable communication between different processes, either within the same machine or over different machines. Sockets are a key concept in network programming and are used extensively in internet communications.<br />
<br />
== Types of Sockets ==<br />
There are two main types of sockets:<br />
<br />
=== Stream Sockets ===<br />
* '''Protocol''': Typically use Transmission Control Protocol (TCP).<br />
* '''Characteristics''': <br />
** Connection-oriented.<br />
** Data is read in a continuous stream.<br />
* '''Use Case''': Ideal for scenarios where reliable communication is crucial, like file transfers or sending/receiving messages in chat applications.<br />
<br />
=== Datagram Sockets ===<br />
* '''Protocol''': Usually employ User Datagram Protocol (UDP).<br />
* '''Characteristics''': <br />
** Connectionless.<br />
** Data is read in chunks (datagrams).<br />
* '''Use Case''': Suited for applications where speed is more critical than reliability, such as online games or streaming services.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Socket&diff=12179Socket2024-01-22T21:58:58Z<p>Mr. MacKenty: </p>
<hr />
<div>= Sockets =<br />
<br />
== Overview ==<br />
Sockets are an endpoint for sending and receiving data across a computer network. They enable communication between different processes, either within the same machine or over different machines. Sockets are a key concept in network programming and are used extensively in internet communications.<br />
<br />
== Types of Sockets ==<br />
There are two main types of sockets:<br />
<br />
=== Stream Sockets ===<br />
* '''Protocol''': Typically use Transmission Control Protocol (TCP).<br />
* '''Characteristics''': <br />
** Connection-oriented.<br />
** Data is read in a continuous stream.<br />
* '''Use Case''': Ideal for scenarios where reliable communication is crucial, like file transfers or sending/receiving messages in chat applications.<br />
<br />
=== Datagram Sockets ===<br />
* '''Protocol''': Usually employ User Datagram Protocol (UDP).<br />
* '''Characteristics''': <br />
** Connectionless.<br />
** Data is read in chunks (datagrams).<br />
* '''Use Case''': Suited for applications where speed is more critical than reliability, such as online games or streaming services.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Advantages_and_disadvantages_of_simulation&diff=12177Advantages and disadvantages of simulation2023-11-15T15:34:42Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Advantages and Disadvantages of Simulation vs. Real-Life Observation =<br />
<br />
== Advantages of Simulation ==<br />
* '''Control over Variables:''' Ability to manipulate and control variables which might be impossible or unethical in real life.<br />
* '''Risk-Free Environment:''' Testing and experimenting in a safe, virtual environment without real-world risks.<br />
* '''Cost-Effective:''' Often more economical than setting up real-life experiments, especially in complex scenarios like aerospace or medical research.<br />
* '''Time Compression:''' Ability to simulate long-term processes in a short amount of time.<br />
* '''Repeatable and Consistent:''' Simulations can be run multiple times to test different scenarios, ensuring consistent conditions for each test.<br />
<br />
== Disadvantages of Simulation ==<br />
* '''Accuracy and Validity:''' Limitations in accurately modeling and replicating the complexity of real-life situations.<br />
* '''Data Requirements:''' Need for extensive and accurate data to build realistic models, which can be difficult to obtain.<br />
* '''Simplification of Realities:''' Inevitable simplification or omission of certain real-world factors, leading to less nuanced outcomes.<br />
* '''Technical Skills Required:''' Requires significant technical and domain-specific expertise to develop and interpret simulations.<br />
* '''Dependency on Technology:''' Reliance on software and hardware, which can introduce its own set of limitations and biases.<br />
<br />
== Case Example: Environmental Impact Studies ==<br />
* '''Advantages in Simulation:'''<br />
** Allows for the assessment of long-term environmental impacts without actually altering the environment.<br />
** Enables exploration of various 'what-if' scenarios, such as extreme weather conditions or pollution levels.<br />
* '''Disadvantages in Simulation:'''<br />
** May not fully capture complex interactions within ecosystems.<br />
** Results might be influenced by the assumptions and limitations of the chosen models and algorithms.<br />
<br />
== Conclusion ==<br />
* '''Balanced Approach:''' Emphasizing the importance of using simulation as a complementary tool rather than a complete substitute for real-life observation.<br />
* '''Ongoing Evaluation:''' The need for continuous evaluation and validation of simulation models against real-world data to ensure accuracy and relevance.<br />
<br />
== Standards ==<br />
* Outline the advantages and disadvantages of simulation in a given situation rather than simply observing a real-life situation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Changes_in_data_collection_that_could_improve_the_model_or_simulation&diff=12176Changes in data collection that could improve the model or simulation2023-11-15T14:54:49Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Changes in data collection that could improve the model or simulation<br />
<br />
* http://www.traffic-simulation.de/<br />
<br />
== Standards ==<br />
* Describe Changes in data collection that could improve the model or simulation<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Changes_in_data_collection_that_could_improve_the_model_or_simulation&diff=12175Changes in data collection that could improve the model or simulation2023-11-15T14:54:39Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Changes in data collection that could improve the model or simulation<br />
<br />
* http://www.traffic-simulation.de/<br />
* http://eliaszerrouq.nl/jseco/<br />
<br />
== Standards ==<br />
* Describe Changes in data collection that could improve the model or simulation<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Examples_of_simulations_that_involve_changes_in_rules,_formulae_and_algorithms&diff=12174Examples of simulations that involve changes in rules, formulae and algorithms2023-11-15T14:51:33Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Describe changes in rules, formulae and algorithms that would improve the correspondence between results and observed data.<br />
<br />
* http://www.traffic-simulation.de/<br />
* http://eliaszerrouq.nl/jseco/<br />
<br />
<br />
= Examples of Simulations Involving Changes in Rules, Formulae, and Algorithms =<br />
<br />
== Traffic Flow Simulation ==<br />
* '''Description:''' Simulating traffic patterns in urban areas.<br />
* '''Rule Changes:''' Altering traffic signal timings or road layouts.<br />
* '''Formula Changes:''' Adjusting the parameters of the traffic flow models, like vehicle acceleration and deceleration rates.<br />
* '''Algorithm Changes:''' Implementing different routing algorithms for vehicles to optimize flow.<br />
<br />
== Climate Change Simulation ==<br />
* '''Description:''' Modeling climate patterns and predicting future climate changes.<br />
* '''Rule Changes:''' Modifying assumptions about carbon emissions or deforestation rates.<br />
* '''Formula Changes:''' Adjusting the equations governing atmospheric physics and ocean currents.<br />
* '''Algorithm Changes:''' Using different predictive models to forecast long-term climate changes.<br />
<br />
== Stock Market Simulation ==<br />
* '''Description:''' Simulating stock market dynamics and investor behavior.<br />
* '''Rule Changes:''' Introducing new financial regulations or market mechanisms.<br />
* '''Formula Changes:''' Changing the mathematical models for stock valuation or market volatility.<br />
* '''Algorithm Changes:''' Implementing alternative investment strategies or machine learning models for trading.<br />
<br />
== Epidemic Modelling ==<br />
* '''Description:''' Simulating the spread of infectious diseases.<br />
* '''Rule Changes:''' Implementing different public health policies like social distancing or vaccination programs.<br />
* '''Formula Changes:''' Adjusting the infection and recovery rates in the disease spread models.<br />
* '''Algorithm Changes:''' Using different computational models to predict the spread, like agent-based models versus compartmental models.<br />
<br />
== Ecosystem Simulation ==<br />
* '''Description:''' Modeling interactions within an ecosystem.<br />
* '''Rule Changes:''' Introducing or removing species from the ecosystem.<br />
* '''Formula Changes:''' Adjusting parameters like birth rates, death rates, or predation rates.<br />
* '''Algorithm Changes:''' Implementing different models of population dynamics, such as Lotka-Volterra equations versus individual-based models.<br />
<br />
<br />
<br />
== Standards ==<br />
* Construct examples of simulations that involve changes in rules, formulae and algorithms.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Software_and_hardware_required_for_a_simulation&diff=12173Software and hardware required for a simulation2023-11-15T14:40:12Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
= Simulation Setup: Hardware and Software Requirements =<br />
<br />
== Hardware Requirements ==<br />
* '''Processor (CPU):''' High-performance CPU (e.g., Intel Core i7 or AMD Ryzen 7) for complex calculations.<br />
* '''Graphics Processing Unit (GPU):''' Dedicated GPU (e.g., NVIDIA or AMD Radeon) for simulations requiring graphical rendering or parallel processing.<br />
* '''Memory (RAM):''' Minimum 8GB RAM, recommended 16GB or higher for larger simulations.<br />
* '''Storage:''' SSD (Solid State Drive) for faster data access and storage. Capacity dependent on the size of the simulation data.<br />
* '''Networking:''' High-speed internet connection for simulations that require cloud computing resources or real-time data feeds.<br />
* '''Cooling System:''' Efficient cooling system to prevent overheating during intensive computational tasks.<br />
<br />
== Software Requirements ==<br />
* '''Operating System:''' Modern OS like Windows, Linux, or macOS.<br />
* '''Simulation Software:'''<br />
** For physics-based simulations: Software like ANSYS, SolidWorks, or MATLAB.<br />
** For environmental and geographical simulations: GIS software like ArcGIS or QGIS.<br />
** For AI and machine learning simulations: Python with libraries like TensorFlow, PyTorch, or Scikit-learn.<br />
* '''Data Analysis Tools:''' Software for analyzing results, such as Python with Pandas, R, or Excel.<br />
* '''Visualization Software:''' Tools like Tableau, Gephi, or Python libraries (Matplotlib, Seaborn) for data visualization.<br />
* '''Code Editors and IDEs:''' Visual Studio Code, PyCharm, or Eclipse for software development and scripting.<br />
* '''Version Control:''' Git and platforms like GitHub or GitLab for code versioning and collaboration.<br />
* '''Cloud Computing Services (Optional):''' AWS, Google Cloud, or Azure for access to additional computational resources.<br />
<br />
== Additional Considerations ==<br />
* '''Backup Solutions:''' Regular backup strategy for data safety (e.g., external hard drives, cloud storage services).<br />
* '''Security Software:''' Antivirus and firewall to protect the simulation data and computing resources.<br />
* '''Power Supply:''' Uninterruptible Power Supply (UPS) to prevent data loss during power outages.<br />
<br />
== Standards ==<br />
* Outline the software and hardware required for a simulation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Reliability_of_a_simulation&diff=12172Reliability of a simulation2023-11-15T14:29:15Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
= Assessing the Reliability of Simulations: Comparison with Observed Data =<br />
<br />
== Introduction ==<br />
* '''Purpose:''' This section provides an overview of the importance of comparing simulation results with observed data to assess the reliability of simulations.<br />
<br />
== Factors Affecting Simulation Reliability ==<br />
* '''Model Accuracy:''' The degree to which the simulation model accurately represents the real-world system or phenomenon.<br />
* '''Data Quality:''' The accuracy and completeness of the data used in the simulation.<br />
* '''Algorithmic Fidelity:''' The effectiveness of the algorithms used in capturing the dynamics of the real-world system.<br />
<br />
== Methodology for Comparison ==<br />
* '''Direct Comparison:''' Matching simulation outputs directly with real-world observed data.<br />
* '''Statistical Analysis:''' Using statistical methods like correlation coefficients, mean square error, or regression analysis to compare data sets.<br />
* '''Sensitivity Analysis:''' Assessing how changes in simulation parameters affect the outcomes and comparing these variations with observed data trends.<br />
<br />
== Case Studies ==<br />
=== Traffic Flow Simulation ===<br />
* '''Simulation:''' Predicting traffic patterns in a city.<br />
* '''Observed Data:''' Real traffic flow data collected from sensors and cameras.<br />
* '''Comparison Results:''' Analyzing discrepancies between predicted and actual traffic densities at different times of the day.<br />
<br />
=== Climate Change Model ===<br />
* '''Simulation:''' Projecting climate change impacts over the next century.<br />
* '''Observed Data:''' Historical climate data such as temperature and precipitation records.<br />
* '''Comparison Results:''' Evaluating the simulation's ability to reproduce past climate trends and variations.<br />
<br />
=== Financial Market Forecasting ===<br />
* '''Simulation:''' Predicting stock market trends.<br />
* '''Observed Data:''' Historical stock market performance data.<br />
* '''Comparison Results:''' Assessing the accuracy of the simulation in mirroring market fluctuations and major economic events.<br />
<br />
== Conclusion ==<br />
* '''Importance of Validation:''' Emphasizing the necessity of continuous validation of simulation models against observed data.<br />
* '''Limitations and Challenges:''' Discussing the inherent limitations in simulations and the challenges in achieving perfect alignment with real-world data.<br />
* '''Future Directions:''' Suggesting areas for further research and improvement in simulation methodologies for enhanced reliability.<br />
<br />
<br />
== Standards ==<br />
* Discuss the reliability of a simulation by comparing generated results with data that were observed in the original problem.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Reliability_of_a_simulation&diff=12171Reliability of a simulation2023-11-15T14:28:49Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Certainly, Mr. MacKenty. Here's a discussion in MediaWiki format on the reliability of a simulation by comparing its generated results with observed data from the original problem. This can be an excellent teaching resource for demonstrating the evaluation of simulation accuracy and reliability:<br />
<br />
```mediawiki<br />
= Assessing the Reliability of Simulations: Comparison with Observed Data =<br />
<br />
== Introduction ==<br />
* '''Purpose:''' This section provides an overview of the importance of comparing simulation results with observed data to assess the reliability of simulations.<br />
<br />
== Factors Affecting Simulation Reliability ==<br />
* '''Model Accuracy:''' The degree to which the simulation model accurately represents the real-world system or phenomenon.<br />
* '''Data Quality:''' The accuracy and completeness of the data used in the simulation.<br />
* '''Algorithmic Fidelity:''' The effectiveness of the algorithms used in capturing the dynamics of the real-world system.<br />
<br />
== Methodology for Comparison ==<br />
* '''Direct Comparison:''' Matching simulation outputs directly with real-world observed data.<br />
* '''Statistical Analysis:''' Using statistical methods like correlation coefficients, mean square error, or regression analysis to compare data sets.<br />
* '''Sensitivity Analysis:''' Assessing how changes in simulation parameters affect the outcomes and comparing these variations with observed data trends.<br />
<br />
== Case Studies ==<br />
=== Traffic Flow Simulation ===<br />
* '''Simulation:''' Predicting traffic patterns in a city.<br />
* '''Observed Data:''' Real traffic flow data collected from sensors and cameras.<br />
* '''Comparison Results:''' Analyzing discrepancies between predicted and actual traffic densities at different times of the day.<br />
<br />
=== Climate Change Model ===<br />
* '''Simulation:''' Projecting climate change impacts over the next century.<br />
* '''Observed Data:''' Historical climate data such as temperature and precipitation records.<br />
* '''Comparison Results:''' Evaluating the simulation's ability to reproduce past climate trends and variations.<br />
<br />
=== Financial Market Forecasting ===<br />
* '''Simulation:''' Predicting stock market trends.<br />
* '''Observed Data:''' Historical stock market performance data.<br />
* '''Comparison Results:''' Assessing the accuracy of the simulation in mirroring market fluctuations and major economic events.<br />
<br />
== Conclusion ==<br />
* '''Importance of Validation:''' Emphasizing the necessity of continuous validation of simulation models against observed data.<br />
* '''Limitations and Challenges:''' Discussing the inherent limitations in simulations and the challenges in achieving perfect alignment with real-world data.<br />
* '''Future Directions:''' Suggesting areas for further research and improvement in simulation methodologies for enhanced reliability.<br />
<br />
<br />
== Standards ==<br />
* Discuss the reliability of a simulation by comparing generated results with data that were observed in the original problem.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Examples_of_simulations_that_involve_changes_in_rules,_formulae_and_algorithms&diff=12170Examples of simulations that involve changes in rules, formulae and algorithms2023-11-15T14:22:20Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Describe changes in rules, formulae and algorithms that would improve the correspondence between results and observed data.<br />
<br />
* http://www.traffic-simulation.de/<br />
* http://eliaszerrouq.nl/jseco/<br />
<br />
Certainly, Mr. MacKenty. Here's a MediaWiki formatted outline that provides examples of simulations which involve changes in rules, formulae, and algorithms. This should be useful for illustrating the concept in your teaching materials:<br />
<br />
```mediawiki<br />
= Examples of Simulations Involving Changes in Rules, Formulae, and Algorithms =<br />
<br />
== Traffic Flow Simulation ==<br />
* '''Description:''' Simulating traffic patterns in urban areas.<br />
* '''Rule Changes:''' Altering traffic signal timings or road layouts.<br />
* '''Formula Changes:''' Adjusting the parameters of the traffic flow models, like vehicle acceleration and deceleration rates.<br />
* '''Algorithm Changes:''' Implementing different routing algorithms for vehicles to optimize flow.<br />
<br />
== Climate Change Simulation ==<br />
* '''Description:''' Modeling climate patterns and predicting future climate changes.<br />
* '''Rule Changes:''' Modifying assumptions about carbon emissions or deforestation rates.<br />
* '''Formula Changes:''' Adjusting the equations governing atmospheric physics and ocean currents.<br />
* '''Algorithm Changes:''' Using different predictive models to forecast long-term climate changes.<br />
<br />
== Stock Market Simulation ==<br />
* '''Description:''' Simulating stock market dynamics and investor behavior.<br />
* '''Rule Changes:''' Introducing new financial regulations or market mechanisms.<br />
* '''Formula Changes:''' Changing the mathematical models for stock valuation or market volatility.<br />
* '''Algorithm Changes:''' Implementing alternative investment strategies or machine learning models for trading.<br />
<br />
== Epidemic Modelling ==<br />
* '''Description:''' Simulating the spread of infectious diseases.<br />
* '''Rule Changes:''' Implementing different public health policies like social distancing or vaccination programs.<br />
* '''Formula Changes:''' Adjusting the infection and recovery rates in the disease spread models.<br />
* '''Algorithm Changes:''' Using different computational models to predict the spread, like agent-based models versus compartmental models.<br />
<br />
== Ecosystem Simulation ==<br />
* '''Description:''' Modeling interactions within an ecosystem.<br />
* '''Rule Changes:''' Introducing or removing species from the ecosystem.<br />
* '''Formula Changes:''' Adjusting parameters like birth rates, death rates, or predation rates.<br />
* '''Algorithm Changes:''' Implementing different models of population dynamics, such as Lotka-Volterra equations versus individual-based models.<br />
<br />
<br />
<br />
== Standards ==<br />
* Construct examples of simulations that involve changes in rules, formulae and algorithms.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Software_and_hardware_required_for_a_simulation&diff=12169Software and hardware required for a simulation2023-11-15T14:18:41Z<p>Mr. MacKenty: /* Additional Considerations */</p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Certainly, Mr. MacKenty. Here's an outline formatted in MediaWiki markup, which you can use in your teaching materials to describe the software and hardware required for running a simulation:<br />
<br />
```mediawiki<br />
= Simulation Setup: Hardware and Software Requirements =<br />
<br />
== Hardware Requirements ==<br />
* '''Processor (CPU):''' High-performance CPU (e.g., Intel Core i7 or AMD Ryzen 7) for complex calculations.<br />
* '''Graphics Processing Unit (GPU):''' Dedicated GPU (e.g., NVIDIA or AMD Radeon) for simulations requiring graphical rendering or parallel processing.<br />
* '''Memory (RAM):''' Minimum 8GB RAM, recommended 16GB or higher for larger simulations.<br />
* '''Storage:''' SSD (Solid State Drive) for faster data access and storage. Capacity dependent on the size of the simulation data.<br />
* '''Networking:''' High-speed internet connection for simulations that require cloud computing resources or real-time data feeds.<br />
* '''Cooling System:''' Efficient cooling system to prevent overheating during intensive computational tasks.<br />
<br />
== Software Requirements ==<br />
* '''Operating System:''' Modern OS like Windows, Linux, or macOS.<br />
* '''Simulation Software:'''<br />
** For physics-based simulations: Software like ANSYS, SolidWorks, or MATLAB.<br />
** For environmental and geographical simulations: GIS software like ArcGIS or QGIS.<br />
** For AI and machine learning simulations: Python with libraries like TensorFlow, PyTorch, or Scikit-learn.<br />
* '''Data Analysis Tools:''' Software for analyzing results, such as Python with Pandas, R, or Excel.<br />
* '''Visualization Software:''' Tools like Tableau, Gephi, or Python libraries (Matplotlib, Seaborn) for data visualization.<br />
* '''Code Editors and IDEs:''' Visual Studio Code, PyCharm, or Eclipse for software development and scripting.<br />
* '''Version Control:''' Git and platforms like GitHub or GitLab for code versioning and collaboration.<br />
* '''Cloud Computing Services (Optional):''' AWS, Google Cloud, or Azure for access to additional computational resources.<br />
<br />
== Additional Considerations ==<br />
* '''Backup Solutions:''' Regular backup strategy for data safety (e.g., external hard drives, cloud storage services).<br />
* '''Security Software:''' Antivirus and firewall to protect the simulation data and computing resources.<br />
* '''Power Supply:''' Uninterruptible Power Supply (UPS) to prevent data loss during power outages.<br />
<br />
== Standards ==<br />
* Outline the software and hardware required for a simulation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Software_and_hardware_required_for_a_simulation&diff=12168Software and hardware required for a simulation2023-11-15T14:18:25Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
Certainly, Mr. MacKenty. Here's an outline formatted in MediaWiki markup, which you can use in your teaching materials to describe the software and hardware required for running a simulation:<br />
<br />
```mediawiki<br />
= Simulation Setup: Hardware and Software Requirements =<br />
<br />
== Hardware Requirements ==<br />
* '''Processor (CPU):''' High-performance CPU (e.g., Intel Core i7 or AMD Ryzen 7) for complex calculations.<br />
* '''Graphics Processing Unit (GPU):''' Dedicated GPU (e.g., NVIDIA or AMD Radeon) for simulations requiring graphical rendering or parallel processing.<br />
* '''Memory (RAM):''' Minimum 8GB RAM, recommended 16GB or higher for larger simulations.<br />
* '''Storage:''' SSD (Solid State Drive) for faster data access and storage. Capacity dependent on the size of the simulation data.<br />
* '''Networking:''' High-speed internet connection for simulations that require cloud computing resources or real-time data feeds.<br />
* '''Cooling System:''' Efficient cooling system to prevent overheating during intensive computational tasks.<br />
<br />
== Software Requirements ==<br />
* '''Operating System:''' Modern OS like Windows, Linux, or macOS.<br />
* '''Simulation Software:'''<br />
** For physics-based simulations: Software like ANSYS, SolidWorks, or MATLAB.<br />
** For environmental and geographical simulations: GIS software like ArcGIS or QGIS.<br />
** For AI and machine learning simulations: Python with libraries like TensorFlow, PyTorch, or Scikit-learn.<br />
* '''Data Analysis Tools:''' Software for analyzing results, such as Python with Pandas, R, or Excel.<br />
* '''Visualization Software:''' Tools like Tableau, Gephi, or Python libraries (Matplotlib, Seaborn) for data visualization.<br />
* '''Code Editors and IDEs:''' Visual Studio Code, PyCharm, or Eclipse for software development and scripting.<br />
* '''Version Control:''' Git and platforms like GitHub or GitLab for code versioning and collaboration.<br />
* '''Cloud Computing Services (Optional):''' AWS, Google Cloud, or Azure for access to additional computational resources.<br />
<br />
== Additional Considerations ==<br />
* '''Backup Solutions:''' Regular backup strategy for data safety (e.g., external hard drives, cloud storage services).<br />
* '''Security Software:''' Antivirus and firewall to protect the simulation data and computing resources.<br />
* '''Power Supply:''' Uninterruptible Power Supply (UPS) to prevent data loss during power outages.<br />
```<br />
<br />
This outline is structured to give an overview of the basic requirements for setting up a simulation environment, covering both the hardware and software aspects. It can be a great starting point for discussions in your class about the practical aspects of running simulations in various fields.<br />
<br />
== Standards ==<br />
* Outline the software and hardware required for a simulation.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Changes_in_rules,_formulae_and_algorithms&diff=12167Changes in rules, formulae and algorithms2023-11-15T14:16:00Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
The process of refining rules, formulae, and algorithms to improve their correspondence with observed data is a fundamental aspect of scientific and computational work. This process is especially relevant in fields like software engineering, data science, and machine learning. Here are some strategies to consider:<br />
<br />
1. Iterative Refinement: This involves repeatedly adjusting the parameters of an algorithm based on the outcomes they produce compared to the observed data. It's a trial-and-error method where each iteration aims to reduce the difference between the model's predictions and real-world observations.<br />
<br />
2. Incorporating More Data: Sometimes, the discrepancy between results and observed data is due to insufficient or biased data. By adding more diverse and representative data, the model can learn to generalize better and thus produce results that are more in line with reality.<br />
<br />
3. Feature Engineering: In machine learning, feature engineering involves selecting, modifying, or creating new input variables (features) that are more predictive of the desired output. This can drastically improve the model's performance.<br />
<br />
4. Model Complexity Adjustment: Simplifying a model (to avoid overfitting) or making it more complex (to avoid underfitting) can help in aligning the results with observed data. This is often a balancing act, as too simple a model might not capture all nuances, while too complex a model might learn noise rather than signal.<br />
<br />
5. Cross-Validation: This technique involves dividing the dataset into several segments, using some for training the model and others for testing it. This helps in validating the model's performance and its generalizability to new, unseen data.<br />
<br />
6. Algorithmic Tweaking: Depending on the context, different algorithms may be more effective. For instance, in machine learning, switching from a linear model to a non-linear one might better capture the complexities of the data.<br />
<br />
7. Regularization Techniques: These techniques add a penalty to the model for complexity, thereby helping to prevent overfitting. This can improve the model’s performance on new, unseen data.<br />
<br />
8. Error Analysis: Systematically analyzing the errors that the model makes and understanding why these errors occur can provide insights into how the model or the data processing steps can be improved.<br />
<br />
9. Domain Knowledge Integration: Incorporating expert knowledge into the model can significantly improve its alignment with observed data. This might involve using specific rules or formulae that are known to be relevant in the domain.<br />
<br />
10. Real-time Adjustment: In some systems, it's possible to adjust algorithms in real-time based on incoming data. This dynamic approach can continually refine the model for better accuracy.<br />
<br />
<br />
== Standards ==<br />
* Describe changes in rules, formulae and algorithms that would improve the correspondence between results and observed data.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Changes_in_rules,_formulae_and_algorithms&diff=12166Changes in rules, formulae and algorithms2023-11-15T14:14:42Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
The process of refining rules, formulae, and algorithms to improve their correspondence with observed data is a fundamental aspect of scientific and computational work. This process is especially relevant in fields like software engineering, data science, and machine learning. Here are some strategies to consider:<br />
<br />
1. **Iterative Refinement**: This involves repeatedly adjusting the parameters of an algorithm based on the outcomes they produce compared to the observed data. It's a trial-and-error method where each iteration aims to reduce the difference between the model's predictions and real-world observations.<br />
<br />
2. **Incorporating More Data**: Sometimes, the discrepancy between results and observed data is due to insufficient or biased data. By adding more diverse and representative data, the model can learn to generalize better and thus produce results that are more in line with reality.<br />
<br />
3. **Feature Engineering**: In machine learning, feature engineering involves selecting, modifying, or creating new input variables (features) that are more predictive of the desired output. This can drastically improve the model's performance.<br />
<br />
4. **Model Complexity Adjustment**: Simplifying a model (to avoid overfitting) or making it more complex (to avoid underfitting) can help in aligning the results with observed data. This is often a balancing act, as too simple a model might not capture all nuances, while too complex a model might learn noise rather than signal.<br />
<br />
5. **Cross-Validation**: This technique involves dividing the dataset into several segments, using some for training the model and others for testing it. This helps in validating the model's performance and its generalizability to new, unseen data.<br />
<br />
6. **Algorithmic Tweaking**: Depending on the context, different algorithms may be more effective. For instance, in machine learning, switching from a linear model to a non-linear one might better capture the complexities of the data.<br />
<br />
7. **Regularization Techniques**: These techniques add a penalty to the model for complexity, thereby helping to prevent overfitting. This can improve the model’s performance on new, unseen data.<br />
<br />
8. **Error Analysis**: Systematically analyzing the errors that the model makes and understanding why these errors occur can provide insights into how the model or the data processing steps can be improved.<br />
<br />
9. **Domain Knowledge Integration**: Incorporating expert knowledge into the model can significantly improve its alignment with observed data. This might involve using specific rules or formulae that are known to be relevant in the domain.<br />
<br />
10. **Real-time Adjustment**: In some systems, it's possible to adjust algorithms in real-time based on incoming data. This dynamic approach can continually refine the model for better accuracy.<br />
<br />
These strategies can be particularly engaging for your students in a computer science or software engineering class, as they provide practical, hands-on experience with the principles of algorithmic design and data analysis. Additionally, they offer a clear example of how theoretical knowledge is applied in real-world scenarios.<br />
<br />
== Standards ==<br />
* Describe changes in rules, formulae and algorithms that would improve the correspondence between results and observed data.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Systems_that_can_be_modelled&diff=12153Systems that can be modelled2023-10-17T13:42:09Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:simulation.png|right|frame|Modeling & Simulation<ref>http://www.flaticon.com/</ref>]]<br />
<br />
The truth is, almost any system can be modelled: <br />
<br />
* financial planning<br />
* horse health<br />
* population growth<br />
* climate change<br />
* building design<br />
* engineering design<br />
* checkers<br />
* mancala<br />
<br />
== Standards ==<br />
* Identify a system that can be modelled.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Modeling and Simulation]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12152Programming2023-10-10T07:11:38Z<p>Mr. MacKenty: /* Programming Paradigms */</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 />
= Programming Paradigms =<br />
<br />
* [[Object-Oriented Programming]] ([[Separation of concerns]])<br />
* [[Procedural programming]]<br />
* [[Declarative programming]]<br />
* [[Functional programming]]<br />
* [[Imperative programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Robotics]]<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>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Programming&diff=12151Programming2023-10-10T07:10:09Z<p>Mr. MacKenty: /* Object Oriented Programming */</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 />
= Programming Paradigms =<br />
<br />
* [[Object-Oriented Programming]]<br />
* [[Procedural programming]]<br />
* [[Declarative programming]]<br />
* [[Functional programming]]<br />
* [[Imperative programming]]<br />
<br />
= Advanced Programming =<br />
<br />
* [[Regular expressions]]<br />
* [[Artificial Intelligence]]<br />
* [[API]]<br />
* [[Robotics]]<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>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Operators&diff=12150Operators2023-09-02T15:05:05Z<p>Mr. MacKenty: </p>
<hr />
<div><br />
<br />
<br />
[[file:arrows.png|right|frame|Programming basics<ref>http://www.flaticon.com/</ref>]]<br />
<br />
An operator is symbol that takes one or more values (or expressions, in programming jargon) and yields another value (so that the construction itself becomes an expression)<ref>http://php.net/manual/en/language.operators.php</ref>. <br />
<br />
There are many different types of operators, but the ones we primarily concern ourselves with are boldfaced below. If you'd like to learn more about different types of operators in PHP, [http://php.net/manual/en/language.operators.php please click here]. <br />
<br />
* Operator Precedence<br />
* '''Arithmetic Operators'''<br />
* '''Assignment Operators'''<br />
* Bitwise Operators<br />
* '''Comparison Operators'''<br />
* Error Control Operators<br />
* Execution Operators<br />
* Incrementing/Decrementing Operators<br />
* Logical Operators<br />
* String Operators<br />
* Array Operators<br />
* Type Operators<br />
<br />
<br />
== Assignment operators ==<br />
<br />
An assignment operator assigns a value to its left operand based on the value of its right operand.<ref>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators</ref><br />
<br />
== Arithmetic operators ==<br />
<br />
Arithmetic operators take numerical values (either literals or variables) as their operands and return a single numerical value. The standard arithmetic operators are addition (+), subtraction (-), multiplication (*), and division (/).<ref>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators</ref><br />
<br />
An example of some '''arithmetic''' operators in PHP can be found below <ref>http://php.net/manual/en/language.operators.arithmetic.php</ref>.<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
!Example !! Name !! Result<br />
|-<br />
| +$a ||Identity|| Conversion of $a to int or float as appropriate.<br />
|-<br />
| -$a ||Negation ||Opposite of $a.<br />
|-<br />
| $a + $b ||Addition|| Sum of $a and $b.<br />
|-<br />
| $a - $b|| Subtraction ||Difference of $a and $b.<br />
|-<br />
| $a * $b||Multiplication|| Product of $a and $b.<br />
|-<br />
| $a / $b|| Division|| Quotient of $a and $b.<br />
|-<br />
| $a % $b||Modulus|| Remainder of $a divided by $b.<br />
|-<br />
| $a ** $b ||Exponentiation|| Result of raising $a to the $b'th power.<br />
|}<br />
<br />
An example of some '''arithmetic''' operators in Python can be found below <ref>https://www.geeksforgeeks.org/basic-operators-python/</ref>.<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
!Example !! Name !! Result<br />
|-<br />
| a + b ||Addition|| Sum of a and b.<br />
|-<br />
| a - b|| Subtraction ||Difference of a and b.<br />
|-<br />
| a * b||Multiplication|| Product of a and b.<br />
|-<br />
| a / b|| Division|| Quotient of a and b.<br />
|-<br />
| a % b||Modulus|| Remainder of a divided by b.<br />
|-<br />
| a ** b ||Exponentiation|| Result of raising a to the b'th power.<br />
|}<br />
<br />
== Comparison operators ==<br />
<br />
Comparison operators, as their name implies, allow you to compare two values.<ref>https://www.php.net/manual/en/language.operators.comparison.php</ref><br />
<br />
An example of some '''conditional''' operators in PHP can be found below <ref>http://php.net/manual/en/language.operators.comparison.php</ref>.<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
!Example !! Name !! Result<br />
|-<br />
|$a == $b ||Equal ||TRUE if $a is equal to $b after [http://php.net/manual/en/language.types.type-juggling.php type juggling.]<br />
|-<br />
|$a === $b|| Identical ||TRUE if $a is equal to $b, and they are of the same type.<br />
|-<br />
|$a != $b|| Not equal|| TRUE if $a is not equal to $b after [http://php.net/manual/en/language.types.type-juggling.php type juggling.].<br />
|-<br />
|$a <> $b|| Not equal|| TRUE if $a is not equal to $b after [http://php.net/manual/en/language.types.type-juggling.php type juggling.]<br />
|-<br />
|$a !== $b ||Not identical ||TRUE if $a is not equal to $b, or they are not of the same type.<br />
|-<br />
|$a < $b ||Less than ||TRUE if $a is strictly less than $b.<br />
|-<br />
|$a > $b ||Greater than|| TRUE if $a is strictly greater than $b.<br />
|-<br />
|$a <= $b ||Less than or equal to|| TRUE if $a is less than or equal to $b.<br />
|-<br />
|$a >= $b ||Greater than or equal to|| TRUE if $a is greater than or equal to $b.<br />
|-<br />
|$a <=> $b ||Spaceship ||An integer less than, equal to, or greater than zero when $a is respectively less than, equal to, or greater than $b. Available as of PHP 7.<br />
|}<br />
<br />
<br />
<br />
An example of some '''conditional''' operators in Python can be found below <ref>https://www.geeksforgeeks.org/basic-operators-python/</ref>.<br />
<br />
{| style="width: 95%;" class="wikitable"<br />
|-<br />
!Example !! Name !! Result<br />
|-<br />
|a == b ||Equal ||TRUE if a is equal to b <br />
|-<br />
<br />
|a != b|| Not equal|| TRUE if a is not equal to b <br />
|-<br />
|a < b ||Less than ||TRUE if a is strictly less than b.<br />
|-<br />
|a > b ||Greater than|| TRUE if a is strictly greater than b.<br />
|-<br />
|a <= b ||Less than or equal to|| TRUE if a is less than or equal to b.<br />
|-<br />
|a >= b ||Greater than or equal to|| TRUE if a is greater than or equal to b.<br />
|-<br />
| a in b || in || TRUE if a is in b.<br />
|-<br />
| a not in b || not in || TRUE if a is NOT in b <br />
<br />
|}<br />
<br />
== A video == <br />
This video references the C programming language and scratch, but the ideas about operators are excellent. In the case of conditionals, PHP and C share similar syntax (but not exact).<br />
<br />
<html><br />
<iframe width="560" height="315" src="https://www.youtube.com/embed/_FC-8QaaYgs" frameborder="0" allowfullscreen></iframe><br />
</html><br />
<br />
== The way the IB wants you to use operators ==<br />
<br />
Please know all code submitted to the IB (with the exception of object oriented programming option) is in [[pseudocode]]. The way we write operators in [[pseudocode]] is different than the way we might write them in the real world. <br />
<br />
[[:media:Approved notation for developing pseudocode.pdf | Click here to view a file describing approved notation, including pseudocode This is the approved notation sheet from the IB.]]<br />
<br />
Below is a graphic that is taken from the above PDF file to help you understand how the IB wants operators to look.<br />
<br />
[[File:Ib operators.png]]<br />
<br />
== Python operators cheatsheet ==<br />
<br />
[[:File:Python3 reference cheat sheet.pdf|Click here for an excellent python cheatsheet]]<br />
<br />
== Standards == <br />
<br />
* Define the terms: variable, constant, operator, object. <br />
* Define common operators. <br />
* Analyse the use of variables, constants and operators in algorithms.<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:computational thinking]]<br />
[[Category:programming]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Artificial_Intelligence&diff=12149Artificial Intelligence2023-05-31T13:46:48Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:AI.png|right|frame|Artificial Intelligence<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
<br />
<br />
Artificial intelligence (AI) is intelligence exhibited by machines. In computer science, the field of AI research defines itself as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving"<ref>https://en.wikipedia.org/wiki/Artificial_intelligence</ref><br />
<br />
For now (January 2018), this page is a collection of my notes from my graduate class, which I will build upon and share with my students. The structure of this information is "note-taking, not ready for structured learning by students". <br />
<br />
== The big ideas in AI ==<br />
<br />
<br />
# [[Natural Language Processing]]<br />
# [[Problems in AI]]<br />
# [[Characteristics of AI agents]]<br />
# [[Three fundamentals of knowledge-based AI]]<br />
# [[Four schools of AI]]<br />
# [[Semantic relationships]]<br />
# [[Means-Ends Analysis]]<br />
# [[Problem Reduction]]<br />
# [[Production System]]<br />
# [[Frames]]<br />
# [[Learning by recording cases]]<br />
# [[Case-based reasoning]]<br />
# [[Incremental concept learning]]<br />
# [[Logic]]<br />
# [[Planning]]<br />
# [[Primitive action]]<br />
<br />
== Standards ==<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Artificial Intelligence]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Artificial_Intelligence&diff=12148Artificial Intelligence2023-05-31T13:46:30Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:AI.png|right|frame|Artificial Intelligence<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
[[File:Parts of AI.png|right|frame]]<br />
<br />
Artificial intelligence (AI) is intelligence exhibited by machines. In computer science, the field of AI research defines itself as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving"<ref>https://en.wikipedia.org/wiki/Artificial_intelligence</ref><br />
<br />
For now (January 2018), this page is a collection of my notes from my graduate class, which I will build upon and share with my students. The structure of this information is "note-taking, not ready for structured learning by students". <br />
<br />
== The big ideas in AI ==<br />
<br />
<br />
# [[Natural Language Processing]]<br />
# [[Problems in AI]]<br />
# [[Characteristics of AI agents]]<br />
# [[Three fundamentals of knowledge-based AI]]<br />
# [[Four schools of AI]]<br />
# [[Semantic relationships]]<br />
# [[Means-Ends Analysis]]<br />
# [[Problem Reduction]]<br />
# [[Production System]]<br />
# [[Frames]]<br />
# [[Learning by recording cases]]<br />
# [[Case-based reasoning]]<br />
# [[Incremental concept learning]]<br />
# [[Logic]]<br />
# [[Planning]]<br />
# [[Primitive action]]<br />
<br />
== Standards ==<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Artificial Intelligence]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Artificial_Intelligence&diff=12147Artificial Intelligence2023-05-31T13:31:33Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:AI.png|right|frame|Artificial Intelligence<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
[[File:Parts of AI.png]]<br />
<br />
Artificial intelligence (AI) is intelligence exhibited by machines. In computer science, the field of AI research defines itself as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving"<ref>https://en.wikipedia.org/wiki/Artificial_intelligence</ref><br />
<br />
For now (January 2018), this page is a collection of my notes from my graduate class, which I will build upon and share with my students. The structure of this information is "note-taking, not ready for structured learning by students". <br />
<br />
== The big ideas in AI ==<br />
<br />
<br />
# [[Natural Language Processing]]<br />
# [[Problems in AI]]<br />
# [[Characteristics of AI agents]]<br />
# [[Three fundamentals of knowledge-based AI]]<br />
# [[Four schools of AI]]<br />
# [[Semantic relationships]]<br />
# [[Means-Ends Analysis]]<br />
# [[Problem Reduction]]<br />
# [[Production System]]<br />
# [[Frames]]<br />
# [[Learning by recording cases]]<br />
# [[Case-based reasoning]]<br />
# [[Incremental concept learning]]<br />
# [[Logic]]<br />
# [[Planning]]<br />
# [[Primitive action]]<br />
<br />
== Standards ==<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Artificial Intelligence]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Artificial_Intelligence&diff=12146Artificial Intelligence2023-05-31T13:31:08Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:AI.png|right|frame|Artificial Intelligence<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
[[File:Parts of AI.png|right|200px]]<br />
<br />
Artificial intelligence (AI) is intelligence exhibited by machines. In computer science, the field of AI research defines itself as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving"<ref>https://en.wikipedia.org/wiki/Artificial_intelligence</ref><br />
<br />
For now (January 2018), this page is a collection of my notes from my graduate class, which I will build upon and share with my students. The structure of this information is "note-taking, not ready for structured learning by students". <br />
<br />
== The big ideas in AI ==<br />
<br />
<br />
# [[Natural Language Processing]]<br />
# [[Problems in AI]]<br />
# [[Characteristics of AI agents]]<br />
# [[Three fundamentals of knowledge-based AI]]<br />
# [[Four schools of AI]]<br />
# [[Semantic relationships]]<br />
# [[Means-Ends Analysis]]<br />
# [[Problem Reduction]]<br />
# [[Production System]]<br />
# [[Frames]]<br />
# [[Learning by recording cases]]<br />
# [[Case-based reasoning]]<br />
# [[Incremental concept learning]]<br />
# [[Logic]]<br />
# [[Planning]]<br />
# [[Primitive action]]<br />
<br />
== Standards ==<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Artificial Intelligence]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Artificial_Intelligence&diff=12145Artificial Intelligence2023-05-31T13:28:26Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:AI.png|right|frame|Artificial Intelligence<ref>http://www.flaticon.com/</ref>]]<br />
<br />
<br />
[[File:Parts of AI.png|right]]<br />
<br />
Artificial intelligence (AI) is intelligence exhibited by machines. In computer science, the field of AI research defines itself as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving"<ref>https://en.wikipedia.org/wiki/Artificial_intelligence</ref><br />
<br />
For now (January 2018), this page is a collection of my notes from my graduate class, which I will build upon and share with my students. The structure of this information is "note-taking, not ready for structured learning by students". <br />
<br />
== The big ideas in AI ==<br />
<br />
<br />
# [[Natural Language Processing]]<br />
# [[Problems in AI]]<br />
# [[Characteristics of AI agents]]<br />
# [[Three fundamentals of knowledge-based AI]]<br />
# [[Four schools of AI]]<br />
# [[Semantic relationships]]<br />
# [[Means-Ends Analysis]]<br />
# [[Problem Reduction]]<br />
# [[Production System]]<br />
# [[Frames]]<br />
# [[Learning by recording cases]]<br />
# [[Case-based reasoning]]<br />
# [[Incremental concept learning]]<br />
# [[Logic]]<br />
# [[Planning]]<br />
# [[Primitive action]]<br />
<br />
== Standards ==<br />
<br />
== References ==<br />
<references /><br />
<br />
[[Category:Artificial Intelligence]]</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=File:Parts_of_AI.png&diff=12144File:Parts of AI.png2023-05-31T13:25:53Z<p>Mr. MacKenty: </p>
<hr />
<div></div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=2024_case_study&diff=121432024 case study2023-05-31T12:50:40Z<p>Mr. MacKenty: /* 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 familiar''' with the case study. The IB recommends spending about a year studying this case study. <br />
<br />
This page will help you organize and understand the 2024 case study.<br />
<br />
== The case study ==<br />
<br />
[[Media:D 4 comsc css 2305 1 e.pdf| Click here for the full pdf case study for 2024]]<br />
<br />
== Every term in the case study ==<br />
<br />
* Please visit our [[Programming|programming]] page to see a list of terms involved in [[Robotics]].<br />
<br />
== Markscheme for case study == <br />
<br />
[[File:MarkBands.png]]<br />
<br />
== Previous years case studies ==<br />
<br />
* [[2023 case study|Click here for the 2023 case study]]<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>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Tracking&diff=12142Tracking2023-05-30T11:32:13Z<p>Mr. MacKenty: Created page with "In the context of robotics and particularly in systems like Simultaneous Localization and Mapping (SLAM) or Visual SLAM (vSLAM), "tracking" typically refers to the process of continuously estimating the robot's motion and position over time based on its sensor data. Here's how tracking might work in a vSLAM system: # The robot captures a sequence of images with its camera as it moves through the environment. # For each new image, the robot identifies features (distinct..."</p>
<hr />
<div>In the context of robotics and particularly in systems like Simultaneous Localization and Mapping (SLAM) or Visual SLAM (vSLAM), "tracking" typically refers to the process of continuously estimating the robot's motion and position over time based on its sensor data.<br />
<br />
Here's how tracking might work in a vSLAM system:<br />
<br />
# The robot captures a sequence of images with its camera as it moves through the environment.<br />
# For each new image, the robot identifies features (distinctive patterns or points in the image), and matches these to features identified in the previous image.<br />
# Based on how these matched features have moved from one image to the next, the robot estimates its own motion. For instance, if a feature moves to the left in the image, that suggests the robot has moved to the right.<br />
# The robot uses this motion estimate to update its estimated position and orientation (its "pose"). This tracking process is repeated for each new image, allowing the robot to maintain a continuous estimate of its pose over time.<br />
<br />
In addition to tracking its own motion, a robot might also use similar techniques to track other objects in the environment. For instance, a rescue robot might use visual tracking to keep track of a human survivor as they move through the scene, or to track a moving hazard like a falling debris.<br />
<br />
Tracking is a fundamental capability for most autonomous robots. By continuously tracking its own motion, a robot can navigate through its environment, avoid obstacles, and perform tasks like picking up objects or following a path. In the context of a rescue operation, effective tracking can be crucial for tasks like navigating through debris, locating and following survivors, or returning to base.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Robotics&diff=12141Robotics2023-05-30T11:31:22Z<p>Mr. MacKenty: </p>
<hr />
<div>[[file:Studying.png|right|frame|Case study notes<ref>http://www.flaticon.com/</ref>]]<br />
<br />
* [[Bundle adjustment]]<br />
* [[Computer vision]]<br />
* [[Dead reckoning data]]<br />
* [[Edge computing]]<br />
* [[Global map optimization]]<br />
* [[Global positioning system (GPS) signal]]<br />
* [[GPS-degraded environment]]<br />
* [[GPS-denied environment]]<br />
* [[Human pose estimation (HPE)]]<br />
* [[Inertial measurement unit (IMU)]]<br />
* [[Keyframe selection]]<br />
* [[Key points/pairs]]<br />
* [[Light detection and ranging (LIDAR)]]<br />
* [[Object occlusion]]<br />
* [[Odometry sensor]]<br />
* [[Optimization]]<br />
* [[Relocalization]]<br />
* [[Rigid pose estimation (RPE)]]<br />
* [[Robot drift]]<br />
* [[Simultaneous localization and mapping (SLAM)]]<br />
* [[Sensor fusion model]]<br />
* [[Visual simultaneous localization and mapping (vSLAM) modules]]<br />
** [[Initialization]]<br />
** [[Local mapping]]<br />
** [[Loop closure]]<br />
** [[Relocalization]]<br />
** [[Tracking]]<br />
<br />
<br />
== References ==<br />
<br />
<references /></div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Loop_closure&diff=12140Loop closure2023-05-30T11:12:59Z<p>Mr. MacKenty: Created page with "Loop closure is an important concept in the field of robotics, particularly in relation to the Simultaneous Localization and Mapping (SLAM) problem. As a robot moves through an environment, it builds a map of the environment and uses that map to estimate its location within it. However, as the robot moves, small errors in its motion estimates can accumulate over time, leading to drift in the estimated trajectory and the map. The idea of loop closure is to correct thi..."</p>
<hr />
<div>Loop closure is an important concept in the field of robotics, particularly in relation to the Simultaneous Localization and Mapping (SLAM) problem. <br />
<br />
As a robot moves through an environment, it builds a map of the environment and uses that map to estimate its location within it. However, as the robot moves, small errors in its motion estimates can accumulate over time, leading to drift in the estimated trajectory and the map. <br />
<br />
The idea of loop closure is to correct this drift by recognizing when the robot returns to a place it has visited before. When the robot recognizes such a place, it can "close the loop", correcting its current position estimate and map to align with the previous visit.<br />
<br />
Here's a simplified example:<br />
<br />
# The robot starts in a room, moves down a hallway, turns a corner, and enters another room.<br />
# Due to small errors in its motion estimates, the robot thinks the second room is slightly to the left of its actual position.<br />
# The robot moves back down the hallway and returns to the first room.<br />
# When it sees the first room again, it recognizes it as a place it has visited before and realizes that it has made a loop.<br />
# By matching its current view of the first room with its previous view, it can estimate how much its position has drifted during the loop.<br />
# It then corrects its current position estimate and the map of the hallway and the second room to align with this loop closure, reducing the accumulated drift.<br />
<br />
Loop closure is crucial for maintaining accurate and consistent maps and trajectories over long periods of time or long distances. It's particularly important for tasks like navigation or exploration in large or complex environments, like those encountered by rescue robots. For a rescue robot, maintaining an accurate map and position estimate can be crucial for tasks like navigating through debris, locating victims, or returning to base.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Local_mapping&diff=12139Local mapping2023-05-30T11:11:09Z<p>Mr. MacKenty: Created page with "Local mapping is a concept in robotics, particularly in relation to Simultaneous Localization and Mapping (SLAM) and Visual SLAM (vSLAM), where the robot builds a smaller, more immediate map of its surroundings, often referred to as a local map. The idea is to focus computational resources on understanding the robot's immediate surroundings in detail, rather than attempting to map the entire environment at once. This local map is continuously updated as the robot moves..."</p>
<hr />
<div>Local mapping is a concept in robotics, particularly in relation to Simultaneous Localization and Mapping (SLAM) and Visual SLAM (vSLAM), where the robot builds a smaller, more immediate map of its surroundings, often referred to as a local map. <br />
<br />
The idea is to focus computational resources on understanding the robot's immediate surroundings in detail, rather than attempting to map the entire environment at once. This local map is continuously updated as the robot moves, always keeping track of the area around the robot.<br />
<br />
Local mapping has several advantages:<br />
<br />
# '''Efficiency''': It can be computationally expensive to constantly update and refine a map of a large environment. By focusing on a smaller local area, the robot can maintain a detailed and accurate map without overwhelming its computational resources.<br />
# '''Relevance''': The most immediately important part of the environment for a robot is its immediate surroundings, as this is where it needs to navigate and interact. By maintaining a detailed local map, the robot can better perform tasks like obstacle avoidance, path planning, and object manipulation.<br />
# '''Robustness''': By focusing on the local environment, the robot can be more robust to changes or disturbances in the wider environment.<br />
<br />
In the context of rescue robots, local mapping could be crucial. For example, in a search and rescue scenario within a collapsed building, the immediate surroundings of the robot would be most relevant for identifying victims, avoiding debris and navigating tight spaces. The robot might not need a detailed map of the entire building at once, but a continuously updated local map of the area around it would be essential.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Initialization&diff=12138Initialization2023-05-30T11:09:20Z<p>Mr. MacKenty: Created page with "In the context of robotics and especially in algorithms like Simultaneous Localization and Mapping (SLAM) or Visual SLAM (vSLAM), "Initialization" refers to the process of setting up the initial conditions or starting point for the algorithm. At the start of SLAM or vSLAM, the robot doesn't know anything about its environment or its position within that environment. However, to begin the process of mapping and localization, it needs some kind of initial guess or estimat..."</p>
<hr />
<div>In the context of robotics and especially in algorithms like Simultaneous Localization and Mapping (SLAM) or Visual SLAM (vSLAM), "Initialization" refers to the process of setting up the initial conditions or starting point for the algorithm.<br />
<br />
At the start of SLAM or vSLAM, the robot doesn't know anything about its environment or its position within that environment. However, to begin the process of mapping and localization, it needs some kind of initial guess or estimate. This is what the initialization step provides.<br />
<br />
Here's an example to illustrate what happens during initialization in a vSLAM system:<br />
<br />
# '''Starting Position''': The robot might assume that its initial position and orientation are at the origin (0,0,0) with no rotation. Alternatively, if there's some prior knowledge available (like if the robot has been placed at a known location in a pre-mapped environment), this can be used as the starting position.<br />
# '''Initial Feature Detection''': The robot captures the first image (or first few images) with its camera and processes these images to detect features. These features serve as the first landmarks in the robot's map.<br />
# '''Initial Motion Estimation''': If the robot is stationary at the start, it might assume its initial motion is zero. Otherwise, if it's moving, it might use the first few frames to estimate its initial motion.<br />
<br />
After the initialization, the robot can start the main loop of the vSLAM process, where it continues to detect features, match them across frames, estimate motion, and update the map.<br />
<br />
In the context of a rescue robot, initialization might involve starting the robot at a known location at the edge of the search area, capturing the first image of the environment, and detecting the first set of features to serve as landmarks. This gives the robot a starting point from which to begin its search and rescue mission.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Visual_simultaneous_localization_and_mapping_(vSLAM)_modules&diff=12137Visual simultaneous localization and mapping (vSLAM) modules2023-05-30T11:06:54Z<p>Mr. MacKenty: Created page with "Visual Simultaneous Localization and Mapping, or vSLAM, is a variant of the general SLAM problem where the primary sensor data comes from a camera or multiple cameras. This technique uses visual information to create a map of the environment while also keeping track of the robot's location within the map. The "modules" in a vSLAM system might refer to the individual components or stages of the vSLAM process. The exact modules can vary depending on the specific vSLAM alg..."</p>
<hr />
<div>Visual Simultaneous Localization and Mapping, or vSLAM, is a variant of the general SLAM problem where the primary sensor data comes from a camera or multiple cameras. This technique uses visual information to create a map of the environment while also keeping track of the robot's location within the map.<br />
<br />
The "modules" in a vSLAM system might refer to the individual components or stages of the vSLAM process. The exact modules can vary depending on the specific vSLAM algorithm.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Sensor_fusion_model&diff=12136Sensor fusion model2023-05-30T11:05:35Z<p>Mr. MacKenty: Created page with "Sensor fusion is a method used in robotics and automation that involves merging data from different sensors to improve the understanding of the environment. This process can reduce uncertainty, improve accuracy, and make the system more robust to failures of individual sensors. A sensor fusion model, then, is a mathematical and computational model that describes how to combine the data from different sensors. Here's an example to illustrate the concept: Imagine you ha..."</p>
<hr />
<div>Sensor fusion is a method used in robotics and automation that involves merging data from different sensors to improve the understanding of the environment. This process can reduce uncertainty, improve accuracy, and make the system more robust to failures of individual sensors.<br />
<br />
A sensor fusion model, then, is a mathematical and computational model that describes how to combine the data from different sensors.<br />
<br />
Here's an example to illustrate the concept:<br />
<br />
Imagine you have a robot with a camera, a LIDAR sensor, and a wheel encoder. Each of these sensors can provide information about the robot's environment and its movement:<br />
<br />
# The camera can capture images of the environment, which can be used to identify objects or features and track their movement across frames.<br />
# The LIDAR can measure distances to objects around the robot, building a 3D map of the environment.<br />
# The wheel encoder can measure the rotation of the robot's wheels, providing an estimate of how far the robot has moved.<br />
<br />
Each of these sensors has its own strengths and weaknesses. For example, the camera might struggle in low light conditions, the LIDAR might have trouble with reflective surfaces, and the wheel encoder might be inaccurate if the wheels slip or skid.<br />
<br />
A sensor fusion model would take the data from all these sensors and combine it in a way that maximizes the strengths and minimizes the weaknesses of each sensor. For example, it might use the camera data to identify features, the LIDAR data to confirm their distances, and the wheel encoder data to estimate the robot's movement. By fusing the data in this way, the model can provide a more accurate and reliable estimate of the robot's environment and motion than any single sensor could provide on its own.<br />
<br />
In the context of rescue robots, sensor fusion is a critical capability. These robots often operate in challenging and unpredictable environments, where individual sensors might fail or provide inaccurate data. By using a sensor fusion model, a rescue robot can improve its ability to navigate, recognize objects or people, and understand its surroundings, making it more effective at its mission.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Simultaneous_localization_and_mapping_(SLAM)&diff=12135Simultaneous localization and mapping (SLAM)2023-05-30T11:03:23Z<p>Mr. MacKenty: Created page with "Simultaneous Localization and Mapping, or SLAM, is a computational problem in the field of robotics. As the name implies, it's about doing two things at the same time: # '''Localization''': Determining where a robot is located in an environment. # '''Mapping''': Building a map of that environment. What makes SLAM challenging is that it's a chicken-and-egg problem: to know where you are (localization), you need a map, but to create a map, you need to know where you are...."</p>
<hr />
<div>Simultaneous Localization and Mapping, or SLAM, is a computational problem in the field of robotics. As the name implies, it's about doing two things at the same time:<br />
<br />
# '''Localization''': Determining where a robot is located in an environment.<br />
# '''Mapping''': Building a map of that environment.<br />
<br />
What makes SLAM challenging is that it's a chicken-and-egg problem: to know where you are (localization), you need a map, but to create a map, you need to know where you are. SLAM is the process of solving these two problems simultaneously.<br />
<br />
Here's a simplified explanation of how SLAM works:<br />
<br />
# The robot starts in an unknown location in an unknown environment. It uses its sensors (like cameras, LIDAR, or wheel encoders) to gather data about its surroundings and its own motion.<br />
# Based on this data, the robot makes an initial guess about its location and about the structure of the environment.<br />
# As the robot moves and gathers more data, it updates its guesses. For example, if it sees a wall in front of it and then moves to the right, it updates its guess about its own location (it thinks it's moved to the right) and its map (it adds a wall to the map).<br />
# Over time, the robot's guesses become more and more accurate, especially as it revisits the same locations (a process called loop closure), until it has a good estimate of both its own location and the structure of the environment.<br />
<br />
SLAM is a critical capability for many autonomous robots, especially those that operate in unknown environments, like rescue robots. With SLAM, a rescue robot could navigate through a collapsed building, creating a map of the building as it goes, and use this map to locate victims, identify safe paths, and return to base.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Robot_drift&diff=12134Robot drift2023-05-30T10:59:23Z<p>Mr. MacKenty: Created page with ""Robot drift" is a term often used in the context of robotics and refers to the accumulated error in a robot's estimated position and orientation over time. This error, or "drift", can occur when a robot is using sensors like wheel encoders or Inertial Measurement Units (IMUs) to estimate its motion. Both these methods involve integrating sensor measurements over time to calculate position, but small errors in these measurements can accumulate, leading to larger and lar..."</p>
<hr />
<div>"Robot drift" is a term often used in the context of robotics and refers to the accumulated error in a robot's estimated position and orientation over time.<br />
<br />
This error, or "drift", can occur when a robot is using sensors like wheel encoders or Inertial Measurement Units (IMUs) to estimate its motion. Both these methods involve integrating sensor measurements over time to calculate position, but small errors in these measurements can accumulate, leading to larger and larger errors in the estimated position — this is drift.<br />
<br />
For instance, consider a robot using wheel encoders to estimate its motion. If the wheels slip or skid, the encoder might overestimate the distance the robot has moved. This small error will get added to the robot's estimated position, causing it to think it's a little further along its path than it really is. If this happens repeatedly, these small errors can add up, causing the robot's estimated position to drift away from its true position.<br />
<br />
Similar issues can occur with IMUs. These devices measure acceleration and angular velocity, which can be integrated over time to estimate changes in position and orientation. However, any noise or bias in these measurements will get integrated along with the actual motion, leading to drift.<br />
<br />
Drift is a major challenge in robotics, especially for tasks like navigation and mapping. It's often mitigated by using multiple sensors and techniques together (a process known as sensor fusion), such as combining IMU data with visual data or GPS data, or by implementing techniques like loop closure detection and global optimization to correct drift when the robot recognizes a place it has been before.<br />
<br />
In a rescue operation, it's critical for a robot to know its accurate position to successfully carry out tasks like navigating through debris, locating victims, or returning to base. This makes managing and minimizing drift an important aspect of the design and operation of rescue robots.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Rigid_pose_estimation_(RPE)&diff=12133Rigid pose estimation (RPE)2023-05-30T10:58:14Z<p>Mr. MacKenty: Created page with "Rigid Pose Estimation (RPE) is a concept in computer vision and robotics that involves determining the position and orientation (the "pose") of an object that does not deform or change shape — in other words, a "rigid" object. The term 'rigid' indicates that the distance between any two points on the object remains constant over time, regardless of the object's movement or orientation. In the context of robotics, pose estimation often refers to estimating the pose of..."</p>
<hr />
<div>Rigid Pose Estimation (RPE) is a concept in computer vision and robotics that involves determining the position and orientation (the "pose") of an object that does not deform or change shape — in other words, a "rigid" object. The term 'rigid' indicates that the distance between any two points on the object remains constant over time, regardless of the object's movement or orientation.<br />
<br />
In the context of robotics, pose estimation often refers to estimating the pose of the robot itself relative to its environment. This is a crucial part of many tasks, like navigation, manipulation, and perception.<br />
<br />
There are various methods to perform Rigid Pose Estimation. Here are a couple of common ones:<br />
<br />
# '''Using Vision Sensors''': With a camera or other vision sensors, a robot can perform pose estimation by matching features in its current view with known features in the world. This process is a part of Visual Odometry or Simultaneous Localization and Mapping (SLAM) systems.<br />
# '''Using Inertial Sensors''': A robot can also estimate its pose using Inertial Measurement Units (IMUs), which measure acceleration and angular velocity. By integrating these measurements over time, the robot can estimate changes in its position and orientation. However, errors in IMU measurements can accumulate over time, leading to drift, so these measurements are often combined with other sources of data, like vision sensors or GPS, in a process known as sensor fusion.<br />
<br />
In a rescue operation, a rescue robot would need to know its pose to successfully navigate through its environment and to perform actions like identifying victims, avoiding obstacles, or interacting with objects. For instance, to navigate through a building, the robot needs to know not just its location (its position in X, Y, Z coordinates), but also its orientation (which way it's facing). This is what Rigid Pose Estimation provides.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Relocalization&diff=12132Relocalization2023-05-30T10:56:26Z<p>Mr. MacKenty: Created page with "Relocalization is a critical concept in robotics, specifically in the context of autonomous navigation and Simultaneous Localization and Mapping (SLAM). It refers to the ability of a robot to determine its current location in a map that it previously built or in a known environment, particularly after it has lost track of its position due to an error, disturbance, or after it has been manually moved (also known as the "kidnapped robot" problem). There are many reasons w..."</p>
<hr />
<div>Relocalization is a critical concept in robotics, specifically in the context of autonomous navigation and Simultaneous Localization and Mapping (SLAM). It refers to the ability of a robot to determine its current location in a map that it previously built or in a known environment, particularly after it has lost track of its position due to an error, disturbance, or after it has been manually moved (also known as the "kidnapped robot" problem).<br />
<br />
There are many reasons why a robot might lose track of its location. Sensor noise or failure, fast movements, or environments with few distinctive features can cause a robot to lose its bearings. Even if the robot has a good map, if it doesn't know its location within that map, it can't navigate effectively.<br />
<br />
That's where relocalization comes in. When a robot realizes it's lost, it will try to match its current sensor readings (like images from a camera or readings from a LiDAR) to the map or to previous sensor readings. If it finds a match, it can "relocalize" itself, effectively determining its current location and orientation.<br />
<br />
For a rescue robot, relocalization is crucial. These robots often operate in challenging and unpredictable environments where there's a high chance of getting lost. If a rescue robot gets disoriented, it needs to be able to relocalize itself quickly and accurately so it can continue its mission.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Odometry_sensor&diff=12131Odometry sensor2023-05-30T10:54:46Z<p>Mr. MacKenty: Created page with "An odometry sensor is a device used to estimate the change in position over time of a vehicle, like a car or a robot, based on data from its own sensors. The term "odometry" comes from the combination of "hodos", meaning path or way in Greek, and "metron", meaning measure. Therefore, it's all about measuring the path a vehicle takes. There are several types of odometry sensors, and they work in different ways: # '''Wheel Encoders''': In many robots, especially wheeled..."</p>
<hr />
<div>An odometry sensor is a device used to estimate the change in position over time of a vehicle, like a car or a robot, based on data from its own sensors. The term "odometry" comes from the combination of "hodos", meaning path or way in Greek, and "metron", meaning measure. Therefore, it's all about measuring the path a vehicle takes.<br />
<br />
There are several types of odometry sensors, and they work in different ways:<br />
<br />
# '''Wheel Encoders''': In many robots, especially wheeled ones, a common type of odometry sensor is a wheel encoder. These devices measure the rotation of the robot's wheels. By knowing the size of the wheel and how much it has turned, the robot can estimate how far it has moved. If the robot has multiple wheels and can measure their rotations separately, it can also estimate changes in its orientation (which way it's pointing).<br />
# '''Visual Odometry''': This is a method of odometry that uses cameras to estimate motion. By identifying key points in the environment and tracking how these points move across frames, the robot can estimate its own motion. This can be especially useful in environments where wheel encoders might be unreliable, like on uneven terrain or in low-friction environments.<br />
# '''Inertial Measurement Units (IMUs)''': These are devices that measure acceleration and angular velocity, which can be integrated over time to estimate changes in position and orientation. However, IMU measurements tend to accumulate errors over time, so they are often used in combination with other types of odometry.<br />
<br />
In the context of rescue robots, odometry sensors are crucial for navigation. For example, by knowing how much it has moved, a robot can keep track of its position relative to its starting point (a method known as dead reckoning), or it can combine odometry data with data from other sensors (like GPS or LiDAR) to build a map of its environment and its position within that map.</div>Mr. MacKentyhttps://computersciencewiki.org/index.php?title=Object_occlusion&diff=12130Object occlusion2023-05-30T10:53:08Z<p>Mr. MacKenty: Created page with "Object occlusion in the context of computer vision refers to the event where a part or all of an object in the scene is hidden from view by some other object in the scene. In simple words, when an object is in front of another object, blocking it from view, we say that the second object is occluded. For example, imagine you are looking at a photograph of a crowd of people. Some of those people may be standing in front of others, preventing you from seeing the people beh..."</p>
<hr />
<div>Object occlusion in the context of computer vision refers to the event where a part or all of an object in the scene is hidden from view by some other object in the scene. In simple words, when an object is in front of another object, blocking it from view, we say that the second object is occluded.<br />
<br />
For example, imagine you are looking at a photograph of a crowd of people. Some of those people may be standing in front of others, preventing you from seeing the people behind them completely. The people behind are occluded by the people in front.<br />
<br />
Occlusion poses a significant challenge in many areas of computer vision, such as object recognition, tracking, and 3D reconstruction. For instance, if a rescue robot is using computer vision to identify people in need of help, it might struggle if those people are partially or completely hidden by debris or other obstacles.<br />
<br />
To handle occlusion, various strategies can be used. Some techniques involve using predictive models to guess what's behind the occlusion based on the visible parts of the object. Others might involve integrating data from multiple cameras or sensors to get different views of the scene, or using sensors like LiDAR that can sometimes see through occlusions (for example, if the occluding object is semi-transparent for the LiDAR's laser wavelengths).</div>Mr. MacKenty