WLU Logo CSCI 210 (W '14), Computer Organization

Winter 2014

Dr. Joshua Stough , Parmly 408

MWF 9:05-10:00AM
Office Hours: tbd
stoughj@wlu.edu, x8811 or (919) 357-0604 (txt welcm)
Parmly 405
http://www.eg.bucknell.edu/~jvs008/teaching/CS210W14/CS210W14.html

 
Course Schedule 
 

Brief Overview

In CSC 111 and CSC 112, we take a high level approach to computing in the sense that the programming is independent of the underlying hardware. Our view of the machine depends the programming language we are using. This virtual machine understands classes, objects, methods, arrays, loops, conditional statements, etc. At another level, that of the operating system, this machine understands shell commands and file systems. 
    In this course, we study the organization of computer systems at much lower levels. Along the way, we  take a careful look at how data of various kinds are represented inside the computer. We engage in a fairly detailed, bottom-up study of the major hardware components of a basic computer system. This study will begin with the transistor, and then go on to logic gates, combinational circuits, circuits for arithmetic, and a simple arithmetic logic unit for a particular machine. Then you will learn about flip-flops and memory structures, the data path and the control unit. If time permits there will be a brief look at I/O units and parallel architectures. Then we will spend several class meetings studying the instruction set and the assembly language of our machine. The reasons for this go beyond learning to program in assembly language, for surely most of your programming will not be done at this level (although there may be times when this will come in handy). By working at this level, you gain a better understanding of how a machine operates, the task of a compiler, how to use a machine more efficiently, certain operating system issues, etc. After gaining familiarity with the operations at the assembly language level, we move on to the study of programming at a sightly higher level, using the C programming language.
    Much of the work in the course will be in the form of written homework and lab assignments. The labs will involve logic circuit design and simulation, machine and assembly language programming, and programming in C.

Course Objectives

Textbook

Patt and Patel, Introduction to Computing Systems: from Bits & Gates to C & beyond (second edition, see here)
McGraw-Hill, 2004.

Attendance, Grading, Late Assignments

  1. Attendance is required.
  2. Grading breakdown: Labs, Homework, etc. 35%2 Exams 40%, Comprehensive Final 20%, Attendance and Participation 5%.
  3. There will be two individual projects and one group (of three) project.  Late submissions are not accepted.
Assistance from others, group work, etc.
Computer Science is a difficult subject to learn on your own (like many others).  Talking through problems with mentors and peers can be an exceptional learning tool.  However, this sort of collaboration can also be quite dangerous, as you may be underprepared to be tested on your own.  Thus, here are my guidelines for appropriate collaboration, in order to better help you learn. Conduct in gross violation of these guidelines will be considered a breach of trust.  In the below, an implementation refers to a detailed explanation (such as code) of the programming structures and object interactions for solving a problem.