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 2. 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. 3. 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 Group Program 1 2 3 4 5 Totals 6 pts 6 pts 6 pts 6 pts 6 pts 30 pts 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 Course Syllabus p. 2 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: http://csc.columbusstate.edu/woolbright/WOOLBRIG.htm . Additionally, there are two IBM manuals you will need to use: 1) Language Reference: http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/asmr1020.pdf 2) Programmer’s Guide: http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/asmp1020.pdf 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 classes mayl 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 which the 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 Course Syllabus p. 3 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 Program executes properly Program is well-written Program is poorly commented Program has minor execution errors Program does not execute correctly Program assembles properly Program could execute properly with a few minor changes Program does not assemble 6 pts 5 pts 4 pts 3 pts 0 pts E-Mailing Me You can e-mail me here: woolbright_david@columbusstate.edu . 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. Course Syllabus p. 4 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 You will be able to describe in English, the semantics of a working subset of assembler instructions. You will be able to describe the architecture of an IBM System/z machine. You will demonstrate knowledge of the semantics of a working subset of assembler instructions by writing equivalent code in Java Five programming assignments covering basic assembly language concepts will be given and graded You will have to demonstrate this skill on the midterm and final examinations You will have to demonstrate this skill on the midterm and final examinations 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.