%run -i python/common.py
%run -i python/ln_preamble.py

CS210 Computer Systems#

Intro and the Big Picture#

Highlight – “Programmable” and “Device”

COMPUTER SYSTEM

A rich and beautifully tapestry of Interacting
Hardware + Software components that are the substrate to our modern digital world

This Class

Understand the “Anatomy” of Software and how it interacts with the hardware.

  • Expose you to a deeper view of the digital world and around you

  • Give you the skills and knowledge to understand and manipulate (program) more of the computing

  • Generally make you better programmers and more informed decision makers

GENERAL ANATOMY OF COMPUTING

Computing is composed of many parts — roughly organized into layers

  • HARDWARE: Foundation on which everything is built

  • SOFTWARE: Complex layers of interacting software components


GENERAL ANATOMY OF COMPUTING

Computing is composed of many parts — roughly organized into layers

  • HARDWARE: Foundation on which everything is built

  • SOFTWARE: Complex layers of interacting software components

Despite all the kinds of computers in our lives …



Client Computers

Server Computers

A Programmers View


The two pillars of computer science


Theory and Systems

Lets turn back the clock

Before there was computer science and there was only imagination of what could be

  1. Turing and the Turing machine

  2. Von Neumman and the Von Neumman Architecture

  3. Rear Admiral Grace Hopper and the compiler

May you live in interesting times…




Knowledge is power…




It's up to YOU … as to what comes next





WHO ARE WE?



Welcome to CS210#

  • Course Goals and Objectives

  • “Under the Covers : The Secret life of Software”

  • Rest of course infrastructure

  • Staff

  • Syllabus

    • calendar

    • grade break down

      • assignments

      • midterms

      • exam

      • attendance and participation

  • Lectures, Discussions and Office hours

  • General Advice

Course Goals#

  1. Understand the layers of computer systems

  2. Understand software / hardware interaction

  3. Learn foundational concepts, skills and tools for working with computers

#FileCodeBox("src/hello_bb.c", "C", "<b>CODE: C - Hello World")
display(Markdown(FileCodeBox(
    file="src/hello_bb.c", 
    lang="C", 
    title='<b>CODE: C - Hello World')))
showET()
showBT()
showDT()
showET()
#MkCodeBox("src/popcnt_bb.S", "gas", "<b>CODE: asm - Our First assembly program - Playing with popcnt", "200%", "640px")
#FileCodeBox("src/hello_bb.c", "C", "<b>CODE: C - Hello World")
display(Markdown(FileCodeBox(
    file="src/popcnt_bb.S", 
    lang="gas", 
    title="<b>CODE: asm - Our First assembly program - Playing with popcnt",
    h="600px", 
    w="640px"
)))
showBT()
display(Markdown(FileCodeBox(
    file="assembly/popcnt_build.sh", 
    lang="shell", 
    title="<b>NOTES: on building popcnt", 
    h="15em", 
    w="100%")))
showDT()
display(Markdown(FileCodeBox(
    file="assembly/popcnt_gdb.txt", 
    lang="shell", 
    title="<b>NOTES: using gdb with popcnt", 
    h="100%", 
    w="640px")))