CSC-2410 Computer Systems

Spring 2020
Instructor: Roger Shore Class Schedule:
Office Location: Couch Hall 153 MWF 3:25-4:25PM CSC-1710
Telephone: 841-9031 Th 1:30-3:20PM CSC-1710 Lab
Office Hours: T 1:30-3:30PM TTh 9:45-11:25AM CSC-2410
MWF 8-9:30AM MW 12:05-1:45PM CSC-4210
E-Mail: Web site:

Course Description: An introduction to instruction set architecture, microarchitecture, and system architecture. Topics include basic computer organization, central processor and memory, addressing techniques, data representation, fundamental programming techniques in assembly and machine language as it relates to operating systems and high level languages. The course also includes exposure to networking and communication as well as parallel and distributed computing.

Prerequisites: CSC-1720

Course time expectation/week: This is a 4 four hour course. According to SACs, our accrediting body, we are required to meet 200 minutes per week for 15 weeks. In addition, you are expected to work on projects and assignments for at least 8 hours (480 minutes) outside of class per week. A portion of the 8 hours should be spent in the computer lab each week in relation to this course.

Course Materials:

  1. Required: An on-line resource Dive into Systems , Suzanne J. Matthews, Tia Newhall, Kevin C. Webb
  2. Required: Logisim A graphical tool for designing and simulating logic circuits. Also available in the computer lab.
  3. Recommended: Plantz, Robert G., Introduction to Computer Organization with x86-64 Assembly Language & GNU/Linux 2015. Web version found here at author's web site. For a small charge an ebook/pdf and paperback versions are available at
  4. Optional: get the ebook, it's free. Tarnoff, David, Computer Organization and Design Fundamentals, 2007. Free ebook/pdf and for a small charge a paperback are available at
  5. Optional: Aho, Alfred and Ullman, Jeffrey, Foundations of Computer Science - C edition, Computer Science Press. Resource found at here at author's web site. Chapters 12 and 13 will be usefull.
  6. The department will provide all software necessary to complete the course. This will require the student to have an account on the departmental server. This account will give them access to the software and space to store solutions to assignments. Access to the server will be provided through a workstation in the departmental lab as well as from any remote location on and off campus.
Course Objectives: After successfully completing this course, the you will have
  1. Understand how characters, integers, real numbers, text, images, and sound are stored and processed digitally.
  2. Develop an understanding of the relationship between code written in C or assembler then translated into conventional machine language.
  3. To understand and analyze the costs associated with application performance.
  4. To become more proficient in the use of debugging tools such as gdb and lldb.
  5. Develop an understanding of how assembly programs implement the run-time stack in a high level language such as C/C++.
  6. Developed an understanding of the digital logic level of a computer system.
  7. Design, simplify, test, and build sequential and combinational circuits to solve a variety of problems.
  8. Develop an understanding of the network stack to the extent of implementing a socket program.
  9. Describe how the CPU control unit interprets a machine-level instruction either directly or as a microprogram.
  10. Demonstrate an understanding of how performance can be increased by utilizing multiple processors, multiple cores, threading, or with multiple GPUs.
Class Preparation: It is assumed that you will read the assigned chapters. Although the material may be summarized, lectures will be used mainly to further demonstrate other approaches to problem solving and to answer specific questions.

Project Topics: There will be a variety of projects during the semester. Each project will involve some aspect of computer organization. Project topics are:
  1. Low level C code/Assembly Language Programming.
  2. Transistors, basic gate logic and Karnaugh Maps.
  3. Sequential and Combinational circuit design.
  4. Socket programming.
  5. Parallel distributive computing utilizing openMP, openMPI, pthreads, and CUDA.
NOTE: Part of your grade on all projects will be documentation. If you submit a solution and the solution is lacking clear and concise documentation, your grade on the project will suffer. This includes excessive documentation.

Course Policy:

  1. Attendance: Attendance will be taken daily at the beginning of class. You are expected to be present in every class meeting. If absent from class, you are responsible for all lectures, in-class exercises, assignments, and handouts. Caution: being absent from class does not change the due date of assignments.
  2. Grades: Your final grade will be determined as follows:
    Component Quizzes Worksheets Projects 2 Major Tests Cumulative Final Exam Total
    You must score at least the minimum of a category to be given the associated grade, i.e. an average of 80 is a b- not a C+.
  3. Make-Up test will not be given. No make-up test will be given unless arrangements have been made prior to the day of the test. If you miss a test your final grade will be used in place of the missed grade. This means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.
  4. In-class worksheets, quizzes, and non-programming assignments must be completed on the assigned date and cannot be made-up. If there are more than 10 of these, the lowest two will be dropped. If there are more than 16 of these, the lowest three will be dropped.
  5. Homework: This will be assigned frequently. Some assignments will take minutes to complete others will take days. Opportunity for homework questions is given at the beginning of each class. Homework may be collected and graded occasionally.
  6. Do not get behind on your assignment/projects! You must attempt all assignments. Any assignment not received by the due date will be charged a late penalty. The penalty will vary depending on the assignment and will be stated in each assignment. All assignments will have an absolute deadline in which the assignment will no longer be accepted.
  7. Academic integrity:Unless otherwise instructed, you are expected to work independently on projects and tests. You are responsible for protecting your files and work from access by others. Instances of copying or sharing, or cheating in any way will result in an academic dishonesty charge, which can lead to an F for the assignment and maybe the course. The University Honor Code states: "Every student is honor-bound to refrain from cheating, collusion, plagiarism, . . .to confront a violation, . . . to report a violation of the University Honor Code."
  8. Classroom etiquette:
  9. Lab/Classroom Lab etiquette:
  10. Students with Disabilities: Students who require classroom accommodations due to a diagnosed disability must submit the appropriate documentation to Disability Support in the Office of Academic Development, 4th Floor Smith Library. Student’s need for accommodations must be made at the beginning of a course. Accommodations are not retroactive.
Course Topics:
  1. Introduction
  2. Computer Systems Organization - Chapter 0 Introduction
  3. Relevant Historical Computer Architecture/Organization.
  4. A deeper dive into C - things you may have overlooked or ignored in previous classes.
  5. Conventional machine level and assembly language level - Chapters 4 and 6.
  6. Digital Logic level - Chapter 5
  7. Microprogramming level - Chapter 5
  8. Performance Chapter 7 and 8.
  9. Operating System - Chapter 9-10
  10. Multiprocessing - Chapter 11