1/64
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Computer Programming
Planning, writing, testing, and documenting code to perform tasks.
Software Engineering
Applying math, engineering, and management to reduce costs and complexity, increase reliability, and modifiability; used in large projects.
Computer
50 million instructions/second
iPhone
40,000 instructions/second
Human
Can write ~20 instructions/day
Application Programmers
Work on productivity apps (e.g., MS Office).
System Programmers
Develop system software (OS, drivers, security modules) for servers and mainframes.
Apps
Can take over a year and cost $250,000+.
Problem Statement
Defines elements to manipulate to achieve a goal; includes assumptions and known info.
Assumption
Accepted truth needed to proceed with programming.
Known Information
Data given to help solve a problem.
Predictive Methodology
Extensive upfront planning/documentation.
Agile Methodology
Flexible development and changing specs.
Program Statement
Smallest unit directing computer actions.
Keyword
Predefined command word, can combine with parameters.
Text Editor
Basic text tasks (Notepad, TextWrangler).
Program Editor
For writing code.
VDE (Visual Development Environment)
Specialized for parts of programs.
Runtime Error
Program can't execute a statement.
Logic Error
Incorrect formulas, flawed problem definition.
Syntax Error
Grammar rules of programming language broken.
Debugging
Finding and fixing errors.
Remarks (Comments)
Make code easier to understand.
Performance
Must be acceptable, verified with tests.
Usability
Easy to learn and operate.
Security
Uses formal methods, threat modeling, defensive programming.
Formal Methods
Mathematical, logical models for software verification.
Threat Modeling
Identify vulnerabilities, assets, threats, and mitigation strategies.
Defensive Programming
Anticipate and handle possible errors (walkthroughs, input filtering).
Abstraction
Simplifies by hiding lower-level hardware details.
Low-Level Language
Little abstraction, hardware-focused (specific CPU/microprocessor).
High-Level Language
Human-like syntax (e.g., BASIC, Java, C++).
First Generation
Machine languages (very prone to errors).
Second Generation
Assembly languages (one-to-one CPU commands).
Op code
The operation itself.
Operand
Data or address involved.
Third Generation
Easier commands (COBOL, Fortran, BASIC, C).
Fourth Generation
Database languages (SQL, RPG).
Fifth Generation
Declarative logic programming (Prolog).
Source Code
Human-readable.
Compiler
Converts entire program to object code at once (creates standalone file).
Interpreter
Converts and executes line-by-line (no standalone file).
Scripting Languages
Distributed as readable source code, slower.
SDK (Software Development Kit)
Language-specific tools: compiler, editor, documentation, debugger, APIs.
IDE (Integrated Development Environment)
Single sleek tool (Editor + Compiler + Debugger); Example: Xcode.
Procedural Paradigm
Solving problems through sequences of steps.
Algorithm
Set of ordered steps to perform a task.
Pseudocode
High-level, language-agnostic representation.
Flowchart
Diagram of program flow.
Object-Oriented Paradigm
Solves problems with objects and classes.
Class
Template for objects.
Inheritance
Pass attributes from superclass to subclass.
Class Hierarchy
Organizes classes with inheritance.
Method
Defines an action (uses parentheses).
Polymorphism
Allows methods to be redefined in subclasses.
Encapsulation
Hiding object internals ("black box").
Declarative Paradigm
Describes the what of the problem, not the how.
Prolog Concepts
Facts: Basic information.
Rules
Relationships between facts.
Predicate(argument)
Basic format.
Goal
Prolog searches for answers.
Instantiation
Assigning a value to a variable.
Prolog Rules Structure
Head, Body, and a connecting symbol.
Decision Table
Shows specific rules for multiple conditions and their outcomes.
Extra Key Facts
More than 8,000 programming languages exist, but only ~600 are established.