Course Syllabus p.1

CPSC 3121: Assembly Language Programming

Course Description

CPSC 3121. Assembly Language Programming 1 (3-0-3) Prerequisite: CPSC 2105 with a grade of "C" or better. An introduction to assembly language for mainframes or PC's. Topics include machine architecture (registers, memory, instruction formats), character data processing, decimal arithmetic, binary arithmetic, subroutine and program linkage.

Course Objectives

By the end of this course,

  1. You will master a basic working subset of IBM High-level Assembly Language (HLASM) instructions. Mastery is indicated in three ways:

a) You can to explain the semantics of each of the instructions in the working subset in clear English sentences

b) You can “describe” the semantics of each of the instructions in the working subset by writing the equivalent code in Java.

c) You will write working programs in HLASM that satisfy the requirements of a series of assignments

  1. You will be able to identify each of the major components of the IBM architecture and describe their operations in English and by writing Java code.
  2. You will acquire some basic mainframe skills in ISPF and in JCL. These skills are indicated by your ability to use the operating system to design and execute programs in HLASM.

Grading

Program / 1 / 2 / 3 / 4 / 5 / Totals
6
pts / 6pts / 6 pts / 6 pts / 6 pts / 30
pts
GroupProgram / 1 / 2 / 3 / 4 / 5
4
pts / 4 pts / 4 pts / 4 pts / 4 pts / 20
pts
Midterm
Exam / 25
pts / 25
pts
Final
Exam / 25
pts / 25
pts
Totals / 100 pts

Textbook and Reading Materi

No textbook is required for this course. Instead, I will use my own notes and a collection of online lectures that are listed on the website: . Additionally, there are two IBM manuals you will need to use:

1) Language Reference:

2) Programmer’s Guide:

If you would like a textbook, I can recommend Programming Assembly Language, IBM 370 Series Architecture and Assembly Language by Peter Abel. The book is no longer in print, but still remains an excellent text for beginning assembly programming, and can sometimes be found for a few dollars in used bookstores online. If you decide to buy one, be aware that the same author has textbooks by a similar name that cover PC Assembly languge – those texts would not help you directly in this class.

Attendance Policy

You are expected to attend class regularly and to participate. I will have something to present in every class that you need to hear. Any student who misses 4 or more classesmayl be dropped from the class for excessive absences.

Making up Tests

Everyone is expected to take the midterm and final exams at their scheduled times. Make-ups will be given only for legitimate, documented absences for whichthe instructor has been notified ahead of time.

Submitting Programs

Each student will be assigned a PDS (mainframe library) where you will build the assembler programs I assign. Each PDS will be named CSUxxxx.SOURCE.ASM where xxxx is a four-digit number that I assign you. Each program you create should be named PROGRAM1, PROGRAM2, …

Individually written programs will be automatically graded. Periodically, I will submit a grading program that retrieves your work from your PDS and grades it. The grading software will also notify you of the current grade by posting a member in your PDS. You can change your program up to the due date. The grade you receive once the due date has passed is final.

Group projects will consist of building a sequence of assembler instructions by writing Java code that mimics execution of each instruction on a virtual System/z machine that I have written in Java. Group projects will be graded by hand and everyone in the group will receive a grade based on their individual work with the group. Each group will submit one copy of the code and a description of the instructions that each person in the group was assigned.

The Java code for the virtual System/z is available for download on the website. You can also find instructions for using the virtual System/z.

Grading Rubric For Programs

I have a simple rubric for grading programs:

Program executes properly
Program is well-commented
Program is well-written / 6 pts
Program executes properly
Program is well-written
Program is poorly commented / 5 pts
Program has minor execution errors / 4 pts
Program does not execute correctly
Program assembles properly
Program could execute properly with a few minor changes / 3 pts
Program does not assemble / 0 pts

E-Mailing Me

You can e-mail me here: . Caution: My son is a student at CSU and has an e-mail address that is similar to mine. Be sure to choose my address when writing me.

Why This Course Is Important

Every programmer worth their salt thoroughly understands the instruction set architecture of the machine on which they operate. The IBM System/z family is a great machine with an architecture that has proven its durability over 50 years of existence. No other architecture comes close to this record. The System/z has the advantage of being a simple but flexible architecture that is easier to learn than the x86 family. Once you learn the System/z architecture, you will be able to make reasonable comparisons and judgments about other architectures like the x86.

Writing in assembler will give you an appreciation for the work that a compiler or interpreter does.

Mainframe skills are on the upsurge. The job market needs and will reward programmers and managers who take time to pick up some mainframe skills.

Gaining mainframe experience is increasingly difficult to come by. We are one of a handful of universities in the US that can give you this experience. Buying this experience in the marketplace would cost thousands.

Course Outcomes and Assessment Methods

Course Outcomes / Assessment Method
You will be able to write assembly language programs of moderate difficulty using IBM’s HLASM / Five programming assignments covering basic assembly language concepts will be given and graded
You will be able to describe in English, the semantics of a working subset of assembler instructions. / You will have to demonstrate this skill on the midterm and final examinations
You will be able to describe the architecture of an IBM System/z machine. / You will have to demonstrate this skill on the midterm and final examinations
You will demonstrate knowledge of the semantics of a working subset of assembler instructions by writing equivalent code in Java / You will be asked to write the code that simulates execution of each instruction on a virtual System/z machine that is written in Java. There will be a series of five group assignments that assess this skill.