BM

COMP-1200: Computer Systems - Spring 2025 Notes

Course: COMP-1200 - Computer Systems

Semester: Spring 2025

Presented by: Prof. Gyllinsky, based on comprehensive lecture slides developed in collaboration with esteemed colleagues: Prof. Park, Prof. Firouzbakht, Prof. Anwaruddinta and others who have expertise in various facets of computer science and systems.

Email Etiquette for Communication

When emailing professors, it is crucial to maintain professionalism and clarity. Include the following elements in the email body:

  • Your Full Name: Clearly state your full name to avoid confusion.

  • Class Designation: Specify your class (COMP1200) to indicate context.

  • Specific HW/Lecture Reference: Referencing a specific homework assignment or lecture helps the professor respond effectively.

  • Mentions of Section: This is optional this semester, but adding your section number may help in larger classes.

  • A Brief and Precise Question: Ensure your question is straightforward and concise.

Example email template:
"To: prof_Z@wit.edu
Hello Professor Z,
My name is X, and I am in your Computer Organizations class. Unfortunately, I am unable to attend on Tuesday (01/14) due to illness. I am continuing to follow along through Brightspace and will reach out with any questions once I return. Thank you for your understanding!"

Course Objectives

Understanding:

  • Acquire skills in arithmetic conversions among various numeral systems, including binary, decimal, hexadecimal, and octal representations, applicable to both integers and floating-point numbers, crucial for programming and computer science.

  • Comprehend the organization and operation of computer systems that revolves particularly around Instruction Set Architecture (ISA), forming the backbone of how computer instructions are executed.

Application:

  • Write short programs in assembly and machine code, essential for developing low-level programming skills and gaining a deeper understanding of how high-level instructions translate to machine-level operations.

Design:

  • Create and test combinational and sequential logic circuits such as adders, comparators, and counters, which are fundamental building blocks in digital design and computer architecture.

Learning Objectives

  • Define and articulate key concepts integral to the study and operation of computer systems, fostering a robust theoretical foundation.

  • Illustrate the structural hierarchy and components of computer systems, enhancing your ability to analyze and troubleshoot system functions.

  • Focus on general-purpose, reprogrammable computers, understanding their architecture and versatility in different applications.

General Purpose Computer Systems

Definition:

  • A deterministic system producing repeatable results from an initial state, which is foundational in ensuring consistency and reliability in computing processes.

Goal:

  • Assemble and understand complex systems from simpler components to grasp their operation thoroughly, promoting a hands-on approach to learning.

Computer System Components

  1. Processor (CPU):

    • The brain of the computer, it processes data and instructions by following programmed sequences that modify data, enabling complex computations and program executions.

  2. Memory (RAM):

    • Temporary storage of data and instructions during operation, playing a critical role in system speed and efficiency as it stores active processes.

  3. Storage (Disk):

    • Long-term data and instruction storage that remains accessible even after power-off, vital for saving important files and applications.

  4. Input/Output Devices:

    • Examples include peripherals such as keyboards, mice, and screens, which facilitate user interaction and manage the data input and output results effectively.

Computer System Organization

  • Hierarchical structure: It begins from bits as the fundamental unit of information echoed through gates that manipulate those bits, leading up to processors, instructions, and programming languages such as C.

  • Bits:

    • The basic unit of information represented as either 0 or 1, essential for all digital communication and processing.

  • Gates:

    • Constructed from transistors, these gates perform logical operations, forming the building blocks of circuitry that define digital computing.

  • Processor Architecture:

    • Discusses the Von Neumann model and Little Computer 3 (LC3), emphasizing how data flow and instruction execution are structured in modern processors.

Software Layers in Computer Systems

  • Operating System (OS):

    • The pivotal software that manages hardware resources and serves as an intermediary for user software access, ensuring smooth operation across various applications.

    • Examples include popular systems like Windows, MacOS, iOS, Linux, and Android, each presenting distinct user experiences and capabilities.

  • User Software:

    • Applications that run on top of an operating system, providing tools and functionalities for end-users, ranging from productivity suites to gaming applications.

Abstraction in Computer Systems

  • Each computer system component can be abstracted to simplify interactions for end users, allowing them to interface with complex hardware through user-friendly software interfaces without requiring detailed knowledge of the underlying microarchitecture or digital logic.

Compiling a C Program

  1. Preprocessing Phase:

    • Modifies the source code based on directives such as #include and #define, preparing it for the next stage.

  2. Compilation Phase:

    • Converts the modified code into assembly language, bridging the gap between high-level code and machine understanding.

  3. Assembly Phase:

    • Translates assembly code into machine code, resulting in an object file that the processor can execute.

  4. Linking Phase:

    • Combines the object file with libraries to create an executable program, ready for loading into memory, highlighting the importance of code modularity.

Performance Considerations

  • Understanding both hardware and software realms is essential for optimizing system-level performance, enhancing efficiency and responsiveness of applications through informed design and implementation choices.

Problem Transformation in Computer Systems

  • Transformation follows several structured steps starting from natural language specifications to algorithms and subsequently to machine architecture instructions:

    • Natural Language:

      • Initial problem statements, often ambiguous and requiring precision to clarify user intentions.

    • Algorithm:

      • A precise, step-by-step process to solve the problem, ensuring it is executable within the defined constraints.

    • Program:

      • Implementation in programming languages designed for machine performance, covering both high-level and low-level classifications.

    • Micro-Architecture:

      • The specific implementation of an ISA in computing devices, recognizing that limitations exist based on design decisions and objectives.

    • Logic Circuit:

      • The physical realization of micro-architecture, where different designs can be leveraged for optimal performance and power efficiency.

Next Steps in Learning

  • Explore further topics such as advanced Information Representation and Digital Logic Systems through the course, helping to deepen your understanding of complex computing concepts.

Note: Familiarize yourself with the Abrams textbook "Dive Into Systems" by Suzanne J. Matthews, Tia Newhall, and Kevin C. Webb as a supplementary resource for the course to support your learning and provide additional context during studies.