CPSC 33 Fall 2011

Computer Organization

Schedule | Grading | Labs | Integrity | Accomodations | Links


This course takes a bottom-up approach to answering the question of how a computer works. Topics include theoretical models of computation, bits, bytes and data representations, operations on data, digital logic structures, computer memory, assembly and machine code, hardware components, the stack, the operating system, compilers, and the C programming language. We examine the hardware and software components required to go from a program expressed in a high-level programming language like Python or C to the computer actually running the program.

This course assumes completion of CS21 or its equivalent.

Class information

Professor: Richard Wicentowski
Office: Science Center 251
Phone: (610) 690-5643
Office hours: Monday 9:30am - 11:30am and by appointment

Room: Science Center 256
Class Time: Tuesday/Thursday 9:55am–11:10am
Lab Time: Thursday 2:40pm–4:10pm
Text: Patt, Y. and Patel, S. Introduction to Computing Systems: From bits and gates to C and beyond (2nd edition).


1 Aug 30   Chapters 1-2
  • Representing signed integers in binary
  • Bit-wise logical operations
Sep 01  
  • Representing floating point numbers in binary
  • Hexadecmial numbers
2 Sep 06   Chapter 3
  • Logic gates built from transistors
  • Using Logisim
  • Decoders
  • Half-adders
Sep 08 Drop/Add ends (Sep 09)
  • Full adders
  • Multiplexers
  • Programmamble Logic Arrays
3 Sep 13  
  • Storage: R-S Latch, Gated D-Latch
  • Registers and Register Files
  • Circuits with state
Chapter 5
  • Instruction set architecture (ISA)
Sep 15  
4 Sep 20   Chapter 4
  • Instruction processing
Chapter 5
  • LC-3 Opcodes and addressing modes
  • Introduction to the LC-3 simulator
Sep 22  
  • Conditional Branching
  • Loops
  • I/O
5 Sep 27   Chapter 6
  • JSR(R) and RET
  • Writing functions
Sep 29   Chapter 7
  • Assembly language
  • The assembler
6 Oct 04   Chapter 8
  • I/O
  • Interrupts
Chapter 9
  • Traps
  • Call/Return
Oct 06   Chapter 10
  • The Stack

Oct 11

Fall Break

Oct 13

7 Oct 18   Chapter 10 (continued) + quick review  

Oct 20

Midterm exam

8 Oct 25   Chapters 11-13,15
  • Introduction to C
  • Debugging
Oct 27  
9 Nov 01   Chapters 14,16
  • Control Structures
  • x86 Instruction Code
  • Arrays
Nov 03 Last day to declare CR/NC or withdraw with a W (Nov 04)
10 Nov 08   Chapter 17-19
  • Pointers
  • Buffer overflows and segmentation faults
  • Recursion
Nov 10  
11 Nov 15  
  • Memory footprint of multidimensional arrays
  • File I/O
  • Command-line parameters
Nov 17  
12 Nov 22  
  • Structures
  • Processes, Threads
  • Concurrency, Deadlock

Nov 24


13 Nov 29  
  • Scheduling, Process Management
  • Sockets
Dec 01   10
14 Dec 06   Review and other things

Dec 13

Final exam 9:00 am -12:00 noon


Your overall grade in the course will be determined as follows:
25%Final exam
20%Midterm exam
5%Class Participation and Attendance

Policy on Lab Assignments

Lab assignments will typically be assigned in lab on Thursday and be due the following Wednesday evening. You are strongly encouraged to start early and ask questions early if you get stuck.

Because we will discuss the solutions to lab assignments in class, late assignments will not normally be accepted; however, special exceptions can be made if you contact me well in advance of the deadline. Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Some labs may take a considerable amount of time, so you are strongly encouraged to begin working on assignments well before the due date.

You will submit you assignments electronically using the handin33 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded.

Academic Integrity

Academic honesty is required in all work you submit to be graded. With the exception of your partner on lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Not all lab assignments will be done with a partner.

You may discuss lab specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your lab assignments in any capacity.

All code you submit must be your own with the following permissible exceptions: code distributed by me as part of the class, code found in the course text book, and code worked on with your lab partner. You should always include detailed comments that indicates which parts of the lab you received help on, and what your sources were.

Please see me if there are any questions about what is permissible.

Accomodations Statement

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services, located in Parrish 130, or e-mail lhempli1 to set up an appointment to discuss your needs and the process for requesting accommodations. Leslie Hempling is responsible for reviewing and approving disability-related accommodation requests and, as appropriate, she will issue students with documented disabilities an Accommodation Authorization Letter. Since accommodations may require early planning and are not retroactive, please contact her as soon as possible. For details about the Student Disabilities Service and the accomodations process, visit the Disability Services website.

Below are some external links which may be helpful to you.