Computer engineering compendium

Last updated

This is a list of the individual topics in Electronics, Mathematics, and Integrated Circuits that together make up the Computer Engineering field. The organization is by topic to create an effective Study Guide for this field. The contents match the full body of topics and detail information expected of a person identifying themselves as a Computer Engineering expert as laid out by the National Council of Examiners for Engineering and Surveying. [1] It is a comprehensive list and superset of the computer engineering topics generally dealt with at any one time.

Contents

Part 1 - Basics

Character Encoding

Character (computing)
Universal Character Set
IEEE 1394
ASCII

Math

Bitwise operation
Signed number representations
IEEE floating point
Operators in C and C++
De Morgan's laws
Booth's multiplication algorithm
Binary multiplier
Wallace tree
Dadda multiplier
Multiply–accumulate operation
Big O notation
Euler's identity

Basic Electronics

Series and parallel circuits
RLC circuit
Transistor
Operational amplifier applications

Signal Processing

Signal processing
Digital filter
Fast Fourier transform
Cooley–Tukey FFT algorithm
Modified discrete cosine transform
Digital signal processing
Analog-to-digital converter

Error Detection/Correction

Parity bit
Error detection and correction
Cyclic redundancy check
Hamming code
Hamming(7,4)
Convolutional code
Forward error correction
Noisy-channel coding theorem
Modulation
Signal-to-noise ratio
Linear code
Noise (electronics)

Part 2 - Hardware

Hardware

Logic family
Multi-level cell
Flip-flop (electronics)
Race condition
Binary decision diagram
Circuit minimization for Boolean functions
Karnaugh map
Quine–McCluskey algorithm
Integrated circuit design

Programmable Logic

Standard cell
Programmable logic device
Field-programmable gate array
Complex programmable logic device
Application-specific integrated circuit
Logic optimization
Register-transfer level
Floorplan (microelectronics)
Hardware description language
VHDL
Verilog
Electronic design automation
Espresso heuristic logic minimizer
Routing (electronic design automation)
Static timing analysis
Placement (EDA)
Power optimization (EDA)
Timing closure
Design flow (EDA)
Design closure
Rent's rule

Assembly/Test

Design rule checking
SystemVerilog
In-circuit test
Joint Test Action Group
Boundary scan
Boundary scan description language
Test bench
Ball grid array
Head in pillow (metallurgy)
Pad cratering
Land grid array

Processors

Computer architecture
Harvard architecture
Processor design
Central processing unit
Microcode
Arithmetic logic unit
CPU cache
Instruction set
Orthogonal instruction set
Classic RISC pipeline
Reduced instruction set computing
Instruction-level parallelism
Instruction pipeline
Hazard (computer architecture)
Bubble (computing)
Superscalar
Parallel computing
Dynamic priority scheduling
Amdahl's law
Benchmark (computing)
Moore's law
Computer performance
Supercomputer
SIMD
Multi-core processor
Explicitly parallel instruction computing
Simultaneous multithreading

Redundancy & Reliability

Dependability
Active redundancy
Dual modular redundancy
Triple modular redundancy
High-availability Seamless Redundancy
N-version programming
RAID
Fault tolerance
Fault-tolerant computer system
Watchdog timer
Redundant array of independent memory

Memory

Computer data storage
Memory controller
Memory management unit
Static random-access memory
Dynamic random-access memory
Synchronous dynamic random-access memory
DDR2 SDRAM
Flash memory
Memory scrubbing
Data striping
Hard disk drive performance characteristics
Disk sector

Part 3 - OS, Software, Testing, AI

Operating Systems

Operating system
Multiprocessing
Concurrent computing
Computer cluster
Distributed computing
Trusted computing base
Embedded system
In-circuit emulator
Real-time operating system
Comparison of real-time operating systems
Rate-monotonic scheduling
Earliest deadline first scheduling
Least slack time scheduling
Deadline-monotonic scheduling
Round-robin scheduling
O(1) scheduler
Thread (computing)
Concurrency control
Synchronization (computer science)
Mutual exclusion
Device driver

Software Development

Software development process
Software requirements specification
Spiral model
Agile software development
Behavior-driven development
Cowboy coding
Lean software development
Extreme programming
Structured systems analysis and design method
List of software development philosophies
Programming language generations
Comparison of programming languages
Printf format string
Programming paradigm
Object-oriented design
Software documentation
Software design document
Object-oriented programming
Concurrent Versions System
Software maintenance
Revision control
Software configuration management
Software release life cycle
MIL-STD-498
Software assurance
Systems development life cycle
Software quality
Software quality management
Relational database
ACID
List of data structures
Semipredicate problem
Application Interface Specification
Homoiconicity
Domain-specific modeling
Unified Modeling Language

Test/Integration

Software testing
Test-driven development
Acceptance test-driven development
Integration testing
Software walkthrough
Code review
Software inspection
Software verification
Functional testing
Software testing
White-box testing
Black-box testing
Gray box testing
Verification and validation (software)
Correctness (computer science)

AI & Robotics

Speech processing
Image processing
Computer vision
Robotics
Speech recognition

Part 4 - Information Theory, Encryption, Networking, and Security

Information Theory

Information theory
Channel capacity
Shannon–Hartley theorem
Nyquist–Shannon sampling theorem
Shannon's source coding theorem
Zero-order hold
Data compression
Modulation order
Phase-shift keying

Encryption

Hash function
List of hash functions
String searching algorithm
Avalanche effect
Rabin–Karp algorithm
Burst error-correcting code
Cryptography
Cryptographic hash function
Public-key cryptography
Viterbi algorithm

Networking

Computer network
List of network buses
Wide area network
Local area network
Network science
Non-return-to-zero
Manchester code
Ethernet
Internet
OSI model
Transmission Control Protocol
Point-to-Point Protocol
Exposed node problem
Circuit switching
Fiber-optic communication
Capacity management
Bandwidth management
Bandwidth (computing)
Throughput
Networking hardware
Wireless network
IEEE 802.11
Complementary code keying
Session Initiation Protocol
Message authentication code
Port Control Protocol
Network monitoring
Simple Network Management Protocol
Measuring network throughput
Reliability (computer networking)
Channel access method
Time division multiple access

Security

Computer security
Separation of protection and security
Information security
Information security management system
Internet security
Hacker (computer security)
DMZ (computing)
Firewall (computing)
Stateful firewall
Intrusion detection system
Denial-of-service attack
IP address spoofing

Part 5 - Misc

Multiple-criteria decision analysis

Related Research Articles

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both hardware and software. Computing has scientific, engineering, mathematical, technological, and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, and software engineering.

Computer programming or coding is the composition of sequences of instructions, called programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the application domain, details of programming languages and generic code libraries, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Computer science</span> Study of computation

Computer science is the study of computation, information, and automation. Computer science spans theoretical disciplines to applied disciplines.

<span class="mw-page-title-main">System on a chip</span> Micro-electronic component

A system on a chip or system-on-chip is an integrated circuit that integrates most or all components of a computer or electronic system. These components usually include an on-chip central processing unit (CPU), memory interfaces, input/output devices and interfaces, and secondary storage interfaces, often alongside other components such as radio modems and a graphics processing unit (GPU) – all on a single substrate or microchip. SoCs may contain digital and also analog, mixed-signal and often radio frequency signal processing functions.

Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. One well known subject classification system for computer science is the ACM Computing Classification System devised by the Association for Computing Machinery.

Electronic design automation (EDA), also referred to as electronic computer-aided design (ECAD), is a category of software tools for designing electronic systems such as integrated circuits and printed circuit boards. The tools work together in a design flow that chip designers use to design and analyze entire semiconductor chips. Since a modern semiconductor chip can have billions of components, EDA tools are essential for their design; this article in particular describes EDA specifically with respect to integrated circuits (ICs).

In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of a system with respect to a certain formal specification or property, using formal methods of mathematics. Formal verification is a key incentive for formal specification of systems, and is at the core of formal methods. It represents an important dimension of analysis and verification in electronic design automation and is one approach to software verification. The use of formal verification enables the highest Evaluation Assurance Level (EAL7) in the framework of common criteria for computer security certification.

<span class="mw-page-title-main">Theoretical computer science</span> Subfield of computer science and mathematics

Theoretical computer science is a subfield of computer science and mathematics that focuses on the abstract and mathematical foundations of computation.

The following outline is provided as an overview of and topical guide to software engineering:

<span class="mw-page-title-main">Timing attack</span> Cryptographic attack

In cryptography, a timing attack is a side-channel attack in which the attacker attempts to compromise a cryptosystem by analyzing the time taken to execute cryptographic algorithms. Every logical operation in a computer takes time to execute, and the time can differ based on the input; with precise measurements of the time for each operation, an attacker can work backwards to the input. Finding secrets through timing information may be significantly easier than using cryptanalysis of known plaintext, ciphertext pairs. Sometimes timing information is combined with cryptanalysis to increase the rate of information leakage.

<span class="mw-page-title-main">Hardware acceleration</span> Specialized computer hardware

Hardware acceleration is the use of computer hardware designed to perform specific functions more efficiently when compared to software running on a general-purpose central processing unit (CPU). Any transformation of data that can be calculated in software running on a generic CPU can also be calculated in custom-made hardware, or in some mix of both.

This is an alphabetical list of articles pertaining specifically to software engineering.

The following outline is provided as an overview of and topical guide to computer programming:

<span class="mw-page-title-main">Emulator</span> System allowing a device to imitate another

In computing, an emulator is hardware or software that enables one computer system to behave like another computer system. An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation refers to the ability of a computer program in an electronic device to emulate another program or device.

<span class="mw-page-title-main">Computer architecture</span> Set of rules describing computer system

In computer science and computer engineering, computer architecture is a description of the structure of a computer system made from component parts. It can sometimes be a high-level description that ignores details of the implementation. At a more detailed level, the description may include the instruction set architecture design, microarchitecture design, logic design, and implementation.

This glossary of computer science is a list of definitions of terms and concepts used in computer science, its sub-disciplines, and related fields, including terms relevant to software, data science, and computer programming.

References

  1. "NCEES PE Electrical and Computer Exam Specifications(note: requires updating every 6 months)" (PDF). National Council of Examiners for Engineering and Surveying.