Foothill CollegeApproved Course Outlines

Physical Sciences, Mathematics & Engineering Division
ENGR 12COMPUTER ARCHITECTURE & ORGANIZATIONSummer 2014
4 hours lecture, 3 hours laboratory.5 Units

Total Quarter Learning Hours: 84 (Total of All Lecture, Lecture/Lab, and Lab hours X 12)
 
 Lecture Hours: 4 Lab Hours: 3 Lecture/Lab:
 Note: If Lab hours are specified, see item 10. Lab Content below.

Repeatability -
Statement: Not Repeatable.

Status -
 Course Status: ActiveGrading: Letter Grade with P/NP option
 Degree Status: ApplicableCredit Status: Credit
 Degree or Certificate Requirement: AS Degree
 GE Status: Non-GE

Articulation Office Information -
 Transferability: BothValidation: 07/01/2013


Cross Listed as:C S 10
Related ID:

1. Description -
Introduction to the organization, architecture and machine-level programming of computer systems. Topics include mapping of high-level language constructs into assembly code, internal data representations, numerical computation, virtual memory, pipelines, caching, multitasking, MIPS architecture, MIPA assembly language code, interrupts, input/output, peripheral storage processing, and comparison of CISC (Intel) and RISC (MIPS) instruction sets.
Prerequisite: C S 1A or 2A.
Co-requisite: None
Advisory: C S 1C or 2C; not open to students with credit in C S 10.

2. Course Objectives -
The student will be able to:
  1. Describe the architectural components of a computer system.
  2. Discuss and demonstrate the use of compilers, linkers, and loaders.
  3. Describe computer representation of numbers and how computer arithmetic is carried out.
  4. Describe the representation of nonnumeric data (character codes, graphical data.)
  5. Demonstrate the knowledge of MIPS assembly language.
  6. Compare and contrast MIPS architecture and assembly language with IA32.
  7. Write and debug assembly programs that use load/store, arithmetic, logic, branches, call/return and push/pop instructions.
  8. Discuss how variable access, arithmetic, function calls, and pointers are translated from a high level language into assembly.
  9. Write programs that interface between a high level language and assembly.
  10. Write programs that contain system calls.
  11. Demonstrate and evaluate the use of efficient programming techniques
3. Special Facilities and/or Equipment -
  1. Computer laboratory with MIPS Simulator and C compilers.
  2. website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
  3. When taught via Foothill Global Access, a fully functional and maintained course management system through which the instructor and students can interact.
  4. When taught via Foothill Global Access, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.

4. Course Content (Body of knowledge) -
  1. The architectural components of a computer system (the von Neumann machine: CPU (registers, ALU), memory, buses
    1. CPU
      1. Control-unit
      2. Instruction fetch
      3. Decode
      4. Execution
    2. Memory
      1. Bits
      2. Bytes
      3. Words
    3. Registers
    4. Flag bit hardware
    5. Relationship of the hardware components to software
    6. Instruction sets and architectures
      1. Data Manipulation
      2. Control
      3. I/O
    7. Addressing modes
      1. Immediate
      2. Register
      3. Memory
    8. Buses
  2. Prepare high level language programs for execution
    1. Invoking the compiler
      1. Choosing the optimization level
      2. Examine the assembler language program generated by the compiler
    2. Use a linker to generate the executable program
    3. Use the loader to execute the program
  3. The computer representation of numbers and how computer arithmetic is carried out.
    1. Binary
    2. Hexadecimal
    3. Packed decimal
    4. Integer (Signed and twos compliment representations)
    5. Floating Point
    6. Conversions between numeric representations
  4. The representation of nonnumeric data (character codes, graphical data)
    1. BCD, EBCDIC, ASCII, and Unicode character codes
    2. Rendering pixels on displays and printers
  5. Representation of arrays and records
  6. Instruction sets, assembly and machine language programming.
    1. Syntax (Instruction format)
    2. Data transfer instructions
    3. Binary integer arithmetic
    4. Conditional branching
      1. Related hardware instructions
      2. Extended mnemonics
      3. Unconditional Jump
      4. Conditional Jump
    5. Array access
    6. String processing instructions
    7. Bit-Level instructions
    8. Run time stack instructions
    9. Packed decimal instruction
    10. Extensions 64-bit instructions
  7. RISC (MIPS) Instruction Set Architectures
    1. Motivation for RISC
      1. Chip simplification, Cost reduction, Performance improvements
    2. Current thoughts on CISC vs. RISC
  8. Write and debug assembly programs that use load/store, arithmetic, logic, branches, call/return and push/pop instructions.
    1. Syntax
    2. Variables and constants
      1. Declarations
      2. Redefinition
      3. Conversion between types
    3. Subroutine call and return
      1. Parameter passing
      2. Save and restore conventions
      3. Local variables
    4. Copying instructions
    5. Binary integer arithmetic
    6. Conditional branching
      1. Hardware level
      2. Extended mnemonics
      3. If and If...Else...
    7. Looping
      1. While construct
      2. For construct
      3. Repeat construct
    8. Array access
      1. Direct addressing
      2. Indirect addressing
    9. String processing instructions
    10. Bit-Level instructions
    11. Run time stack instructions
  9. Examine and demonstrate how variable access, arithmetic operations, function calls, and pointers are translated from a high level language to assembly. language
    1. Use the compiler to produce assembly language instructions
    2. Determine the assembly language instructions generated by specific high level language instructions
  10. System Calls
    1. Calling from assembly code
  11. Evaluate efficiencies in programming.
    1. Location of variables
    2. Exploiting pipelining
    3. Exploiting multicore processors
5. Repeatability - Moved to header area.
 
6. Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. Final examination
7. Representative Text(s) -
Bryant, Randal A. Computer Systems: A Programmer's Perspective. Prentice Hall, 2011.
Plantz, Robert G., Introduction to Computer Organization with x86-64 Assembly Language & GNU/Linux, 2011.

8. Disciplines -
Computer Science
Engineering
 
9. Method of Instruction -
  1. Lectures which include motivation for the architecture of computer systems (CPU, RAM, storage), syntax and use of the ISA 32 assembly language, example programs, and analysis of these programs.
  2. On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. A programming assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work.
    2. A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publically with other class members.
  3. Detailed review of programming assignments which includes model solutions and specific comments on the student submissions.
  4. In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
  5. When course is taught fully on-line:
    1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
 
10. Lab Content -
  1. Assembler and Compiler Installation
    1. Install a MIPS Assembler/Simulator and a C compiler
    2. Compile a simple C to demonstrate the proper installation of the compiler.
    3. Use the assembler to generate the corresponding object code.
    4. Run the linkage editor and execute the program
  2. High level language programming and numeric representations
    1. Write a program in a high level language that stores and converts between a variety of numeric representations
    2. Compile the program
    3. Examine the output of the compiler and correlate the high level language instructions with the generated assembler instructions.
    4. Discuss the various numeric representations and how they interoperate
  3. High level language programming and non-numeric representations
    1. Write a program in a high level language the stores and converts between a variety of non-numeric representations
    2. Use BCD, EBCDIC, ASCII and Unicode character codes and convert among them.
    3. Compile the program
    4. Examine the output of the compiler and correlate the high level language instructions with the generated assembler instructions.
  4. Basic Assembly language programming
    1. Write an assembly language program which demonstrates data transfer instructions, binary arithmetic, and conditional branching
    2. Assemble and execute the program
    3. Evaluate the output
  5. Advanced Assembly language programming
    1. Write an assembly language program which demonstrates array access and manipulation, String processing ,Bit-level instruction
    2. Assemble and execute the program
    3. Evaluate the output
  6. Interaction between high level and low level languages
    1. Write an high-level language program which calls, passes data to, and receives data from another assembly language program
    2. Assemble and execute the program the program
    3. Examine the output of the program to ensure that it produces the desired results
  7. Interaction between assembly language programs and system calls
    1. Write an assembly language program which calls, passes data to, and receives data from operating system calls
    2. Assemble and execute the program the program
    3. Examine the output of the program to ensure that it produces the desired results
  8. Writing efficient high level language programs.
    1. Compile a sample source program and analyze the resulting assembly language program
    2. Modify the source program in order the resulting assembly language program execute faster.
    3. Analyze and explain why the changes made the assembly language program execute faster.
 
11. Honors Description - No longer used. Integrated into main description section.
 
12. Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Supplied handouts and modules averaging 10 pages per week.
    3. On-line resources as directed by instructor though links pertinent to programming.
    4. Library and reference material directed by instructor through course handouts.
  2. Writing
    1. Technical prose documentation that supports and describes the programs that are submitted for grades.
13. Need/Justification -
This course is a required core course for the AS degree in Computer Science and a restricted support course for the AS degree in Engineering.



Course status: Active
Last updated: 2014-06-03 10:17:48


Foothill CollegeApproved Course Outlines