fbpx
Home Blog Page 870

Hardware vs. Software: How Are They Different?

0
Hardware vs. Software: How Are They Different?

Everyone knows there’s a difference between hardware and software (and you might have also heard about middleware), but can you explain what that difference is? Beyond tangibility, hardware and software form the foundation of a computer’s architecture, and while they work together and rely on each other to operate, they serve very distinct purposes. Learning more about these difference will help you better understand the tech we use every day — and if you’re a developer, it’ll also give you more insight into how your programs work and the breadth and variety of careers in the field.

Learn something new for free

What is hardware?

Hardware is the physical part(s) of a device. It includes tangible devices you work with daily and all of their mechanical/electrical components, including desktop computers, laptops, tablets, modems, routers, and cell phones. Other forms of hardware include medical instruments (such as MRI machines), assembly-line robots, many electrical-related components in automobiles, and even sound equipment like microphones, speakers, and analog synthesizers. 

The smaller parts that make up these devices are also considered hardware in and of themselves (or processing hardware), such as the CPU or hard drive. These hardware components work together for a computer to function, each part performing specific tasks.

Learn something new for free

Binary system 

Today, we know data to represent facts and observations in numbers, text, images, and sounds. However, for the hardware components of a computer, the data is defined only by the numbers 1 and 0 – called bits (or binary digits). So how does the binary system work? 

As we explain in our introduction to computer architecture, computer instructions are written in binary, also known as machine code. Computer hardware operates on a series of these binary instructions through pulsating power signals that signify either OFF or ON based on the binary digits 0 and 1 respectively.

So, machine code instructions are transferred between computer hardware components using either 1 or 0. Taking it further, binary is a numbering system built on a base of 2. When counting to ten in binary, every time a value reaches a power of 2, a digit is added, like so: 

Decimal    Binary

   0         0

   1         1

   2         10

   3         11

You may notice that binary digits can grow very large as the decimal number increases. Thankfully for us humans, we leave most of the work of reading binary digits to the computer (unless you are the one building the computer, of course). 

So, computer hardware processes data by executing instructions for storage and movement between components, making information accessible to the user. The four primary functions of computers that allow for user interaction are:

  • Input 
  • Processing (converting input into output)
  • Memory storage
  • Output 

You can learn more about hardware programming with CircuitPython within our courses

Von Neumann architecture: The stored program concept 

The modern computer system follows Von Neumann’s architecture or the stored program concept. This idea allows computer memory storage to hold both instructions and data, thereby letting computer systems store both hardware data and software data.

The stored program concept ultimately allows users to change program data without interacting with hardware components. This design laid the groundwork from which software took off. 

What is software?

Software is a set of pre-designed code that runs as a program on the physical computer. Software programs may need to be installed by the user, or they come with your computer already pre-installed by the vendor. 

“The software determines the work to be performed and controls operation of the system.” – Irv Englander.

Creating software is possible using many different programming languages, such as Java and Swift. Each language has its pros and cons, depending on whatever you’re building. And at the root of it, software application programs define instructions to be executed by hardware. 

Today, there are three main types of software commonly used, listed in the sections below. 

Application software 

Application software (or apps) are programs that can be installed onto devices like computers and phones, as well as many other devices as well. Examples include Microsoft Word, Zoom, and Spotify. The Apple and Android app stores host thousands of ready-to-be-installed apps for your phone.

Web applications also fit into this category. Programmers primarily use HTML and JavaScript to build these and host them on web pages that anyone can access by typing in the URL. Google, Yahoo, and Bing are web applications — all of which are a subtype of applications called search engines. There are endless development possibilities on the web, from games to spreadsheets and so much more. 

System software 

System software comes pre-installed on devices. An example would be the device’s operating system, like Windows, Linux, or macOS. An operating system creates the main interface that you see every time you boot up your device. It manages input and outputs, executes programs, and allows for file management, among other things. Mobile operating systems are the system software in phones, including Android OS, Apple iOS, and Blackberry OS.

Programming software 

Programming software is what programmers use to develop other types of software. For instance, Java is a programming language that commonly uses programming software, such as compilers, assemblers, and debuggers. 

Integrated development environments (IDEs) combine several programming software into one for ease of use. For example, this is possible in Java with a package called Java IDE. Some examples of popular and versatile IDEs that programmers develop with are Visual Studio, Atom, Brackets, and Sublime. 

Components 

The components of software and hardware help illustrate the difference between the two. For software, there are not many components. The programming interface is where the application is made in the code editor. Then there is the user interface, which is the user-facing display of the programs.

Fundamentally, the main components of computer hardware are input, CPU, memory, and output. However, that is a grand overview. There are many components to computer hardware — from the processors like CPU and GPU to storage devices, such as the hard drive and RAM. Other main components, like the primary circuit board (called the motherboard) and input/output devices. Examples of these include your computer keyboard, monitor, mouse, power supply port, and audio jack. 

More hardware components include:

  • Switches
  • Knobs
  • Buttons
  • Transistors
  • Buses
  • Controllers
  • Embedded system
  • Network controller

What is the difference between hardware and software?

As you can probably tell, hardware and software are very different. They can be confused because we usually just see the interface of computers —  the displays of the operating system and application programs on our devices. So, we can easily forget everything that is happening inside the box.

The critical difference when comparing hardware to software is the code used to operate them. Computer hardware uses machine code that functions with the help of instructions in binary data. Software programs function via the code that makes them, which is possible with many different programming languages. And the data of software programs consists of much more than numbers, as opposed to hardware devices. The software works on hardware through the coded programs’ instructions that are ultimately translated into machine code. 

The two are also different in how they perform after time. Hardware wears down over time and is susceptible to physical damage, whereas software doesn’t wear down because once it’s written, it remains how it is. If bugs are written in the code, they will stay in the code until fixed. 

Both are similar in that they are both prone to becoming outdated. Newer versions of hardware components are released that simply have better technical specifications than previous iterations. As for software, program languages can become obsolete and risk no longer being supported. Most reliable programs have dedicated personnel to ensure the software is up-to-date and functioning as intended. 

Hardware vs. software careers

Software engineers and hardware engineers do different jobs. The responsibilities of a computer hardware engineer consist of designing, testing, and updating hardware components. Whereas, on the program side, software engineers are coding either application, system, or programming software, defining instructions for every aspect of the resulting program. 

However, most employers may require experience in both hardware and software. Not all positions use both, but some certainly do. Examples of job titles for the two include:

Main functions of modern computers 

Above, we mentioned four main functions of computers that allow for user interaction. Let’s take a closer look into each of these functions and see how they relate to the hardware aspect of computers. Below, we’ll dive deeper into the functional components of a computer today —  all of which are required to work together for computer software to function properly. 

Processing

Central processing unit (CPU)

The CPU is the most critical hardware component of a computer, as this is the piece of hardware that carries out the instructions of the machine code. There are three main components that make up the CPU: the arithmetic/logic unit (ALU), the control unit (CU), and the memory management unit (found within the CU). Below is a chart for the functions of each component:

ALUCUMemory management unit
It makes calculations for the data that passes through the unit. It determines and executes instructions via the fetch-execute cycle. A component within the CU that is essential for fetching data and instructions. 

Memory

Primary storage: random-access memory (RAM)

RAM is memory available to the computer only when the computer is in the ON state (volatile memory). There are two subtypes of RAM: Static RAM (SRAM) and Dynamic RAM (DRAM). Modern computers use both. However, the primary memory in most computers is usually DRAM. The chart below compares features of SRAM and DRAM computer hardware. 

SRAMDRAM
More expensiveLess expensive 
Requires more electrical powerRequires less electrical power 
Smaller storage capacityLarger storage capacity
Faster to accessSlower to access

Secondary storage: Hard drive

The function of hard drives is for permanent data storage (non-volatile memory). Without permanent storage, we wouldn’t be able to save software or documents on our computers without keeping power supplied at all times. Therefore, permanent memory is a crucial hardware component of modern computers. 

Solid state drives (SSDs) are the standard for computers today — rather than the magnetic disk hard drives that had been previously used for long-term storage. SSDs are large-capacity flash memory units. They have better data access times and potential for storage capacity compared to hard disks. Flash memory is used in larger systems, and even in more portable systems, like smartphones and tablets. 

Input/Output (I/O)

Data from I/O devices passes through I/O controllers and onward to the CPU, such that the data can be processed accordingly. Without I/O, we wouldn’t be able to do much with computers at all. Even networking wouldn’t be possible. This is something we may take for granted today. Simply setting up a connection to the internet is a task that involves input/output devices. 

  • Input units take in data. Along the data path, data is converted into streams of byte machine code, allowing the computer to work with the information. 
  • After processing, output units provide data that has been converted back into something that is understandable to humans, such as what is transmitted on our computer monitors or through our headphones. 

Computer system architecture

Modern computer architecture breaks down into four fundamentals: hardware, software, data, and networking. Without any one of these foundational pieces, a computer would not work as it does. So, learning what each one does on its own and then understanding how they work together is critical to conceptualizing the computer system as a whole.

Computer architecture is a complicated subject that takes time to learn. If you are building your own computer or just want a better understanding of how computers work, look no further than Codecademy. We have curated resources to help you understand vast areas of computer science —  relating to both computer hardware and software. You can continue to develop yourself by learning more about computer architecture or branch out with our other courses and tutorials.

GUEST POST: Interview with an occupational therapist, entrepreneur, and EdTech guru

0
GUEST POST: Interview with an occupational therapist, entrepreneur, and EdTech guru

Dr. Toni Shub is the CEO of QoreInsights. She is leading the innovation and development of the Classroom Education Plan, a K-5 practice-embedded personalized professional development program with a decision intelligence platform for needs analysis and research-informed strategies. Toni earned her EdD in Leadership and Learning in Organizations from Vanderbilt University, and holds an MS in Occupational Therapy and a BA in Child Development: Child Mental Health. She has six patents and two peer-reviewed publications. As an Early Learning Consultant, she developed the Mead® Writing Fundamentals line. Toni owned/operated a pediatric occupational therapy clinic for 20 years and is an international speaker focusing on high-impact factors and strategies for teaching and learning, and mitigating bias in AI-powered EdTech.

I always enjoy hearing about how people got to where they are. What has your career trajectory looked like and how has it formed your philosophy on education?

Thank you for asking. My career is summed up by two Ralph Waldo Emerson quotes. I started my career with this quote on the wall: “…To know even one life has breathed easier because you have lived that is to have succeeded.” Over time, I really felt a calling to make even a greater impact, which led me to adding the quote: “do not go where the path may lead, go instead where there is no path and leave a trail.”  

I have been pretty lucky and have had a fun and rewarding career with a lot of variety. I started out as an occupational therapist and ended up owning and running my own pediatric clinic, Pathways for Learning, in Charlotte, NC for 20 years. I loved working with kids and families and training therapists. As I developed expertise and saw what was working, I started speaking around the country and loved spreading the knowledge I had gained. In 2004, I started running into problems without apparent solutions and decided to try to tackle them. I started with developing a pencil grip, Grotto Grip, which I patented, successfully launched and still sell today. In 2005, I developed RediSpace to help students learn spacing between letters and number alignment when writing. Being at the right place at the right time led me to license RediSpace to MeadWestvaco, now Acco, which helped me move my products into mass market. The next few years were incredibly fun, developing Mead Writing Fundamentals line for Target, Wal-Mart, Staples, etc. 

At this point, I was going to tradeshows with my products, running my clinic, and momming to 6 kids. I loved the variety and the impact. I got good at finding the “why” of the kids who came to me for help and figuring out how to target those issues. In this role, I often heard, “Wow, my student’s [reading, writing, or math] have really improved,” but I rarely worked on those skills directly. What I did was address the underlying factors. Often, that included understanding what was happening from the child’s perspective. For example, when a 2nd grader was in trouble with his teacher for not listening when told to color a picture of a house he drew, he was described as stubborn and defiant. I said to the student, “Tell me about what happened.” He said, “I didn’t color it because it is a picture of the WHITE HOUSE.” 

A few years later when getting my doctorate in education, I decided to research ALL the academic and non-academic factors that significantly affect student achievement and engagement. I thought, what if every teacher could understand all these factors for every child in their classroom and then have at their fingertips the very best instructional method that would address the most pressing needs in the class. I realized the only way to bridge the gap between classroom needs (student and teacher needs, academic performance, and classroom behavior)  and the best evidence-based methods is to use technology. Technology also allows for scaling of the solution so every teacher gets what they need, when they need it; and, every student has a teacher who has considered whole-child needs, heard his/her voice, and has access to the most up-to-date, relevant, classroom-ready strategies. My experiences, research, and realizations culminated in my latest edtech product, the Classroom Education Plan.

You have had a lot of success as an entrepreneur! Can you talk about the Classroom Education Plan?

Sure, the Classroom Education Plan (CEP) is the culmination of our work and is reimagining how to improve teaching and learning. CEP is an AI-powered professional learning system for elementary educators. It uses real-time teacher and student input and data to match teachers to evidence-based instructional strategies to meet the most pressing needs in each classroom, and then tracks impact on student growth. It evolves throughout the school year so teachers, coaches, and administrators can adapt to changing needs. The CEP uniquely:

  • uses decision support technology to leverage learning sciences and real-time classroom needs to guide teachers to the best-fit evidence-based instructional strategy at scale. (This technology has been proven in medicine to accurately  identify conditions and guide recommendations, and has saved countless lives.) 

  • guides district and school improvement planning with real-time, whole-child data and a clear understanding of what is working or not working for whom, when, and where.

What’s Going On in This Graph? | March 15, 2023

0

“There seems to be genuine confusion over what a well-meaning person can say without offending someone,” begins a recent Opinion piece in The Times. Which words do you use, and why?

How community leader Oluwakemi is pursuing her passion for social work with help from University of Michigan and Coursera

0
How community leader Oluwakemi is pursuing her passion for social work with help from University of Michigan and Coursera

Meet Oluwakemi learning from Akinyele, Oyo State, Nigeria. She’s a dedicated social worker and changemaker throughout several non-profit organizations within her community. Read more about her incredible passion for helping people and how she utilized Coursera to expand her skills. Here’s her story in her own words:

In November of 2022, I earned a degree in Philosophy from the University of Ibadan, but  I have always had a passion for helping others. This passion only bloomed throughout my volunteer experiences at university.

While in school, I had the opportunity to serve in various leadership positions such as the lead for the Oyo State Team – a youth empowerment group that advocates for better socio-economic opportunities – and at AIA International Foundation, an international youth-led nonprofit organization working towards societal development using innovation for sustainable development. I later became the Team Lead for the South West Region for Slum2School Africa, a volunteer-driven organization that aims to empower underserved children.

My passion for serving female youth in my community led me to start my very own foundation. In February of 2019, I co-founded the Freedom Movement for the Girl Child (FMGC) with the goal to protect and educate young women and girls. 

These phenomenal programs and organizations helped me attain real world experience in the nonprofit sector, but I felt I needed formal training to further enhance my skills. I decided to enroll in the Social Work Practice: Advocating Social Justice and Change course from the University of Michigan on Coursera, and I am so thankful that I did! I was able to develop better skills in leadership, project management, and ultimately, I was able to  deepen my knowledge in social injustice.

With my degree, my experiences, and my knowledge gained through Coursera, I’m able to drive even more positive impact and change for vulnerable women and children in marginalized societies. I look forward to growing my career in social work and giving back to the community. My advice to learners is to BE the change you want to see! Just empower yourself to give power to others.

Do Bugs Deserve More Respect?

0

Insects are not legally protected in at least a dozen states. How much should we care?

Lesson Plan: ‘How Nature Comes Alive in the Winter’

0

In this photo-rich article, students will learn about the hidden natural treasures of wintertime. Then they will document life during the coldest season in their own communities.

The Dinner Party

0

Tell us a story, real or made up, that is inspired by this image.

Word of the Day: seasoned

0

This word has appeared in 413 articles on NYTimes.com in the past year. Can you use it in a sentence?

Can Generative AI Teach You to Code? It’s Complicated

0
Can Generative AI Teach You to Code? It’s Complicated

The ChatGPT hype is reaching a fever pitch: Educators are figuring out how to manage the AI chatbot in classrooms; programmers are using ChatGPT to write and debug code; job seekers are farming out their cover letters to ChatGPT, and hoping recruiters can’t tell the difference (they can). And tech giants are betting billions of dollars on the technology. 

If you haven’t heard of ChatGPT before, it’s a free AI chatbot created by the research company OpenAI, that’s trained to interact with humans in a conversational way. Ask it, for example, How do I make an HTTP request in Javascript? ChatGPT will instantly oblige, providing not just an explanation, but multiple examples of code snippets that you can copy and paste. As generative AI tools like ChatGPT catch on, workers across all professions are reckoning with the possibility of obsolescence and growing curious about the types of opportunities this technology could create. 

So what does ChatGPT mean for people whose jobs involve coding, or the folks who are learning to code because they want to have a technical career? Ahead we’ll explore how ChatGPT can help you learn to code, why it’s not a direct replacement for software engineers, and the AI and machine learning skills you should learn about now.

What is ChatGPT and how does it work?

ChatGPT is an AI chatbot that’s powered by a type of deep learning model that generates human-like text. On a very basic level, the large language models are trained to predict the word that’s likely to come next in text using probability distributions over words. This technology is an example of a neural network, which is a programming model inspired by the human brain. ChatGPT fits under the umbrella of “generative AI,” which is any AI that creates content, like the image-generator DALL-E, for example.

The GPT in ChatGPT stands for “Generative Pre-trained Transformer,” because the AI is pre-trained with data from the internet — and that’s key to its uncanny human-like responses. “They’re trained on these massive data sets from the internet, which is how they get such a finely-tuned sense that they can respond to these sort of absurd prompts, like, Rewrite some song in the style of Shakespeare,” says Ada Morse, Codecademy Curriculum Developer in Data Science. 

Learn something new for free

ChatGPT is the successor to GPT-3, a language prediction model that was released by the AI research company OpenAI in 2020. The reason why ChatGPT has been getting so much hype is because it’s the best AI chatbot that the general public has experienced. (It’s also currently free to use.)

Beyond individuals who are having fun playing around with the AI chatbot, major tech organizations are finding ways to get in on the action. Microsoft, for example, relaunched its search engine Bing adding a search-specific “next-generation OpenAI large language model that is more powerful than ChatGPT,” according to a release. Google is experimenting with a conversational AI service called Bard. Even Snapchat is adding a “My AI” feature that enables users to message with ChatGPT inside the app. 

Curious what it takes to code your own chatbot? In the beginner-friendly course Build Chatbots with Python, we’ll walk you through how to build chatbots that can teach themselves. For a deeper dive into natural language processing, consider taking the path Apply Natural Language Processing with Python

Can ChatGPT teach you how to code?

Well, yes and no.

You can ask ChatGPT to write code for you just by typing a request in plain English, and it’ll instantly spit out ostensibly workable code. That could be very handy in times when you can’t remember specific syntax and don’t have time to look up the documentation, or you need to browse some sample code. You could even ask ChatGPT to debug your code for you in a pinch. Pretty sweet, right?

Julie Jones, a Software Engineer at Codecademy, used ChatGPT recently to help her code a calendar app for personal use. Julie was building this app from scratch in Ruby on Rails, and couldn’t remember how to nest an object. “I didn’t have the brainpower at that time to think about, how do I place the object together?” Julie says. “I was like, Hey, these are my models, this is how I want it nested, and ChatGPT spit back the exact code that I literally copied in, and it worked. It was just amazing.”

“The reason we write code and we don’t write natural language is because natural language is ambiguous. That ambiguity can’t really be coded around.”

Ada Morse

Codecademy Curriculum Developer in Data Science

But ChatGPT can also make errors along the way, or get tripped up by certain requests — just like humans who write code. OpenAI’s website is forthcoming about the limitations, stating: “ChatGPT sometimes writes plausible-sounding but incorrect or nonsensical answers.” As an experienced programmer, Julie knew what types of clarifying questions to ask ChatGPT, and could verify that the code for her app was correct. Someone at the beginning of their coding journey, however, might not be able to contextualize ChatGPT’s responses, or pick up on subtle mistakes. 

Programmers are trained to be precise and detail-oriented, so accuracy is a concern, even when it comes to the basics. “The reason we write code and we don’t write natural language is because natural language is ambiguous,” Ada says. “That ambiguity can’t really be coded around.” 

If you’re solely relying on ChatGPT to learn how to code, you could be missing out on some crucial programming principles — like knowing how to solve problems, understanding how to read tech documentation, getting comfortable with trial and error, and building things on your own. “With coding, you need to know the fundamentals,” Julie says. “If you don’t know the fundamentals, then I don’t think the tool will be that helpful to you.”

On top of that, there are nuances to the human experience of learning that are difficult to replicate with AI. For example, research on how we learn suggests that some amount of confusion can be beneficial for learning. “So, even if ChatGPT always gave you the right answer, sometimes that would actually slow down your process of learning the concepts and being able to do it yourself,” Ada says.

Will ChatGPT replace software engineers?

People have been spooked that automation and machines will replace human workers since the Industrial Revolution. ChatGPT is already changing how engineers do their jobs, and potentially making them more productive and efficient. But that doesn’t mean generative AI is a direct proxy for a human programmer. 

Neil Daftary, an Engineering Manager at Codecademy, uses Github’s code-writing AI tool called Copilot to speed up the process of writing boilerplate, scaffolding (for example, creating a new component), and tests. “It could help with learning to code, but I think it’s more useful if you’re a bit further in your journey and have some idea of why Copilot is suggesting what it does,” he says.

Just take it from ChatGPT itself:

There are countless ways that tech workers in specific roles can (and probably will continue to) utilize AI tools like ChatGPT in their work. Some practical uses for ChatGPT that we’ve heard include: troubleshooting code instead of using a search engine; using it as a coding assistant to handle simple but tedious tasks; and explaining complicated concepts in simple language. Not to mention: As adoption of AI tools continues and spreads to other industries outside of tech, the demand for engineers who understand how to build AI products will rise, too. (Want to get a headstart on learning the skills used to build these types of applications? Check out our catalog of machine learning courses.)

Even with exciting, time-saving AI innovations like ChatGPT, there are very real limitations to the technology. ChatGPT lacks a true human touch; it doesn’t understand context and it doesn’t have subject matter expertise, Ada says. (Chatbots are also susceptible to bias, which is an issue that spans across AI.) Theoretically speaking, if an organization axes all their developers and uses AI tools instead to write code, “they’re probably just going to end up introducing a ton of bugs and a ton of problems,” she says. 

The bottom line

There’s so much more to coding than just knowing how to type exactly the right combination of letters and symbols into a computer. Learning to think like a programmer also means expanding your creativity, solving problems, communicating effectively, and collaborating with a team. 

Even ChatGPT agrees that you’re better off “using online coding environments or tools to practice coding on your own or collaborating with a teacher or mentor to guide you through your coding journey.” Take a look at how the chatbot answered this question for us:

If you’re going to use ChatGPT as you learn to code, we totally get it, but we recommend treating it like a study buddy. “Imagine you’re taking a class with someone who’s maybe really confident about how good they are in that class, but they’re actually not always correct,” Ada says. You might appreciate your study buddy’s suggestions or ask for their perspective on things, but you take it all with a grain of salt. 

That said, ChatGPT shouldn’t be your only study buddy. Don’t neglect other valuable resources like getting involved with the Codecademy community and asking questions in the forums. When you connect with other developers who have a bit more knowledge or experience than you, they can “sort of help you get over a hump without giving away the whole solution,” Ada says. 

Ultimately, ChatGPT shouldn’t discourage you on your coding journey — if anything, it should inspire you to want to learn more about this technology. Codecademy has lots of courses about machine learning that will teach you how to create and work with deep learning. If you’re interested in having a career in this exciting field, check out the path Data Scientist: Natural Language Processing Specialist

Should Classic Children’s Books Be Updated for Today’s Young Readers?

0

New editions of “Charlie and the Chocolate Factory” and other Roald Dahl books have been altered to eliminate words deemed inappropriate. Is that OK?