The Greatest Ideas in Computer Architecture

  • Moore’s Law – Integrated Circuits resources double every 18-24 months
    • Prediction in 1965 by Gordon Moore, Founder of Intel
    • Design with future of technology in mind vs present of technology
    • Represented by the graph below


      ‘up and to the right’ graph

  • Abstraction – Represent the design at different levels of representation
    • Increases productivity and decreases design time
    • Lower levels details are hidden to make it simple = higher level details

abstract painting

  • Common Case Efficiency – Enhance efficiency more than the efficiency of rare cases
    • Experimentation and measurement is required
    • Fast sport cars versus fast minivan?

Jaguar F-Type

  • Parallelism Efficiency – Performing operations in parallel
    • Increases performance
    • Represented by the jet engines on a plane below

Dual engines on jet

  • Pipelining Efficiency – Pattern of parallelism
    • Has a particular sequence with different stages
    • Represented by ventilation in data centers

Air ventilation of data centers

  • Prediction Efficiency – Easier to ask for forgiveness than permission
    • As long as prediction is not expensive and is accurate
    • Represented by the sky for weather forecasting

Weather forecasting based on clouds

  • Memory Structure – Required to be fast, large, and cheap
    • Memory speeds hinders performance while capacity limits unsolvable issues
    • Memory is one of the most expensive component in computers
    • Cache versus Random Access Memory (RAM) versus Hard  Disk Drive (HDD)
    • Represented by a pyramid with cache at the top and HDD at the bottom

Pyramid memory structure

  • Redundancy Dependency – Components for detecting  and resolving failures
    • Moral of the story is that any device can fail
    • Represented by emergency procedures when flying a plane

Emergency procedure for crashed plane


Evolution of Computers

This will be the beginning of a series of posts that will serve to enlighten the ever changing information technology industry.

Real Gross Output of Computer systems design and related services (in billions) (1)

2008 2009 2010 2011 2012 2013 2014 2015
269.8 266.2 291.8 312.0 331.3 335.3 348.1 354.3

Moore’s law refers to an observation made by Intel co-founder Gordon Moore in 1965. He noticed that the number of transistors per square inch on integrated circuits had doubled every year since their invention. (2)



Computer Applications:

  • Personal Computer (PC) – Most widely known application. Delivers good performance to single user at low cost and executes third part software.
  • Servers (S) – greater computing, storage, and input/output capacity. In general, servers place a greater emphasis on dependability, since one crash can be costly.
  • Supercomputers (SC) – tens of thousands of processors and many terabytes of memory. Mostly used for scientific developments like weather forecasting and oil exploration.
  • Embedded Computers (EC)- Run one application or set of related applications that are integrated within the hardware. There are many embedded computers around now.
  • Personal Mobile Devices (PMD) – Replacing the PC with drawback of not having traditional peripherals and being costly
  • Cloud Computing (CC) – Replacing the server with datacenters known as Warehouse Scale Computers

Issues of PostPC Era (PMD & CC) are the parallel nature of processor and the hierarchical nature of memories. Despite the issues, many professionals still believe that Moore’s Law holds substance in the evolution of the computer based on the graph below.


By reading this series you will gain an understanding of:

  1. Programming in high level languages such as C and Java
  2. Interfacing hardware and software
  3. The performance of a program and how to improve performance
  4. Techniques used to improve performance and energy efficiency for hardware designers
  5. Pros and Cons of sequential and parallel processing
  6. The great ideas in the computer world


(1) – U.S. Bureau of Economic Analysis

(2) – Investopedia

Getting Started with Selenium

  1. Install Java SE Development Kit 8
  2. Install IntelliJ 15
  3. Launch IntelliJ 15
    • Navigate through setting up your java environment (if first opened)
    • Make sure to enable TestNG and Maven plugins
  4. Click Create New ProjectScreen Shot 2016-03-13 at 12.17.18 PM
  5. Create a Maven Project and Select Project SDK that was downloaded earlier then click nextScreen Shot 2016-03-13 at 12.19.58 PM
  6. Enter GroupId, ArtifactId, and Version for your new project then click nextScreen Shot 2016-03-13 at 12.22.56 PM
  7. Enter Project Name and Project directory then click finishScreen Shot 2016-03-13 at 12.24.35 PM
  8. ****Make sure to enable auto import maven projects******Screen Shot 2016-03-13 at 12.27.12 PM
  9. Paste the following dependencies tag to your pom.xml to use selenium in your web automation tests and TestNG capabilities. *wait until all processes finish*
  10. Now you have the basic for creating tests with selenium in IntelliJ using Java language. Make sure to watch my tutorials on how to create Drivers, Controllers, and a TestBase to create your first web automation test.