Statement of Course Outcomes


Course Number: CS 550


Course Name: Computer Organization and Programming


Course Coordinator: Steven Gabarro


Graduate or Undergraduate Equivalent: CS 383

 

Catalog Description: This course provides an intensive introduction to material on computer organization and assembly language programming required for entrance into the graduate program in Computer Science or Computer Engineering. The topics covered are: structure of stored program computers; linking and loading; assembly language programming, with an emphasis on translation of high-level language constructs; data representation and arithmetic algorithms; basics of logic design; and processor design: data path, hardwired control, and microprogrammed control. Students will be given assembly language programming assignments on a regular basis. No graduate credit for students in Computer Science or Computer Engineering.

 

Course Outcomes


Each course outcome is followed in parentheses by the Program Outcome to which it relates.



1. [von-neumann] Know a bit of the history of computers and understand why the Von Neumann model is essential in understanding computers. (sys:hardware-interface)

2. [numbers] Represent numerical data in any possible base, including binary, hexadecimal and octal, as well as floating point number notations. (sys:hardware-interface)
3. [data] Understand different formats of data used for still images (bitmap versus object images), video, audio and alphanumerical data. (sys:hardware-interface)
4. [lmc] Know the inner workings of the Little Man Computer and its relation with real life computers, including the basics of assembly instructions. (sys:hardware-interface)
5. [cpu-mem] See how the CPU and memory communicate. Concept of a register (including MAR/MDR)  (sys:hardware-interface)
6. [fetch-execution] Understand the fetch-execution cycle and difference between instructions (sys:hardware-interface)
7. [stack] Realize how the stack is permanently used through any subroutine call to better write code (sys:hardware-interface)
8. [IO] Understand different types of Input/Output: Programmed I/O vs Interrupts and how they each work, as well as their advantages and disadvantages. (sys:hardware-interface)
9. [DMA] Know how Direct Memory Access works and realize when it is useful to use it (sys:hardware-interface)
10. [buses] Understand the advantages and limitations of different types of buses (serial vs parallel with many examples)  (sys:hardware-interface)
11. [peripherals] Understand how computer peripherals work, including magnetic disk drives (floppy disks, hard drives), optical disk drives (CD-R, CD-RW, DVDROM, DVD+R, DVD-R, DVD+RW, DVD-RW), displays (CRT and LCD monitors) and laser printers and realize why it is important to limit the number of disk-read phases when writing programs. ((sys:hardware-interface)
12. [addressing] Maximize the use of all possible addressing modes (direct, indirect, immediate, absolute, base register, relative, …)  to have more efficient programs. (sys:hardware-interface)
13. [pipelines] Understand the principles of Pipelines and Super-scalar processing, as well as its dangers.  (sys:hardware-interface)
14. [technology] Understand technological and architectural enhancements used in the history of computers and how they work (multiprocessing, virtual storage, cache memory) as well as why they benefit software writing.  (sys:hardware-interface)
15. [communication] Realize the necessity of communication and its requirements (protocols, OSI model) and be able to compare all different network topologies. (sys:hardware-interface)
16. [os] Become familiar with all the basics of Operating Systems, including categories of OS, main operations, functionalities and types of interfaces. (sys:hardware-interface)
17. [process] Understand the differences between programs, processes and threads and how to take advantage of them when writing software. (sys:hardware-interface)
18. [dispatching] Understand several techniques for scheduling and dispatching processes and threads.  (sys:hardware-interface)
19. [assembly] Become proficient with the basic assembly language for the Motorola 68000 family of processors and write many programs using branching, the stack, and subroutines while making an effort to have the most efficient functionality in the least amount of steps.  (sys:hardware-interface)(core:software)
20.[compilation] Become capable of running through the inner steps to transform an assembly language program into a binary executable file using basic reference tables and learn how it relates with higher level languages. (sys:hardware-interface)