CS 2275 Computer Organization and Assembly 3 credits

Computer organization is examined from the perspective of instructions, including the central processor, busses, input and output units, and memory units. Instruction sets, loaders and linkers, assembly language, address computation, and other architecture-related functions. Uses a different programming language.

The purpose of the course is to analyze the characteristics and the implementation of a computer system, and the CPU in particular; to provide a comprehensive and an in-depth understanding of the interaction between software and hardware. Addressing schemata including absolute addresses, base reg. offsets, virtual memory, and static and dynamic linking.
Prerequisites: CS1181
Programming language: MIPS assembly, C++
Compiler: MARS simulator, visual studio console applications for C++
Operating system: Windows 7, other OS are acceptable, remote use of virtual machines.
Computer Usage: Assignments require writing programs
Course Coordinator: Steve Chiu

Office Hours:
Class Hours:
Class Location:
Textbook: Computer Organization and Design, 4th edition. Patterson, Hennessy, Morgan Kaufmann Publishers, ISBN-13: 978-0123744937

Assembly programming (x86)
CPU organization,
computer performance,
computer arithmetic,
instruction set architecture,
addressing modes, virtual memory, memory hierarchy,
computer buses,
input and output devices,
error detection and correction, pipelining.
Aim, ACLs and security considerations


•an ability to apply knowledge of computing and mathematics appropriate to the discipline
  ◦knowledge of computer organization and arch is essential to computer science and necessary to learn compilers, and operating systems as well as conduct performance analysis of data structures and databases.
•an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  ◦Comparing and contrasting computer arch. Relative to a given problem.
•an ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
  ◦Students must analyze different CPU architectures and the assigned programming projects. Then, they must analyze what are the adequate data structures needed to simulate the computer architecture assigned for the project. an ability to use current techniques, skills, and tools necessary for computing practice
•an ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices
  ◦CPU organization computer performance), instruction set architecture, addressing modes hardwired and micro-programmed control units, computer arithmetic, memory hierarchy error detection and correction, and pipelining

50% homework, 50% tests. Homework is submitted using the Moodle tool. Homework projects are graded on a 100 point scale with a grade and written comments provided to the student through Moodle. Tests are graded on a 100 point scale. <=50% F, 60-69% D, 70-79% C, 80-89% B, 90-100 A.

Homework (Laboratory) Projects
Varies by semester, two or three programming projects consisting of simulating a simple computer architecture; each of these typically take 3 weeks to complete. Additional smaller homework assignments are required including assembly programming projects.

If students wish, they may work on campus in one of the computing laboratories or on their own machine. Questions can be answered during office hours or when the faculty available, so any questions that arise can be answered with a walk of only a few minutes.

Software Design             
Computer Arch                                                                               
Data structures                               
Programming Languages

Algorithm analysis
Secure coding practices

NIATEC National Science Foundation Information Assurance Directorate Department of Homeland Security CISSE Scholarship For Service