Computer Systems Programming

Course numbers

This course is being taught under the number ECE 209.602 at NCSU and UNCA. Additionally, there are a couple of students taking the course as CSCI 373.003, but this will be the last mention of that.

Lectures, Problem Sessions, and People

The course instructor is Dean Brock. The course lectures will be delivered on Monday and Wednesday from 10:00 AM to 11:15 AM in Ramsey 011. Class lectures should be videotaped and available for review on-line.

ECE 209 will also have near-weekly and optional problem sessions on Friday from 10:00 AM to 11:15 AM in the Karpen 037 computer lab.

Nick Matney will be a teaching assistant for the course.

Class home page

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

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


In order to take this class, 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.

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. A reference sheet will be provided which lists detailed information, such as C programming language syntax or the LC/3 instruction set.

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 due to family travel plans. These requests will not be granted.


There are three types of homework. One type is small programming exercises. At the beginning of the term, these will be assigned weekly and will correspond to the sujet de la semaine.

The second type will be written assignments. Most of these will cover some aspect of translating C to an LC/3-like assembly langauge. There will be two or three of these.

The third type will be programming projects. These are significant programs that will assigned every three to four weeks. The final programming project will be due during NCSU “Dead Week”, but will be assigned early enough for you to complete it before Dead Week.

In the computation of the overall homework grades, programming exercies and written assignments will generally have the same weight, but the weight of a programming project will be three to four times the weight of a programming exercise.

All homework will have a strict due date and time-of-day and must be submitted through the course Moodle page.

Academic Integrity

The UNCA section of ECE 209 will follow the same rules regarding academic integrity as specified on the syllabus of the NCSU section of ECE 209. These are quoted below.

High-level discussions with other students on homework and programming assignments is allowed, but copying of solutions or source code is not. Students may discuss high-level concepts and strategies only, not specific solutions or code. You must be very careful to avoid sharing code and/or solutions with other students. (One strategy: Work through the solution in a study group, and then throw away your notes. Then go work the problem yourself, independently.) Only the TA or the instructor may look at your code. There are no exceptions to this policy; do not show your code to your friends, parents, mentors, therapist, etc.

Example of high-level discussion (allowed): “First find the maximum value in the array. Then look at each value in the array, and increment a counter if the max is a multiple of that value.”

Example of code-level discussion (not allowed): “Write a for-loop that makes i go from 1 to n-1. Create a variable named max and initialize it to x[0]. Inside the loop, compare x[i] to max to see if it’s greater.”

If in doubt, stop talking!!! If your classmate keeps asking detailed questions or wants to see your code, tell him or her to talk with the instructor or TA. You may want to help, but you are expected to comply with the NCSU Code of Student Conduct, and with the academic integrity policies of this class. Do not, under any circumstances, look at anyone else’s code, let someone look at your code, or give your code to anyone else.

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. If a student turns in an assignment with obfuscated variable names or if a student turns in a program in an unusual character encoding, such as UTF-16, that will not be processed by the C compiler; the student will be asked to explain their program before the assignment will be graded.

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

Accommodations for Students with Disabilities

Students with disabilities requiring reasonable accommodations must register with the Disability Services Office by providing current diagnostic documentation. All information provided will remain confidential. For more information please contact the Disabilities Coordinator in the OneStop Student Services center or view the UNC Asheville Disability Services webpage.

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.