Computer Resources Are Generally Exposed To External Resources Through
stored program concept
-digital computers are multi-purpose devices & execute tasks with speed and precision
-humans and computers are complementary
-a computer is "like a bicycle for the mind"
classes of software programs
-operating system
-system software
-application software
AD
why do we need software programs?
to bridge the gap btw. people and computers
operating system
-it is the software program that manages a computer system and its operations
-it is a platform for software applications
-it exposes application programming interfaces (API)
-most important because it allows you to use machine and allow access to other computer resources
what does the operating system do?
-it allocates and assigns system resources (manage user credentials, memory addressing)
-it schedules access to resources (CPU time, printer queue)
-it monitors system's activities (status of jobs)
system software
software you wouldn't need if you didn't have a computer (ex: you don't need an antivirus program if you don't have a computer)
what are software programs designed to do?
-to extend the functionality of the operating system (device drivers)
-provide specific system management functionality (antivirus)
-provide the facilities for software development (integrated development environment)
from system software to operating system
-apple: time machine (automatic backups)
-apple: compression utility
-windows: firewall
-windows: disk cleanup utility
-android: google allo
-iOS: siri
application programming interface (API)
point of contact btw. two software programs
-allows software program to tell OS to do command, such as print
-interface allows the interaction btw. you and the device
application software
a software program that enables a user to perform an activity they would perform without a computer (excel, snapchat)
GPS is an example of
an input device
-API is part of OS, allows for communication
Examples of application software
-excel: data analysis
-word: communication
-groupme: verbal communication
-fortnite: entertainment
interface
the point of contact btw. two systems or two components of a system
more examples of user interface
ATM and Ipod
types of user interfaces
-command line
-menu driven
-graphical (GUI)
-conversational interfaces (amazon alexa, siri)
technical platforms
the "environment" in which a software program is executed
-hardware architecture (intel, ARM)
-operating system (wintel, iOS)
-software application (chrome, facebook)
strategic platforms
a software-based product or a service that serves as a foundation on which outside parties can build complementary products or services
Moore's law
why is the communication gap btw. people and technology shrinking?
HTML
hypertext markup language
-the standard language for describing and defining the content of web pages
how does HTML work?
it does so by "marking up" the elements of a page with tags that identify the elements to the browser
the HTML browser interprets the tags and
-retrieves external resources (images, sound files)
-renders the content
hypertext
elements of the web page that link to an external resource
programming language
HTML is not a
software programs
the set of instructions which govern the operations of a digital computer
programming
the art and science of writing software programs
-algorithm design
-coding
algorithm
a set of rules for solving a problem, or achieving a result, in a finite number of steps
algorithm design
the activity of envisioning and specifying the set of steps the computer must perform in order to produce the expected output (the algorithm)
coding
the activity of writing the algorithm as a set of precise instructions for the computer to execute= using a specific programming language
algorithm and algorithm design
what two things does it take to actually code?
machine language
-instructions are sequences of impulses for the CPU to process, represented as: binary representation
-explicit memory addressing
-hardware specific
-very difficult to use-the programmer has to bridge the full 'communication gap'
-difficult to maintain programs over time
machine language
what is the lowest level language?
hardware specific
it maps directly to the microprocessor's instruction set
what is hardware specific low level language?
assembly language
assembly language uses
mnemonic opcodes and symbolic addresses
-it is one level of abstraction above machine lang.
mnemonic opcodes
abbreviations to represent instructions (ADD, SUB)
symbolic addresses
"meaningful" identifiers for memory locations (AX, BX, DI, SI)
what does assembly language require?
requires knowledge of the hardware but easier than machine language
assembler
the software program that converts assembly language code into machine language
-source code and object code
source code
human readable software program
object code
machine executable software program
high level languages
-aka Third Generation Langs. (3GL)
-higher abstraction than assembly lang.
-one to many mapping to machine lang.
-platform independent
-must be converted into machine lang. in order to be executed (compiler & interpreter)
-example is Java
compiler
performs the conversion from source to object code before the program can be executed
interpreter
source to object one line at a time
fourth generation languages
-higher abstraction than 3GL
-non-procedural english-like langs.
-outcome driven
outcome driven
programmer specifies what (the outcome) not how (the procedure)
higher level abstraction implies
-greater ease of use
-greater portability across hardware platforms
-lower control by the programmer over hardware resources
-lower efficiency of the resulting software program
application logic layer
-instructions that specify what the application does
-this is the defining code of the software prgram
data management layer
-contains instructions specifying where and how to store the application's data
as well as how to search for it, retrieve it and secure it
components of communication gap
1. presentation layer-codes how to interact
2. application logic layer- contains all features in software programs
3. data management layer- codes how to search, retrieve, and secure all data