This site will look much better in a browser that supports web standards, but it is accessible to any browser or Internet device.

SMART-ICS core knowledge and skills chart

Core Knowledge and Skills
ICS 51: Introductory Computer Organization

Other courses:
6D | 21 | 22 | 23 | 52 | 132

Sections:
Catalog Description   |   Course Prerequisites   |   Restrictions   |   Prerequisite Skills and Concepts   |   Minimum Knowledge and Skills
ICS 51
Catalog Description
Multi-level view of system hardware and software. Operation and interconnection of hardware elements. Instruction sets and addressing modes. Virtual memory and operating systems. Laboratory work using low-level programming languages.
ICS 51
Course Prerequisites

ICS 21/CSE 21 with a grade of C or better; Mathematics 6G

ICS 51
Restrictions

ICS 51
Knowledge Prerequisites: Skills and Concepts
In addition to the skills and concepts introduced in previous classes, students should have these computing skills when they enter the class (or learn them independently in the first week of the quarter):
  • The use of Microsoft Visual C++ 6.0 (or equivalent tool) to enter, compile and debug assembly code           
ICS 51
Minimum Knowledge and Skills
Binary Numbers
  • Mastery:
    • To convert from binary numbers to decimal, octal and hexadecimal and vice versa
    • Two's complement, One's complement and Sign Magnitude representation of negative binary numbers
    • Binary Arithmetic
  • Proficiency:
    • To understand how numbers are represented inside a computer
    • Radix Number Systems

Computer Organization

  • Mastery:
    • Identify the different components of a simple computer system
    • Identify the different parts of the Central Processing Unit (CPU)
    • Explain the Fetch-Decode-Execution Cycle
    • Identify the different elements that compose the Data Path
    • Explain the main differences between Primary and Secondary Memories
    • Understand the need for having memory hierarchy
    • Memory Addressing
  • Proficiency:
    • Understand the concepts of Languages, Levels and Virtual Machines
    • Principle of Locality and Caching
  • Exposure:
    • Overview of historical evolution of computers systems
    • Overview of different types of secondary memory
    • Overview of different Input/Output devices

Digital Logic

  • Mastery:
    • Basic Gates: AND, OR, NOT, NAND, NOR, XOR.
    • Boolean Algebra
    • Create Truth Tables
    • Implement Boolean functions
    • Draw graphical representation of a circuit
    • Combinational Circuits: Multiplexers, Decoders, Encoders.
    • Use combinational circuits to solve typical problems such as memory decoding, function generation, input selection, etc
    • Memory Organization.
    • Design a circuit to perform address decoding for a given (memory, I/O) organization
  • Proficiency:
    • Simplification of Boolean expressions using Boolean algebra theorems
    • Arithmetic Circuits: Half Adders, Full Adders. Arithmetic Logic Unit (ALU)
    • Design a very simple ALU
    • Latches and Flip-Flops. Explain the differences between these two memory elements
    • Identify and understand the differences between different types of Flip-Flops (Master Slave, Edge Triggered)
    • Understand the concept of clocks as elements of synchronization
  • Exposure:
    • Should be able to implement a simplified circuit using the basic gates from a given high level english description of a problem
    • Timing Diagrams for sequential (i.e. non combinational) circuits
    • External Buses: Width and Clocking
    • Interruptions. Understand how they are triggered, how they are handled, why they are useful

Micro Architecture

  • Mastery:
    • Understand the concept of micro programmed control
    • Clearly explain the difference between the execution of programs in main memory and those in the control store
    • Describe in detail the data path of the example implementation (currently the MIC architecture)
    • Register Transfer Language to describe micro instructions in the MIC architecture
    • Explain clearly the timings (phases) associated with the execution of a micro instruction
    • Implement the simplified instruction set of the MIC architecture, IJVM, using micro instructions
  • Proficiency:
    • Explain the usefulness of a stack architecture such as the MIC
    • Understand the Memory Model used by the IJVM
    • Convert between simple JAVA programs and IJVM
  • Exposure:
    • Understand the tradeoffs between speed and cost of a given implementation
    • Pipelining issues

Instruction Sets and Addressing Modes

  • Proficiency:
    • Design very simple instruction sets with expanding operation codes
    • Identify the different addressing modes: Immediate, Direct, Register, Register Indirect, Indexed, Base Indexed Stack
    • Understand the differences between different addressing modes
  • Exposure:
    • Understand the design criteria for instruction formats

Virtual Memory and Cache Memory

  • Mastery:
    • Understand the need for virtual memory
    • Describe different implementations of virtual memory: Paging and Segmentation
    • Explain the concept of Page Fault and how it is handled by the Memory Management Unit (MMU)
    • Convert Physical addresses to Virtual addresses and identify which memory references generate Page Faults
    • Explain the need for caching
    • Explain the basic principle of caching (locality principle)
    • Explain in detail and compare different cache architectures (Fully associative, Set associative, Directed mapped)
    • Design cache memory systems
    • Compare virtual memory with cache memory
  • Proficiency:
    • Explain the Working Set concept
    • Describe different Page Replacement Policies
    • Compare External and Internal Fragmentation

Assembly Language Programming

  • Mastery:
    • Understand how to write, compile, debug and execute and assembly language programs using Visual C++ 6.0 (or equivalent)
    • Identify the different registers of the x86 processor family (currently we use the Pentium family of microprocessors)
    • Identify the major types of instructions used by the majority of the assembly programs
    • How to store/load values to/from memory
    • Loops and Branches
  • Proficiency:
    • Develop programs that manipulate numbers of variable length and strings
    • Become familiar with a subset of the instruction set of the Pentium family of microprocessors
Return to top of page