ECS 050: Computer Organization & Machine-Dependent Programming

ECS 050
Computer Organization & Machine-Dependent Programming
Effective Term
2020 Spring Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Comparative study of different hardware architectures via programming in the assembly languages of various machines. Role of system software in producing an abstract machine. Introduction to I/O devices and programming. Only 1 unit of credit allowed for students who have taken EEC 070. GE Prior to Fall 2011: SciEng. GE: SE.
ECS 040 C- or better or ECS 034 C- or better or ECS 036B C- or better
Credit Limitation
Only 1 unit of credit allowed for students who have taken EEC 070.
Enrollment Restrictions
Pass One open to Computer Science, Computer Science & Engineering, Computer Engineering, and Cognitive Science Majors only.

Summary of Course Contents

  1. Basic Memory Architecture
    Review of ECS 40 C-language material on bits, bytes and memory addresses. Linear versus segmented address forms.
  2. Introduction to Processor Architecture
    Introduction to instruction sets, addressing modes and register sets, and their variation from one machine to another. Comparison of at least one CISC architecture and at least one RISC architecture, via extensive assembly-language programming on each. Memory-mapped versus separate-address-space I/O. I/O devices. Hardware interrupts. I/O programming—wait-loop, interrupt-driven, and via calls to operating system services or keyboard, video and file access.
  3. The Role of System Software in Producing an Abstract Machine
    Distinction between the roles of hardware and software. The use of compilers and operating systems in providing abstractions and machine independence to the programmer. Compiler implementation of C/Pascal data types, and storage allocation of variables in memory. Role of the operating system in helping the programmer to create, store and execute his/her programs, and in managing system resources.
  4. Machine Capability and Speed
    Transportability/nontransportability of programs on different machines, and under different operating systems and compilers. Efficiency of compiled vs. hand-coded programs. Writing mixed C-language/assembly language programs for extra efficiency or for special capabilities. Tradeoffs between the speed of hardware implementation of a function and the flexibility of software implementation.

Students will (1) learn fundamental concepts of computer architecture; (2) learn fundamental concepts of software systems; (3) be able to write programs in assembly language for at least two different architectures .

Illustrative Reading

  • Norm Matloff, Below C Level: An Introduction to Computer Systems, 2012. Open-source book, available at
  • Gerald Karam and John Bryant, Principles of Computer Systems, Prentice Hall, 1992

Engineering Design Statement
Students in the course write sophisticated, systems-level programs according to their own design. Many of the programs involve analysis of tradeoffs between efficient use of the hardware and ease of programming.

ABET Category Content
Engineering Science: 2 units
Engineering Design: 2 units

Science & Engineering

Substantial overlap with EEC 70, but large student demand justifies the overlap in content.

S. Davis, M. Farrens, and N. Matloff


1   an ability to apply knowledge of mathematics, science, computing, and engineering
2   an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4   an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6   an understanding of professional, ethical, legal, security and social issues and responsibilities
7   an ability to communicate effectively with a range of audiences
8   the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9   a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11   an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12   an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13   an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity

Course Category