Syllabus for CSC217
Assembler Programming and Machine Organization
4 Credit Hours (3/2 lecture/lab)
Open Entry (Self-Paced)
Spring 2024
Harper College


Class will meet:

Section Time Days Room
It's online, silly. Just email me and I'll respond during my office hours! in WebEx

from Aug 21st to Dec 15th.


Each student will take their exam at a time appropriate for them and myself.

We can discuss later in the semester what slot is best for each student.


CSC216 (data structures and algorithm analysis) with a grade of C or better
[realistically I expect that you had a B or better in at least two prior programming courses and knowledge of stacks is extremely helpful]


Assembly Language for Intel-based Computers, Kip R. Irvine, Prentice Hall, 7th Edition

Be sure to check out the author's web site for more tools and tips!

(you might find useful)

IBM PC Assembly Language and Programming, Abel, Prentice Hall
The Peter Norton PC Programmer's Bible, Norton, Microsoft Press
Advanced Assembly Language, Holzner, Brady
MS-DOS Functions, Duncan, Microsoft Press
IBM ROM BIOS, Duncan, Microsoft Press
MS-DOS Extensions, Duncan, Microsoft Press
Turbo Assembler Quick Reference Guide, Borland International, Inc.


Emphasizes machine-level programming, instruction sets, data representation, subroutines, I/O hardware and software, linking, and loading related to higher level languages.

Designed as the fourth in a sequence of courses (CSC 121, CSC 122, CSC 216, and CSC 217) for students majoring in Computer Science.

STUDENT OUTCOMES (The student should...)
  1. understand basic computer organization and architecture of binary digital computers.
  2. understand number representations and arithmetic of binary, octal, and hexadecimal number bases.
  3. know and use the instruction set and constructs of an assembler language to write assembler programs.
  4. use basic debugging commands to find errors in programs.

To foster the student's understanding of the assembler level programming process as well as certain hardware issues. We will emphasize interrupt driven programming in an Intel x86 environment. You should finally appreciate it when teachers say that documentation is TERRIBLY important. You should come to understand the basics of a PC architecture as it relates to solving programming problems.

EVALUATION [Open For Reasonable Debate]
Activity Percent
Tests36 %
Semester Project21 %
Labs21 %
Question Sets12 %
Discussion 10 %
Total100 %
Grade Percentage
A 90-
B 80- 90
C 70- 80
D 60- 70
F 0- 60

Discussion will consist of regularly checking in with me and discussing topics you are studying and/or having trouble with. These discussions can be held in office hours, other courses' lab times, or even in email.

The question sets and labs portions of your grade will come from the three portfolios you will be handing in (see below).

The semester project is sub-split into two equal portions: programs to demonstrate the topic you've chosen (10.5%) and a paper discussing your topic (10.5%).

Tests will be done in lecture time — not take-home.


Lecture tests consist (most often) of true/false, fill in the blank (no word list), short answer, and hand-execution of code. Lecture tests may also include hand-coding of small (5-15 line) segments of code. Multiple choice can also occur, but all correct answers must be chosen (i.e. it isn't multiple guess). Finally, matching is a rare occurance. (The online question sets make a pretty good sample of questions and style.)

Make-up exams (with reasonable excuse), will be ALL essay and/or hand-coding/execution.

Also there will be three tests and a cumulative final during the semester. This means that each test will be worth 9% of your overall grade. (Yes, the final, although cumulative, is equal in weight to a regular test.)


When an assignment is given (i.e. placed on the web page), you can hand it in as soon as you are done for a review of its content. ('done' here means that you've made a reasonable attempt to start the program or answer the questions. You don't have to have it perfect before you hand it in. You can even hand in something you've merely outlined/flowcharted, if it is a complete enough outline.)

I will give the checked paper back to you ASAP so that you can make any needed corrections to it before using it in a portfolio (if you so choose). You can also hand papers in as many times as you like before the portfolio is due. (Remember that this corrections policy is good for ANY of the online assignments: project programs, labs, and even question sets.)

Finally, every assignment will also be rated (typically between 1 and 7) as to its difficulty (1 is quite easy, 7 is fairly challenging). These ratings will help you determine what (corrected) assignments you'd like to hand in for your portfolios. Also, labs and projects often have options which can be done that will increase the level rating of the assignment.


Three times during the semester, you will turn in what you consider to be your best work up to that point (since the last portfolio). Collect together your best (corrected) assignments and hand them in as a portfolio. (This doesn't have to be a fancy bound work, just make sure your papers aren't going to go flying around. It is a good idea to have your name on each item as well.) The portfolio must contain a certain total ratings value each of question sets and labs and consist of only a certain total number of items (in each category). These totals will be mentioned in the portfolio announcement on the web page and/or during class. The announcement is purposely delayed until at least a week before the due date so that you will concentrate on doing and understanding and not meeting minimum requirements.

Any assignments you turn in that exceed the total ratings value for their category will be added to an extra credit pile for review at the end of the semester. This extra credit work will be added to some part of your grade where it will do the most good (typically projects or tests).

Example: If the labs section of a portfolio said the minimum ratings value was 16 and the maximum number of projects were 4, you could choose several different combinations of lab ratings to satisfy these requirements. You might choose to hand in 3 labs which were rated 6. You might choose to hand in 4 labs rated 4. You might choose to hand labs in rated at 4, 6, and 7.

You might choose to hand in a 4, a 6, and 2 7's. If you did this, I might place either the 4, the 6, or either of the 7's on the extra credit pile (the remaining items already add up to more than 16). To avoid me picking, you can mark those items you wish to be extra credit with XC or EC or XCred or Extra Credit marked in plain large type/writing at the top.

See also the portfolio page for more information.


Due dates (on portfolios) are present for a reason. If you do not turn in your papers by the due dates given, credit may be denied. (Reasonable excuses may be accepted.)

For further information, please see the portfolio page.

Week(s) Location Topic(s)
Chapter 1 Basic Concepts (Background, Number Bases, Logic)
Chapter 2 IA-32 Processor Architecture
Chapter 3 Assembly Language Fundamentals
Chapter 4 Data Transfers, Addressing, and Arithmetic (includes Looping)
Chapter 5 Procedures
Chapter 6 Conditional Processing
Chapter 7 Integer Arithmetic
Chapter 8 Advanced Procedures
Chapter 9 Strings and Arrays
Chapter 10 Structures and Macros

I reserve the right to change this syllabus with sufficient warning to you.