COMP 3400 Mainframe Administration, Winter 2009

General Information


The prerequisites for this class are COMP 2400 (for undergraduates) or excellent performance on the MFA scholarship exam (for non-traditional students). You should be able to write simple scripts in bash, REXX and Python or Perl. You should be able to use UNIX editors such as vi and emacs. Furthermore, some basic understanding of a broad range of computer science topics including in particular networking and computer security is expected.

This is a class on mainframe administration focusing on IBM's zSeries mainframes running z/OS, z/VM and GNU/Linux for System z. Projects will include the execution and automation of various common administrative tasks on z. You are expected to attend the lectures, study the textbooks and find and read additional material available on the Internet and study the documentation available for System z.

Lecture Hours and Location

The lectures will be held Mondays and Wednesdays from 6-8pm in John Greene Hall 216.
In order to get a door code for the Computer Lab please visit the labcode webpage. The code is updated on weekly basis.

Office Hours

Christian Grothoff - JGH 108
Monday, Wednesday 1pm-5pm and by appointment.
Jeff Keene - CS Annex, West Office
Tuesday, Thursday 4-6pm and by appointment.

Textbook and Syllabus

All of the textbooks for this course are available both in hardcopy and as free on-line books, so you do not need to buy a copy (however, if you do not like reading many pages on the computer, getting a copy of z/OS Basics is highly recommended).
"Introduction to the New Mainframe: z/OS Basics" by Bill Ogden et. al. is the main textbook for this course.
"Introduction to the New Mainframe: z/VM Basics" by Lydia Parziale et. al. is a supplementary textbook for this course.
"Version Control with Subversion". You must know how to use subversion as a developer (not as an administrator) in order to submit your assignments. Use this book as a reference if you encounter problems. Basic knowledge of chapters 1-3 should be sufficient.

Specific topics that will be covered include:

Assignments and Grading

This course includes various quizzes, projects and a final exam. The final exam will be the IBM System z Entry Level for z/OS System Programmer Mastery Test which will be proctored at DU (the set of questions for this test is randomized, so paying to take it before the actual final exam is unlikely to help). For all projects you are free to discuss them with anyone as long as you acknowledge contributions in your submission.
All projects will be graded using the following metrics:

Academic dishonesty includes, but is not limited to: plagiarism, cheating in exams, unauthorized collaboration and falsifying academic records. Violation of any of these may result in a grade penalty on assignments, an "F" in the course, dismissal from an academic unit, revocation of admission, suspension from the University as well as being roasted over a slow fire.

The different kinds of assignments are weighted as follows:

Projects25 Pts
Quizzes25 Pts
Final50 Pts

There are theoretically a total of 100 Pts possible. Grades will be given as follows:

A> 90 Pts
B> 75 Pts (and at least 38 points on the final)
C> 60 Pts
D≥ 45 Pts
F< 45 Pts
Note that if you fail the final exam (less than 76 percent or 38 points), you will not get a B even if you got more than 75 points in total.


You should have access to a Debian GNU/Linux system for this class. If you do not have a machine where you can install this operating system, you can always use the department's HP lab which has all of the necessary software installed. You can access the various mainframes used in the course from virtually any operating system, but getting more experience with a GNU/Linux system would be a good idea.

Submission of Assignments

Each student will get access to a subversion repository. Assignments must be committed to that repository by the respective deadline. Students are encouraged to use the repository for version control while still working on the assignment. Only the last version commited before the deadline will be used for grading.
In order to access your subversion repository, you must first request an account by either putting your UNIX logon onto the paper I pass around in the first lecture or by contacting our system administrator (mention the course name and number). Once your account has been created, you should do an initial check out:

    $ svn checkout$USER
    $ cd $USER
You should then proceed to create some initial file for the first project and commit it:
    $ touch test
    $ svn add test
    $ svn commit -m "comment"
Make sure to commit the final version with all files (hint: svn status) before the deadline. It is also a good idea to do a seperate checkout and verify that the result works.
For group projects, you should e-mail the logins of the group members and a project name to our system administrator. You will then be given the name of a directory to which all group members have access.


Projects are sized to be done in teams of two or three students; however, you are welcome to do them on your own as well. You are only expected to do one of the projects listed below. The projects will require you to study aspects of System z on your own beyond the scope of the lectures. While the instructor may be able to point you towards additional resources, there is no master solution; these projects are supposed to cause sleepless nights. You are allowed to ask online for help (for example, in developer forums for related software project), but you then must acknowledge whatever help you have received in your project documentation. You are expected to demonstrate your project in class 19. On that day, you must also submit all of your code and documentation to the group repository including a report that states what was achieved, what was not achieved and why.

libgcrypt on z
Port GNU's libgcrypt to z/OS; test your port by checking that HTTPS works with GNU libmicrohttpd on z/OS; finally, consider adding code to use the z/OS cryptographic processors to improve the performance of libgcrypt.
This project requires good knowledge of C and the GNU autotools. Fame and fortune await.
Data Set Explorer
You can access z/OS catalogs and data sets from z/OS UNIX using z assembler. Write C wrappers around the assembler code and C code to generate HTML views from the data sets. Integrate with Websphere Application Server or libmicrohttpd. This project requires that you are willing to learn and write code in assembler. Get your hands dirty! (Documentation is here, here, here, here and here)
System Report
Write a tool that can be used to get a (useful) report about the current status and configuration of a z/OS system. The generated report (HTML or LaTeX plus possibly graphics) should include information about system resources (sysplex hardware configuration), system users (active, inactive), system software (what is installed, which versions) and system utilization (performance metrics, failures). The report tool should operate within the security restrictions of a normal system user (class G). Combining the use of scripting languages (CLIST, REXX, JCL) with compiled languages (C, Java, COBOL) is recommended. What is the Language System?
Need for Speed: DB2
Database performance is a major bottleneck for GNUnet. Port the GNUnet database performance benchmarks to z/OS with DB2. This will require learning to access DB2 from some compiled language (likely C, possibly COBOL). How fast can you make it run?
Simple Event Notification
Using Websphere MQ, implement an event notification system that informs a group (!) of system administrators running your client software on their GNU/Linux or Windows desktops about events on the mainframe system. The mainframe events should be generated by calling some simple program on the mainframe with the respective message. This project must use the Websphere MQ mechanisms to setup message queues and would likely be written most easily in Java. Write once, run everywhere?
Each team is expected to demo their project in class 19.


This is the list of topics for the course. Expect a portion of the lectures to be spent on discussions of the projects and work on projects and small exercises. You should also set aside time for working in the lab on projects (on your own or in groups) in addition to the scheduled lab classes.

Class 1: Introduction to the mainframe and mainframe hardware (1/5/2009)

Required Reading
z/OS book, chapters 1 and 2; z/VM book chapters 1-3 and 4.1
Lecture 1 slides
Useful links
Subversion, z10 hardware model, "z/OS Concepts"

Class 2: Introduction to z/VM (1/7/2009)

Required Reading
z/VM book chapters 4 and 5
Lecture 2 slides
Useful links
zFavorites, VM/ESA CMS Sharted File System, DFSMS/VM documentation, HCD/HCM library

Class 3: Introduction to CMS (1/12/2009)

Required Reading
z/VM book chapters 6 and 8
Lecture 3 slides
Additional Materials
CMS Pipelines Explained
Useful links
IBM Tutorials on CMS Pipelines

Class 4: Introduction to z/OS (1/14/2009)

Required Reading
z/OS book, chapters 3-4
Lecture 4 slides
Additional Materials
UNIX System Services Command Reference

Class 5: Data sets (1/19/2009)

Required Reading
z/OS book, chapter 5
Lecture 5 slides
Additional Materials
TSO Command Reference, ISPF at CNS (introduction to basic tasks)

Class 6: JCL and SDSF (1/21/2009)

Required Reading
z/OS book, chapter 6
Lecture 6 slides
Additional Materials
ABCs of z/OS System Programming Volume 1

Class 7: JES and WLM (1/26/2009)

Required Reading
z/OS book, chapter 7
Lecture 7 slides
Additional Material

Class 8: Application programming on z/OS (1/28/2009)

Required Reading
z/OS book, chapters 8-10
Lecture 8 slides
Additional Material
z/OS C++ runtime library reference, z/OS standard C++ library reference, z/OS C++ programming guide, Java on z/OS: JRIO API

Class 9: Lab: Porting Applications to z/OS (2/2/2009)

Required Reading
z/OS book, chapters 8-10
Lecture 9 slides
Additional Material
z/OS porting guide

Class 10: Transaction management systems on z/OS (2/4/2009)

Required Reading
z/OS book, chapter 11
Lecture 10 slides

Class 11: Database management systems on z/OS (2/9/2009)

Required Reading
z/OS book, chapter 12
Lecture 11 slides
Useful links
Normalization Rules, IBM Information Management Software for z/OS Solutions Information Center

Class 12: HTTP Servers, WebSphere and WebSphere MQ (2/11/2009)

Required Reading
z/OS book, chapters 13-15
Lecture 12 slides

Class 13: System Programming (2/16/2009)

Required Reading
z/OS book, chapter 16, z/VM book, chapter 9
Additional material
MVS System Commands
Lecture 13 slides

Class 14: SMP/E (2/18/2009)

Required Reading
z/OS book, chapter 17
Additional material
IBM SMP/E for z/OS User's Guide
Lecture 14 slides

Class 15: Networking on z (2/23/2009)

Required Reading
z/OS book, chapter 19, z/VM book, chapter 11
Lecture 15 slides

Class 16: Security on z (2/25/2009)

Required Reading
z/OS book, chapter 18, z/VM book, chapter 12
Lecture 16 slides

Class 17: Performance (3/2/2009)

Required Reading
z/VM book, chapter 10
Additional material
z/VM Performance
Lecture 17 slides

Class 18: Linux on z (3/4/2009)

Required Reading
z/VM book, chapter 13
Additional Material
Linux for S/390, Debian S/390 port, Linux for S/390: Device Drivers and Installation Commands
Lecture 18 slides

Class 19: Review and Demos (3/9/2009)

Additional Material
US firm files complaint about IBM

Class 20: Final Exam (3/11/2009)

Grades can be requested at any time during office hours.

Christian Grothoff
Last modified: Wed Jan 7 16:56:29 MST 2009