CPS 250: Introduction to Computer Organization/Fall 2013

CPS 250 (3 sem hrs) Computer organization and architecture are studied from a software perspective. Data representation, program translation and execution are examined in the context of the classic von Neumann architecture. Programming assignments in both the C/C++ programming language and an assembly language reinforce the architecture concepts.

CPS 250: Introduction to Computer Organization/Fall 2013
Pre-requisite(s): CPS 151 (Algorithms & Programming II)

Meeting times: T Th 10:30am-11:45pm, MH 213

Instructor: Dr. S. Perugini, AN 145, 229-4079, sperugini1, OH's: M 11:00am-11:45am, 5:45pm-6:45pm, T Th 4:15pm-5:15pm (only when class is in session), & by appointment.

Teaching assistant: Alex Court, MH 21, courta1, OHs: M W 3:00pm-4:15pm, T noon-1:50pm, Th noon-1:50pm, & by appointment.

Required textbook: [CS] Computer systems (4th ed.) by Warford, J.S. (2010). Sudbury, MA: Jones and Bartlett. ISBN: 978-0-7637-7144-7.

Course objectives:
  • Establish an understanding of how a computer executes a program.
  • Establish an understanding of how a computer stores integers and floating-point numbers.
  • Establish an understanding of assembly language programming.
  • Establish an understanding of how a high-level program is (manually) translated into an assembly language program.
  • Establish an understanding of abstraction as one of the most fundamental principles in computer science.
Evaluation, workload, & policies

Course outline, required reading assignments, lecture notes, & homeworks:
  1. Computer systems & levels of abstraction (txt) ([CS] Ch 1): Aug 22 27 29
      compilations stages f1.cpp f2.cpp main.cpp practice problems (txt)

  2. Information representation & digitial arithmetic (two's complement binary representation and operations) ([CS] §§3.1-3.4, 3.6): Aug 29 Sep 3 6 10
      binary notes bitshifts.cpp command-line arguments echoargs.cpp echopargs.cpp echocharargs.cpp practice problems 1 2
      HW 1 due: Sep 12
      Exam I (open book, open notes, no electronic devices): Sep 17

  3. Computer architecture (CPU components, instructions, execution, immediate & direct addressing) ([CS] Ch 4): Sep 12 24 26
      machine language notes (courtesy Dr. Courte)
      HW 2 due: Sep 24

  4. Assembly language (mnemonics, directives, traps) ([CS] Ch 5): Oct 1 3
      HW 3 ([CS] p. 187, problems 12, 15, 16, & 17) due: Oct 1

  5. High-level language programming (variables, recursion, and dynamic memory allocation) ([CS] Ch 2): pre-requisite material from CPS 150 and 151; self-study, though covered concurrently with [CS] Ch 6-7
      process image

  6. Compiling to the Assembly Level I (global variables, control flow, boolean types, procedure & function calls, local variables, stack-relative addressing, call-by-value, recursion, references, call-by-reference, & stack-relative deferred addressing) ([CS] §§6.1-6.3): Oct 8 10 15 17 24 29 31 Nov 5
      HW 4 ([CS] pp. 234-236, problems 26, 27, 30, & 31) due: Oct 8
      Exam II (open book, open notes, no electronic devices): Oct 22
      HW 5 due: Oct 31

  7. Compiling to the Assembly Level II (indexed addressing, arrays, indirect addressing, dynamic memory, & linked structures) ([CS] §§6.4-6.5): Nov 7 12 14 21
      HW 6 due: Nov 7
      Exam III (open book, open notes, no electronic devices): Nov 19
      HW 7 due: Nov 21

  8. Floating-point representation ([CS] §3.5): Nov 26 Dec 3 5
      HW 8 due: Dec 5

  9. Traps & system calls ([CS] §§8.1-8.2): time permitting

  10. Final Exam (comprehensive, open book, open notes, no electronic devices): W Dec 11, 10:10am-noon, MH 207.
Programming style guide

Grades: available in Isidore

Textbook (Computer systems) resources (program files & figure slides)
Pep/8 assembler and simulator (for UNIX, Macintosh, & Windows)

Computer accounts: UDit | Keeping your password safe | A beginner's guide to effective e-mail

Helpful links: academic calendar | student handbook | UDit policies 

Feedback: Dr. Perugini welcomes any feedback you have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, course and grading policies, or your experience in the course.