• Thinking concurrently: designing programs that can run multiple processes at the same time
  • Concurrent computing: allows multiple processes/tasks to run on a single processor by giving each process a fraction of time and control over the processor before swapping to another process
  • Parallel computing: where multiple processes are run at the same time over multiple processor cores to enable faster computations
  • Dependencies: tasks that rely on other tasks in order to either start or complete
  • Batch programming: executing a series of computer programs or tasks without requiring user interaction during their execution
  • Pipelined: overlapping the execution of multiple instructions