CISC (Complex Instruction Set Computing): supports more instructions, more transistors and power, less complicated software
RISC (Reduced Instruction Set Computing): supports fewer instructions, fewer transistors and power, more complicated software
GPUs: designed for graphics, example of array processor
Types of operating systems:
Multitasking operating system: allows the user to do multiple things at the same time
Multi-user operating system: allows users to share resources of one powerful machine
Distributed operating system: runs across multiple individual computers but appears as one system to the end user
Embedded OS: found in hardware serving a single purpose
Real-time operating system: reacts to input as close to real time as possible
Device drivers: contain software that tells the operating system how to understand data from external hardware devices and the format it expects to receive the data in
BIOS: basic input output system that controls the computer's startup sequence and helps configure hardware devices
Virtual machines (VM): program designed to fully simulate a computer in software, allowing multiple operating systems to run on the same computer or server
Applications:
Application software: allows users to perform tasks or produce something (e.g., word processor, spreadsheet, web browser)
Utility: small program with one purpose, usually for system maintenance (e.g., disk cleanup, defragmenter, compression, encryption)
Open source vs. closed source software:
Open source: source code available, often free and can be amended by users
Closed source: proprietary source code not available, usually more polished and easier to install with customer support
Translators:
Assembler: converts assembly code into machine code
Interpreter: converts high-level source code into machine code line by line
Compiler: converts high-level source code into machine code all at once
Software development lifecycle methodologies:
Waterfall model: sequential stages followed linearly, suited for large-scale projects with stable requirements
Rapid Application Development (RAD): builds a prototype evaluated and refined over multiple iterations, well-suited for projects with unclear requirements
Spiral model: manages risk well, requires risks to be identified and evaluated at each stage, suitable for large-scale or risky projects
Agile software development: deals with changing requirements, Extreme Programming (XP) focuses on producing high-quality code
Types of programming languages:
Low-level vs. high-level languages
Low-level languages: machine code, Assembly Language