CPS 250: Introduction to Computer Organization/Fall 2012

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 2012
Pre-requisite(s): CPS 151 (Algorithms & Programming II)

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

Instructor: Dr. S. Perugini, AN 145, 229-4079, e-mail id: sperugini1, OH's: M 11:00am-noon, W noon-1:00pm, T Th 7:10pm-8:10pm, & by appointment.

Teaching assistant: Kyle Healy, MH 21, e-mail id: healyk2, OHs: M W 9:00am-10:30am, 2:00pm-4:00pm, T noon-2:30pm, F 9:30am-10:30am, & 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, lecture notes, & homework & required reading assignments (to be completed prior to class):
  1. Computer systems & levels of abstraction ([CS] Ch 1): Aug 23 28

  2. High-level language programming (variables, recursion, and dynamic memory allocation) ([CS] Ch 2): Aug 28 30 Sep 4 6
      compilations stages process image working.cpp swap.cpp square.cpp square2.cpp

  3. Information representation & digitial arithmetic (two's complement binary representation and operations) ([CS] §§3.1-3.4, 3.6): Sep 6 11 13 18
      binary notes (courtesy Dr. Courte) bitshifts.cpp command-line arguments echoargs.cpp echopargs.cpp echocharargs.cpp practice problems 1 2

  4. Computer architecture (CPU components, instructions, execution, direct addressing) ([CS] Ch 4): Sep 18 20 25
      machine language notes (courtesy Dr. Courte)
      HW 1 due: Sep 20

  5. Assembly language (mnemonics, directives, immediate addressing, traps) ([CS] Ch 5): Sep 27 Oct 4 9 11 16 18
      HW 2 due: Sep 27
      Exam I (open book, open notes): Oct 2
      HW 3 due: Oct 16

  6. Compiling to the Assembly Level I (local variables, stack-relative addressing, control flow, & function calls) ([CS] §§6.1-6.3): Oct 23 25 Nov 1
      HW 4 due: Oct 25
      Exam II (open book, open notes): Oct 30
      HW 5 due: Nov 1

  7. Compiling to the Assembly Level II (indexed addressing, arrays, dynamic memory, & linked structures) ([CS] §§6.4-6.5): Nov 6 8 13 15
      HW 6 due: Nov 8
      HW 7 due: Nov 20

  8. Floating-point representation ([CS] §3.5): Nov 20 29 Dec 4 6
      Exam III (open book, open notes): Nov 27

  9. Traps & system calls ([CS] §§8.1-8.2): Dec 6
      HW 8 due: Dec 6

  10. Final Exam (comprehensive, open book, open notes): Th Dec 13, 2:30pm-4:20pm, 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 | UNIX account access | 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 may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, course and grading policies, or your general experience in the course.