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

Computing Branch of knowledge

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and development of both hardware and software. It 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 is the process of performing a particular computation, usually by designing/building an executable computer program. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

Computer science Study of the foundations and applications of computation

Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines to practical disciplines. Computer science is generally considered an area of academic research and distinct from computer programming.

System on a chip Integrated circuit that incorporates the components of a computer

A system on a chip is an integrated circuit that integrates all or most components of a computer or other electronic system. These components almost always include a central processing unit (CPU), memory interfaces, on-chip input/output devices 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. It may contain digital, analog, mixed-signal, and often radio frequency signal processing functions.

In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically rigorous techniques for the specification, development and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.

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.

Reconfigurable computing is a computer architecture combining some of the flexibility of software with the high performance of hardware by processing with very flexible high speed computing fabrics like field-programmable gate arrays (FPGAs). The principal difference when compared to using ordinary microprocessors is the ability to make substantial changes to the datapath itself in addition to the control flow. On the other hand, the main difference from custom hardware, i.e. application-specific integrated circuits (ASICs) is the possibility to adapt the hardware during runtime by "loading" a new circuit on the reconfigurable fabric.

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 intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics.

Theoretical computer science Subfield of computer science and mathematics

Theoretical computer science (TCS) is a subset of general computer science and mathematics that focuses on mathematical aspects of computer science such as the theory of computation, lambda calculus, and type theory.

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

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:

Emulator Hardware or software that enables one computer system to behave like another computer system

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.

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.