# data[].attributes.body
-Bits
The bit is a basic unit of information in information theory, computing, including digital communications.

-Bytes
The byte is a unit of digital information that most commonly consists of eight bits.

-Binary
In mathematics and digital electronics, a binary number is a number expressed in the base-2 numeral system or binary numeral system, which uses only two symbols: typically ‘0’ (zero) and ‘1’ (one).

-Unit Conversions
Kilobyte KB = 1,000 Bytes
Megabyte MB = 1 million Bytes
Gigabyte GB = 1 billion Bytes
Terabyte TB = 1 trillion Bytes

-ASCII
A character encoding standard for electronic communication.

-Hex
In mathematics and computing, hexadecimal (also base 16, or hex) is a positional system that represents numbers using a base of 16.

-Unicode
Unicode is a computing industry standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems.

-Open File vs Proprietary File Formats
We will say that a file format is open if the mode of presentation of its data is transparent and/or its specification is publicly available.

Representing Info in Binary (color, images)
The RGB color model is an additive color model in which the red, green, and blue primary colors of light are added together in various ways to reproduce a broad array of colors.
Hexadecimal
In mathematics and computing, hexadecimal (also base 16, or hex) is a positional system that represents numbers using a base of 16.
File Formats
We will say that a file format is proprietary if the mode of presentation of its data is opaque, and its specification is not publicly available.

Content Reflection:
I really enjoyed my initial dive into the inner workings of computers and how the internal processes decode information through logical, conceptual and physical means. Upon looking deeper into computers, you realize the ingenuity that is required to power and run our beloved devices. The view of logical, conceptual and physical processes resonated with me because it simplifies the foundations of computing into vocabulary that I as an engineer am familiar with. The breakdown reminds me of a familiar concept in engineering: building off of foundational concepts into more complex things. Logical being the true/false statements that are the absolute fundamental process. Then converting that into a more conceptual medium being the bytes of information, which are the eight bits together. And finally creating a physical result, acting on that conceptual byte of information. It feels very intuitive to me, and I believe it will enjoy working with all different types of schema.

Another thing I have enjoyed learning about these past two weeks have been the different file formats. It makes sense to me that companies would develop proprietary software to read certain types of data. My uncle codes proprietary software for specific machines in the biosynthetic prosthetic industry, which is producing new and exciting alternatives to prosthetic limbs. I would have many conversations with him about his job and he explained what he did to me, but I never fully understood the purpose of it until this week. I now understand the advantages of having a software that is specifically designed to transmit completely different types of information and allowing the computers to decode it in a specific way. This week has helped me to appreciate my uncle’s work and all of the effort that goes into designing and developing great new advancements in the world today. On top of that, my ever-developing perspective and extent of knowledge regarding AI continues to open my mind to new ideas and possibilities in my everyday life. I love thinking about things in my everyday life that can be optimized through the development of an AI.

# data[].attributes.body
ALU-
Arithmetic Logic Unit (ALU)

Does the computation in a computer

Mathematical brain for computer

Intel 74181 (first complete ALU that fits in a single chip)

An arithmetic logic unit (ALU) is a combinational digital electronic circuit that performs arithmetic and bitwise operations on integer binary numbers.

Persistent Memory
Physical storage (magnetic disks, solid state disks, magnetic tape, etc) that retains information even when the device is powered off

Memory
In computing, memory refers to a device that is used to store information for immediate use in a computer or related computer hardware device

Registers
In computer architecture, a processor register is a quickly accessible location available to a computer's central processing unit (CPU). Registers usually consist of a small amount of fast storage

RAM
Random-access memory (RAM) is a form of computer memory that can be read and changed in any order, typically used to store working data and machine code
RAM is controlled by the CPU and can include data and instructions

CPU
A central processing unit (CPU), also called a central processor or main processor, is the electronic circuitry within a computer that executes instructions that make up a computer program.

Assembly Language
In computer programming, assembly language...is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions.

Content Reflection:
From Mahoney's article I really enjoyed learning about the complexities of the history of computing because it completely changed my perspective on the foundations of computing that I thought I understood. Previously to reading the article I was aware of coding procedures and different coding languages/software used to translate certain data. However, I never knew just how many different languages had existed even since the early days of computing. It was very interesting to hear about how the history of computing is understood and learned through understanding how computers were used. Computers were tailored to fit the needs of their curators which makes the history of them unique from other topics in history. Through learning about the history of computing we are introduced to the development of not only computing but the physical inventions, which are numerous and essential, that brought us to the development of the computer as we know it. For instance, the first computer with RAM called the Whirlwind Machine or the first computer with a GPU created in 1999 which completely shook the expectations we as a society had for computers. All of these individual inventions and tweaks that were initially created to serve a purpose for a machine that had a very specific purpose all coalesced together to form the devices we rely on so heavily today. This week's content has built on my perspective of computers and allowed me, yet again, to see them in a different light. I see them now as a fantastic medley of human design and innovation and no longer as one development that came on the seen somewhere in the early 2000's that prompted an information revolution. That I feel is a very dull and uninformed view on computers, one that I am happy to get away from. Humanity will continue to use computers to solve new complex problems which will cause unprecedented challenges for the capabilities of computers. New inventions will be created to solve these challenges and the capabilities of our machines will continue to be reimagined. I am excited for this future.

# data[].attributes.body
-Operating Systems
The software encoded to support a computer's basic function, such as scheduling tasks, executing applications, and controlling peripherals.
-Core OS tasks:
process management, memory management, file system management, device management
Memory management: allocates memory, controls memory hardware access
File system management: interfaces with hardware to transmit, process, and store file system objects
Device management: oversees system calls for efficient device management

-Kernel
core of the OS, controls access to computer hardware, performs scheduling tasks

-Drivers
core of the OS, controls access to computer hardware, performs scheduling tasks

-API
software that allows the user to interact with the OS

-Virtual Memory
An approach to managing memory that provides "an idealized abstraction of the storage resources that are actually avaialble on a given machine

-Command Line
A command-line interface (CLI) processes commands to a computer program in the form of lines of text.
-Shell
The user interface for accessing all of the operating system’s services and applications

-Computer Terminal
The device usually made up of a display unit and a keyboard which allows entry and display of information when on-line to central computer system

-GUI vs CLI
The graphical user interface (GUI) is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, instead of text-based user interfaces, typed command labels or text navigation.
A command-line interface (CLI) processes commands to a computer program in the form of lines of text.
GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard
-Path
A path is a string of characters used to uniquely identify a location in a directory structure.

-Absolute Path
An absolute or full path points to the same location in a file system, regardless of the current working directory. To do that, it must include the root directory

-Relative Path
Starts from some given working directory, avoiding the need to provide the full absolute path
Content Reflection:
This week's reading shows us the connection between people and computers and how people's biases, ideas and personalities have gone into the making of the computer. The reading helped me to understand the connection and the process between the human ideas for the computer and realization of those ideas. In other words, I enjoyed learning about the ways computer scientists made their ideas for what the computer could be/do, into a reality and what inventions/computational strategies were invented to make those ideas into reality. For instance, I enjoyed learning about the inventing of the operating system and how it manages the interface between the CPU and the hardware as well as how that led to the possibility of multitasking in computers. I found this multitasking feature enlightening because I was naive to the fact that the original computers could only run one program at a time. With that knowledge now I am able to fully understand the importance of multitasking and how it changed the landscape of computing as a whole being integral to how we use computers today.

The lab and collaborative group assignment was very interesting because again I was able to make connections to the beginnings of modern computing and even modern video games like the RPG games that I enjoyed during my childhood. Having the knowledge of the groundwork of computers helped me to understand means that early computers scientists invented to warp computers' functionality that allows computers to complete and realize their ideas. I was able to talk to my parents about command lines and was surprised to learn that they used command lines and terminals in their early days with computers. I talked with them about the history of computers and got their perspective on the development of computing throughout their lifetime. Being born/during the technological age I have a limited view on the history of computers, but they have seen the development of them throughout their life. I found it interesting how they have had to adapt their own understanding of computers as they have evolved and can now be much more sympathetic as to why my dad doesn't know how to manage simple streaming applications or even connect his phone to the internet. Overall, I have enjoyed the continued quest for understanding of computers and am excited to learn about the next significant evolution that computers made.

# data[].attributes.headline
Week 5: Computer Networks and the Internet

# data[].attributes.subject
Week 5: Computer Networks and the Internet

# data[].attributes.body
ARPANET
The Advanced Research Projects Agency Network (ARPANET) was the first wide-area packet-switched network with distributed control and one of the first networks to implement the TCP/IP protocol suite.

-CSS
Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML
-DNS
The Domain Name System (DNS) is the hierarchical and decentralized naming system used to identify computers reachable through the Internet or other Internet Protocol (IP) networks
-Local Area Network
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.

-Wide Area Network
A wide area network (WAN) is a telecommunications network that extends over a large geographic area

-Ethernet
Ethernet is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 1983

-Routers
A router is a networking device that forwards data packets between computer networks. Routers perform the traffic directing functions on the Internet.

-Hops
In wired computer networking, including the Internet, a hop occurs when a packet is passed from one network segment to the next.

-Internet Protocol (IP)
The Internet protocol suite is the conceptual model and set of communications protocols used in the Internet and similar computer networks.
The Internet protocol suite provides end-to-end data communication specifying how data should be packetized, addressed, transmitted, routed, and received.

-Packet (Switching)
method of grouping data that is transmitted over a digital network into packet

-IP Address
Internet Protocol address is a numerical label that is connected to a computer network that uses the Internet Protocol for communication.
An IP address serves two main functions: network interface identification and location addressing

-Internet Service Provider
An Internet service provider (ISP) is an organization that provides services for accessing, using, or participating in the Internet. ISPs can be organized in various forms, such as commercial, community-owned, non-profit, or otherwise privately owned

-Internet
The Internet is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices.

-Top-Level Domains (TLDs)
The domains at the highest level in the hierarchical Domain Name System of the Internet after the root domain

-Open System Interconnection
The Open Systems Interconnection model (OSI model) is a conceptual model that describes the universal standard of communication functions of a telecommunication system or computing system, without any regard to the system's underlying internal technology and specific protocol suites
Content Reflection:
This course so far has been very eye opening for me because I never knew the intricacies/ingenuity of computers and I have found it extremely inspiring from an engineering perspective. First, learning this week about networks and the origins of the internet, I can now imagine the complexity and paths that the data I send and receive is subject to. For instance, the fact that when I look up an internet domain, it is sent to a DNS server to search if that domain exists. Then I am able to connect the dots with other experiences like how when you look up a certain domain, in the bottom lefthand side of you screen text comes up saying, "waiting for browser blahblahblah.com." I now understand what that means which is extremely rewarding.

I feel like this class is an endless cave which is the computer and as we go deeper and deeper into the cave, I am discovering more and more relics of the past. Each more rewarding and intriguing than the last. Another connection I made is regarding packets. When I used to play video games like Fortnite, I would have text in the top of my screen which would display information on packets, latency and packet loss. With the information I learned this week through the collaborative assignment as well as the lab, I understand what that means and the repercussions that it had on lag/glitches in my game. It blows my mind how fast all of these calculations happen as well, and it makes my mind swirl with alternative possibilities for optimization of this tool that we rely so heavily on.

Finally, I had ethical thoughts about net neutrality which is something that I assumed would never have been a thing. Now understanding the economics of the internet, it makes sense for the push for net neutrality or else the oligopolies of the internet business will only gain a larger market share. This effect as well as preventing the effects of a free market in the internet industry, making it harder for new companies to challenge the existing ones.

# data[].attributes.headline
Week 6: Building Content for the World Wide Web (www)

# data[].attributes.subject
Week 6: Building Content for the World Wide Web (www)

# data[].attributes.body
-World Wide Web
The World Wide Web (WWW), commonly known as the Web, is an information system where documents and other web resources are identified by Uniform Resource Locators (URLs, such as https://www.example.com/), which may be interlinked by hypertext, and are accessible over the Internet. The resources of the WWW are transferred via the Hypertext Transfer Protocol (HTTP) and may be accessed by users by a software application called a web browser and are published by a software application called a web server
-Hyperlinks
In computing, a hyperlink, or simply a link, is a reference to data that the user can follow by clicking or tapping. A hyperlink points to a whole document or to a specific element within a document.

-Hypertext
Hypertext is text with hyperlinks

-Web Browsers
A web browser (also referred to as an Internet browser or simply a browser) is application software for accessing the World Wide Web or a local website.

-Markup Language
In computer text processing, a markup language is a system for annotating a document in a way that is syntactically distinguishable from the text, meaning when the document is processed for display, the markup language is not shown, and is only used to format the text

-Web Server
A web server is computer software and underlying hardware that accepts requests via HTTP (the network protocol created to distribute web content) or its secure variant HTTPS

-Cascading Style Sheet (CSS)
Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML

-Hypertext Markup Language (<html>)
“Hypertext Markup Language, invented by Tim Berners-Lee as the basis for the World Wide Web…. based on the international standard SGML (Standardized Generalized Markup Language), which was originally developed for the representation of print documents in electronic form. HTML created a notation for hypertext that has become the global standard and provided the basis for the standardized linking and display of documents independent of the platform, operating system, and application in which they were created.” (Janet Murray, Inventing the Medium: Principles of Interaction Design as a Cultural Practice, pp. 424)
Content Reflection:
I really enjoyed finally getting a glimpse into coding life with this week's lab assignment. I was able to connect my past experience of seeing my sister design websites from scratch using these coding platforms. I would watch her sometimes and she was show me certain features, shortcuts and tools, but I could not fully understand what it was like to use them. I still would not be able to fully understand what she was doing at that point because she was creating very intricate websites however, I really enjoyed the glimpse into the fundamentals of how that process of creating a website starts. I found many of the functions to be intuitive, of course there is still a learning curve, but I am excited to delve deeper and see the other possibilities. I found the whole experience very rewarded and worth wild to see how lines of code can become a skeleton of a website.

Another very motivating thing we found out this week is the FCC's intention to bring back net neutrality which seems as we have learned to be a major win in the book of capitalism and the free market. I am very interested in different business models and how operations in different industries work so I enjoyed learning about the unique effect that net neutrality has on not just the tech/ISP industry but also almost every industry I can think of that uses the internet. It is a great win for the country that no matter who is transferring what data over the internet, all data will be treated equally. This is easily connectable to our readings over the past week learning about how computers were built favoring certain groups around the world. Net neutrality seems like a good step in the right direction making sure the internet is equally accessible to all.

# data[].attributes.body
Basic Functions:
-Type function
type("Hello world!") | Returns data type
-Print function
print("Hello world!") | Shows specific output in console or shell
-Concatenation
print("Hello" + " " + "World!") | Adds strings together
-Assignment operator
x = 3 | Assigns value(s) to variable
Comparison Operators:
-Equal
x == y | Tests if values are equal
-Not equal
x != y | Tests if values are not equal
-Greater than
x > y | Tests is a value is greater than another
-Less than
x < y | Tests is a value is less than another
-Greater than or equal to
x >= y | Tests if a value is greater than or equal to another
-Less than or equal to
x <= y | Tests if a value is less than or equal to another
Arithmetic Operators:
-Addition
5 + 6 | Adds values
-Subtraction
5 - 6 | Subtracts values
-Multiplication
5 * 6 | Multiples values
-Integer division
5 // 6 | Divides values, integers (whole numbers)
-Float division
5 / 6 | Divides values, floating point numbers (decimal values)
-Modulo
5 % 6 | Returns or retrieves remainder (whole number) from division operation
-Exponent
5 ** 6 | Calculates exponent
Commonly Used Python Data Types:
-String
str() | String of character
-Integer
int() | Whole number
-Float
float() | Decimal number, or number with floating point values
-Boolean
bool() | Two-state system that typically represents true/false values
-Nothing/Null/NoneType
NoneType |No value
-Input/Output
Python accepts input is via the input() function, which accepts a user input and assigns that to a variable.
name = intput("Enter your name: ")
to output | print(name)
Logical Operators
-And
x == y and y != z | Returns True if both statements are true
Or | or | x != y or y == z | Returns True if one of the statements is true
-Not
not(x == y and y != z) | Reverses the result, returns False if the result is true
Content Reflection:
Upon first glance it is crazy to see that a prior philosophy major was able to understand and make the shift from philosophy to coding. However, after coding for my first-time last week and having the understanding of the basis of coding I am able to relate it back to the reading for the week and have a greater grasp of what the reading talks about. It explains that the shift from philosophy to computer coding/science is not as great a leap as we might think. Because coding is about following lines of reasoning and writing in a logical and understandable way. Logic and understanding being main challenges in the writing of code. So, it makes sense that Mary Allen Wilkes is able to make the shift.

I have many friends that are big into coding, and I knew it would be a time-consuming process. Still, they very much enjoy it for the same reasons that I do. I found that the coding assignment this week, while time consuming was very fulfilling. The reason it is so fulfilling, I think, is because you are building something unique and from scratch. Which in many ways can be an intimidating endeavor in any form. However, completing code in one's own way and seeing the code complete the objective for which it was built gives the person a certain feeling of pride. This is why I was so excited to start coding because I knew it was comparable to building things, which as an engineer, I have a passion for. I have always enjoyed learning the innerworkings of the world and computers definitely apply to that. I have found coding to be a worthwhile insight so far into the basic functions that computers rely on, for this specific level of abstraction. I am excited to see more tools that can be used to achieve tasks of greater complexity.

# data[].attributes.body
New Functions:
-String
str(), | Sequence of characters
-List
list() ["apple", "banana", "pear"], [1, 3, 5, 7] | Sequence of objects/values
-Dictionary
dict(), {} | {'first_name': 'Knute', 'last_name':'Rockne', 'class':'1918'} | Key-value pairs
-Set
set(), {} | {"apple", "banana", "pear"}, {1, 3, 5, 7} | Unordered group of unique values
-Tuple
tuple(), () | ("apple", "banana", "pear"), (1, 3, 5, 7) | Ordered group of values that can include duplicates
-Arrays
An array is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key.
-Dictionaries
A mapping between a set of indices (keys) and a set of values. Each key maps to a value, and the association of a key and a value is called a key-value pair.
-Index
In Python, indexing allows us to refer to individual values in specific data structures using their position.
ex. fruits = ["apple", "banana",]
-Iteration
In iteration control structures, a statement or block is executed until the program reaches a certain state, or operations have been applied to every element of a collection.
ex. # list of numbers
numbers = [1, 3, 5, 7, 9, 11, 13, 15, 17]
# sample for loop that iterates over items in list and outputs each number
for number in numbers:
print(number)
-Lists
ex. # create list
fruits = ["apple", "banana", "peach"]
# test if apple is in list
"apple" in fruits # returns true
# test if blueberry is NOT in list
"blueberry" not in fruits # returns false
-Membership Operators
Membership operators are used to test if a sequence is presented in an object
ex. # create list
fruits = ["apple", "banana", "peach"]
# test if apple is in list
"apple" in fruits # returns true
# test if blueberry is NOT in list
"blueberry" not in fruits # returns false
-Sub-lists
ex. # create list with two sub-lists
points = [[0, 1], [2, 3]]
# show list
points
# access first item on list, which is a sublist
points[0]
# access first item WITHIN second item on list
points[1][0]
-Break & Continue
We can exit a loop immediately by using the break statement. break will stop or exit the while loop even if the condition is true. We can skip the rest of the body of a loop and move on to the next iteration using continue.
-Control Flow/Structures
if-then-else (syntax: if, else, elif)
while statements (syntax: while)
functions (built-in and named)

-Enumerate Function
Python function that generates a list of pairs containing each item in the list and its index
-Built in Functions
Functions that are readily available to use.
-Code Blocks
Or compound statement is a lexical structure of source code which is grouped together.
-Docstrings
# function definition
def printThreeTimes():
'''Prints an input string three times'''
count = 0 # assign count
message = input("Type your message here: ") # get input message
while count < 3: # while statement
print(message) # print message
count += 1 # reassign count
-Parameters, Scoping
# assign x variable
x = 1
# function definition
def print_number(x):
print(x)
# print x variable
print(x)
# call named function
print_number(2)
Content Reflection:
I think it has been interesting to see the development of possibilities of the computer and how the idea alone was enough to build it; however, no one could have possibly envisioned it would be so life changing. The computer has the ability to affect so many different aspects of our life under a wide range of conditions. In other words, who knew the invention of the computer would make a worldwide industry of post offices almost obsolete. Or what about how now we publish books digitally! You get the point. Computers have pervaded every little aspect of our life and they have changed the course of humanity. Whether that is a good or a bad thing, no one can say for sure.

So, when reading this article, it was very cool to see that the development of this species altering tool was headlined by a workforce of women. We often envision computer programmers and mathematicians as men. Which reminds me of the movie _____ about the “invention of the computer” by Alan Turing. In this movie, the development of computers would not have been possible without his partner who was a woman. I think this movie does a decent job of portraying the effect that women had on our technology while at the same time explaining the restrictions that society has always put on women in regard to seeing women as innovators.

As I am starting to gain a greater understanding of coding through this week's collaborative assignments, I am at the same time having trouble connecting the pieces we have learned together. I imagine that as I use the fundamental concepts we learned in the past two weeks more, I will continue to have a greater grasp on this new level of abstraction. I look forward to completing this coming week lab and think that because of the sheer number of questions on the lab that I will have adequate chances to shore my understanding.