CSC-2410 Computer Systems
||Couch Hall 153
||MWF 3:25-4:25PM CSC-1710
||Th 1:30-3:20PM CSC-1710 Lab
||TTh 9:45-11:25AM CSC-2410
||MW 12:05-1:45PM CSC-4210
||Web site: linus.highpoint.edu/~rshore
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.
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 Objectives: After successfully completing this course, the you will have
- Required: An on-line resource Dive into Systems , Suzanne J. Matthews, Tia Newhall, Kevin C. Webb
- Required: Logisim A graphical tool for designing and simulating logic circuits. Also available in the computer lab.
- 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 lulu.com
- 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 lulu.com
- 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.
- 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.
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:
- Understand how characters, integers, real numbers, text, images, and sound are stored and processed digitally.
- Develop an understanding of the relationship between code written in C or assembler then translated into conventional machine language.
- To understand and analyze the costs associated with application performance.
- To become more proficient in the use of debugging tools such as gdb and lldb.
- Develop an understanding of how assembly programs implement the run-time stack in a high level language such as C/C++.
- Developed an understanding of the digital logic level of a computer system.
- Design, simplify, test, and build sequential and combinational circuits to solve a variety of problems.
- Develop an understanding of the network stack to the extent of implementing a socket program.
- Describe how the CPU control unit interprets a machine-level instruction either directly or as a microprogram.
- Demonstrate an understanding of how performance can be increased by utilizing multiple processors, multiple cores, threading, or with multiple GPUs.
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.
- Low level C code/Assembly Language Programming.
- Transistors, basic gate logic and Karnaugh Maps.
- Sequential and Combinational circuit design.
- Socket programming.
- Parallel distributive computing utilizing openMP, openMPI, pthreads, and CUDA.
- 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.
- Grades: Your final grade will be determined as follows:
|| 2 Major Tests
|| Cumulative Final Exam
|| Total |
|| 100% |
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+.
|| 0-60 |
|| F |
- 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.
- 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.
- 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.
- 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.
- 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."
- Classroom etiquette:
- Cell phone usage during class is prohibited. Turn off cell phones (or place on vibrate). Please do not interrupt any aspect of the class due to your cell phone. This includes text messaging, picture messaging, etc.
- Recording devices may only be used if explicitly authorized by the instructor.
- Laptops and tablets and other devices are permitted only for note taking class related activities. Since I cannot see you screen, you will be called out if I suspect otherwise.
- All electronic devices must be surrendered if you leave the room during any type of examination.
- Do not listen to your ipod, cd player, etc. during class (even if we are in the computer lab).
- Profanity will not be tolerated. This includes lewd remarks printed on your clothing.
- Hats are not to be worn during class.
- Lab/Classroom Lab etiquette:
- The lab was created with student input. Please help respect and maintain the lab.
- Do not eat while sitting at a workstation. If you must eat while in the lab, sit a the larger table where no equipment may be damaged except your own. Clean up the area after you finish eating.
- Clean up your area before you leave the lab. Unless you are planning to return in a few minutes, please take all books, paper, etc with you.
- DO NOT lock your workstation when you leave!
- 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.
- Computer Systems Organization - Chapter 0 Introduction
- Relevant Historical Computer Architecture/Organization.
- A deeper dive into C - things you may have overlooked or ignored in previous classes.
- Parts of a program, memory map and scope.
- Pointers review - pointer variables, arrays, functions, and parameter passing.
- Dynamic memory allocation.
- The compile process.
- C to assembler.
- Conventional machine level and assembly language level - Chapters 4 and 6.
- Data types - representation of numeric data.
- Processor architecture - instruction types, register sets, addressing modes.
- Instruction type, sequencing, flow-of-control, subroutine call and return mechanism.
- I/O fundamentals.
- Interrupt mechanisms - vectored and prioritized.
- Assembly to machine code translation.
- Low-level architecture support for high-level languages.
- Using debuging tools - gdb, lldb, ddd.
- Digital Logic level - Chapter 5
- Gates, Circuits, Sequential and Combinational Logic.
- boolean algebra, De Morgan's theorem, and Karnaugh maps.
- Multiplexer, Demultiplexer, and the program logic array.
- Flip-flops and memory.
- Simple CPU with buses, registers, and memory.
- Microprogramming level - Chapter 5
- The control unit - hardwired or microprogrammed.
- CPU simulation.
- RISC vs CISC.
- Instruction pipelining and instruction-level parallelism.
- Processor and system performance.
- Performance Chapter 7 and 8.
- Caching and Memory Hierarchy
- Code Optimization
- Operating System - Chapter 9-10
- Booting the OS kernel
- Process and process states
- Vitrual Memory
- Interprocess Communication - signal processing
- Kernel modules
- Multiprocessing - Chapter 11
- Multicore and multithreaded processors.
- Multiprocessor structures and architectures.
- GPU and sepcial purpose graphics processors.
- Programming multiprocessor systems.