Computer Systems Programming

Course numbers

This course is being taught under the numbers ECE 209.602 and ECE 209.604 through NCSU and as ECE 209.602 and CSCI 373.002 through UNCA.

Lectures, Problem Sessions, and People

The course instructor is Dean Brock. The course lectures will be delivered on Tuesday and Thursday from 10:50 AM to 12:05 PM in Ramsey 011. Class lectures will be videotaped and available for review on-line.

ECE 209/CSCI 373 will also have occasional and optional help session on Wednesday from 1:00 PM to 1:40 PM in the RH 223 computer lab. Often brief discussions related to the help session will also be videotaped and available on-line.

Class home page

All class handouts, including homework assignments, can be found through the following URLs:

Official course description

Computer systems programming using the C language. Translation of C into assembly language. Introduction to fundamental data structures: array, list, tree, hash table.

Possibly official student learning outcomes

By the end of this course, you will be able to:


The required textbooks for the course will be C Primer Plus (5th edition) written by Stephen Prata and published by SAMS Publishing (ISBN 0-672-32696-5) and Introduction to Computing Systems: From Bits and Gates to C (2nd edition), written by Yale N. Patt and Sanjay J. Patel and published by McGraw-Hill (ISBN 0-07-246750-9). The Prata book is available online from the NCSU library for students enrolled at NCSU. The Patt and Patel book was used in ECE 109 and CSCI 255. You should not need to purchase a copy of it.

The classic C programming book The C Programming Language (2nd edition), written by Brian Kernighan and Dennis Ritchie and published by Prentice Hall (ISBN 9780131103627), is also a recommended textbook for the course. (At UNCA, this book has been placed on reserve in Ramsey Library.)


NCSU students will also need to purchase a subscription, at a cost of $25, to CodeLab to complete the homework assignments required in this course.


In order to take this class, NCSU students must have completed ECE 109 (Introduction to Computer Systems), with a grade of C- or better. There will be very little review of ECE 109 material. In particular, you should be very comfortable with the LC-3 instruction set and LC-3 assembly language before taking this class.

UNCA students should have completed CSCI 255 and, by transitivity, CSCI 201.

Grading Policy


Grades will be based on points earned from two in-class exams, one final exam, and homework (which includes programming assignments) as given in the following table.

Two in-class exams 30%
One final exam 30%
Homework 40%


The following numerical scale will be used in assigning grades based on Score, the weighted score computed using the preceding table.

Score ≥ 97A+
Score ≥ 92 & Score < 97A
Score ≥ 90 & Score < 92A-
Score ≥ 87 & Score < 90B+
Score ≥ 82 & Score < 87B
Score ≥ 80 & Score < 82B-
Score ≥ 77 & Score < 80C+
Score ≥ 72 & Score < 77C
Score ≥ 70 & Score < 72C-
Score ≥ 66 & Score < 70D+
Score ≥ 60 & Score < 66D
Score ≥ 55 & Score < 60D-
Score < 55F

There will no rounding-up in computing the final grade. A score of 68.8 is less than 69 and results in a grade of D+.


All exams will be closed book and closed notes. Often, a reference sheet will be provided which lists detailed information, such as the LC/3 instruction set or C programming language syntax.

Attendance at all exams is mandatory. Only University-approved excuses will be accepted, provided that they are accompanied by the appropriate official documentation. Makeup exams may be given for excused absences, at the discretion of the instructor. If you miss an exam without an acceptable excuse, you will receive a zero for that exam.

Do not ask for permission to take the final exam early or late because of family travel plans. These requests will not be granted.


There will be frequent small homework assignments. Many homework assignments will consist of a few problems similar to those given in the textbook. Others will be programming assignments.

Students will be given different homework according to the department prefix of their enrollment, ECE or CSCI. The following links will provide more detail about the ECE 209 and CSCI 373 homework.

Programming assignments

There will be approximately five programming assignments during the semester. Each programming assignment must represent your own individual work. It is acceptable to talk with another student about approaches to the assignment or to discussing a particular programming problem that you are having with another student. It is not acceptable to modify someone else's program and submit it as your own or to submit a solution “found” on the Internet. If two (or more) students turn in an assignment with trivial differences, such as variable names, the students will be asked to justify the similarities of their submitted programs before the assignment will be graded.

The last programming assignment will be due during NCSU “Dead Week”, but will be assigned early enough for you to complete it before Dead Week.

All submitted programs should follow the NCSU ECE 209 Coding Style Requirements.

Email Communication

The Director of Distance Education Programs at NCSU and the Dean of Students at UNCA has told instructors that all email protected by the federal Family Educational Right to Privacy Act (FERPA) must be sent to your official university email address. FERPA protected information includes not only recorded grades, but any information that would reveal that you are a student in this class.

For more information

The best way to get in touch with me is to send email to Please include the course number in the subject line. If you need to see me, send me email to arrange an appointment.