CSC-2410 Computer Systems
Spring 2020

Instructor:

Roger Shore

Class Schedule:

Office Location:

Couch Hall 150

MWF 7:50-9:00AM CSC-1720

Telephone:

841-9031

MW 12:05-1:45PM CSC-2410

Office Hours:

MTWF 10:00-11:00AM

TTH 1:35-3:15PM CSC-4210


T 7:50-9:30AM CSC-1720 Lab


TH 3:30-5:10AM CSC-2410 Lab

E-Mail: rshore@highpoint.edu

Web site: linus.highpoint.edu/~rshore

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 Materials:

  1. Required: An on-line resource Dive into Systems , Suzanne J. Matthews, Tia Newhall, Kevin C. Webb

  2. Required: CanaKit Raspberry Pi 4 starter kit with 4GB RAM, 32GB Micro SD, HDMI to mini-HDMI, heat sinks and fan.

  3. Required: Logisim A graphical tool for designing and simulating logic circuits. Also available in the computer lab.

  4. Optional: Plantz, Robert G., Introduction to Computer Organization: ARM Assembly Language Using the Raspberry Pi 2017. Web version found here at author's web site. For a small charge an ebook/pdf and paperback versions are available at lulu.com

  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 useful.

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 and Lab Preparation: It is assumed that you will read the assigned material. The lectures will be used mainly to further demonstrate the core ideas and to answer specific questions. The instructor will give an unannounced quiz if he feels the class, as a whole, has not read the assigned textbook material or keeping up with the material presented during class time.

Labs and Programming Assignments: In addition to the major tests and exam, students will participate in a series of labs and programming assignments to further develop their logic problem solving skills. Assuming the students is prepared, the approximately 2 hour weekly lab will focus on a few concepts from lectures and is designed to be completed with the allotted time. Programming assignments are more challenging and require more time outside of class. Each lab and programming assignment requires the student to analyze a problem and decompose it into simpler tasks. At that point, the student will implement, test, and debug a program that solves the problem. Each lab/program will have a value of 20 pts divided between three parts based on the following criteria.

  1. STYLE 30%

    1. Indenting and layout. Is the program readable? Does indenting help debugging and reading? Are parts of the program clearly labeled?

    2. Identifiers. Are the identifiers meaningful and mnemonic? Do they describe their purpose?

    3. Documentation/Comments. Is the program reasonably commented? Does the commenting help both the programmer and the grader? Could another student in the class figure the program out? Are there any extraneous comments that may include debugging code that should have been removed?

    4. Attractive output?

  2. PROGRAM 70%

    1. Algorithm. Is the program sensible? Does it solve the problem in a reasonable manner?

    2. Modularity. Does the program take advantage of subroutines and functions/methods? Are its separate parts easy to isolate for testing and debugging?

    3. Working. Does the program work? Does it fulfill the problem description, or does it solve some other problem? Is it written in a way that it lets shortcomings be recognized and fixed?

    4. Use of required commands?

  3. Late Penalty:

    1. Lab reports should be submitted at the end of the lab. If not, the latest it may be submitted is during class on Thursday following the lab and may be assessed a late penalty.

    2. Programming/project assignments will have due dates. You will automatically get an extension of 7 days if you miss the due date. The penalty will be 1 point per day late. No program will be accepted after 7 days of the assigned due date. Please note, a correct program is only worth 13 pts if submitted 7 days late.

    3. Any two labs (or programs) submitted by different persons but obviously written by the same individual will both receive zeros unless the lab/assignment allows for collaboration.

Lab/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. Installing an OS on a raspberry Pi

  2. Low level C code/Assembly Language Programming.

  3. Transistors, basic gate logic and Karnaugh Maps.

  4. Sequential and Combinational circuit design.

  5. Implement the Fetch-Decode-Execute cycle in gate logic.

  6. Assembly programming – ARM processor

  7. Discover security issues within programs written in C.

  8. Exploiting architecture to improve program performance.

  9. Establishing a cluster of raspberry Pis that will be used in distributive computing.

  10. 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: High Point University recognizes and honors the value of the face-to-face classroom experience for enhancing student engagement and academic outcomes. Attendance will be taken daily at the beginning of class. As such, you are expected to be present in every class meeting with the exception of an illness that requires quarantine or other reasons pre-approved by the instructor. In those cases online accommodations will be provided. 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. Before a student is dropped for non-attendance, I will give a notification as a warning to a student that he/she is in danger of violating the attendance requirements.

  2. Grades: Your final grade will be determined as follows:

Component

Quizzes Worksheets

Labs Projects

3 Major Tests

Cumulative Final Exam

Total

Weight

10%

30%

45%

15%

100%

Range

93-100

90-93

87-90

83-87

80-83

77-80

73-77

70-73

67-70

63-67

60-63

0-60

Grade

A

A-

b+

b

b-

C+

C

C-

D+

D

D-

F

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+.

  1. Major tests and Final Exam: All tests and final exam will be a blend of short answer, multiple choice/True-False, and problem solving type questions. No make up test will be given unless prior arrangements have been made with excusable reasons. If you miss a test your final grade will be used in place of the missed grade. Similarly, if all tests are taken during the semester, the lowest test score will be replaced with the exam score. In both cases, this means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.

  2. Quizzes/worksheets and assignments: Assignments, quizzes, and class worksheets will assist you in the understanding of the material presented during class. These will appear in almost every class meeting during the semester. Quizzes and worksheets completed during class cannot be made up therefore the lowest two grades will be dropped to allow for an occasional absence.

  3. Programming/Project assignments: Each programming/project assignment will have a due date. With that in mind, please remember that a working program takes time to develop so you must start on each assignment immediately. Any assignment not received by the due date will be charged a late penalty as noted above.

  4. Honor Code: All students are expected to follow the University Honor Code, Full details of the High Point University Honor Code are found here: http://www.highpoint.edu/studentconduct/university-honor-code All academic work should be completed with the highest level of honesty and integrity.

  5. Classroom etiquette:

  6. Lab etiquette:

  7. Face covering: Wearing a face mask reduces the risk of COVID-19 transmission and is a step we can all take to care for the members of our HPU family. Therefore, in compliance with applicable federal, state or local orders, at HPU, students are required to wear face masks when indoors in all classrooms, labs, studios, and other public spaces (such as hallways, building entrances, public restrooms, in HPU transportation such as shuttles, and other common spaces). There is not enough evidence to support the effectiveness of masks with one-way valves or vents, gators, or face shields for controlling transmission of the virus, and thus these face coverings are not an acceptable substitute for cloth face masks. Exceptions may be made for the use of face shields with an approved medical excuse or when giving a public presentation in front of a group, as long as there is greater than six feet of distance between speaker and audience.

  8. Students with Disabilities: High Point University is committed to ensuring all students have equal access to all services and benefits at High Point University. If you are a student with a disability and require academic accommodations due to a diagnosed disability, you must register with the Office of Accessibility Resources and Services (OARS) and submit the appropriate documentation. Requests for accommodations should be made at the beginning of a course. Accommodations are not retroactive. Contact us at oars@highpoint.edu or by telephone at 336-841-9026, for additional information. The Office of Accessibility Resource and Services is located on the 4th Floor of Smith. Library.

  9. Professionalism: The Mission Statement of the Webb School of Engineering is:

To provide an extraordinary engineering education through the delivery of a hands-on, practical education that prepares graduates for a rewarding career or admission into graduate school. The School of Engineering is committed to:

Please treat this class as if it were a company or organization for which you are working. You can exhibit professionalism by attending consistently, arriving on time, communicating your full or partial absence in a timely fashion, completing assignments on time, maintaining engagement, and respecting your peers and the professor.



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. – Chapter 1-3

  1. Conventional machine level and assembly language level - Chapters 4, 6, and some of 3.

  2. Digital Logic level - Chapter 5

  3. Microprogramming level - Chapter 5

  4. Performance Chapter 7 and 8.

  5. Operating System - Chapter 9-10

  6. Multiprocessing - Chapter 11