About the GSACalendarOutreach ProgramsClasses & TrainingGuide to Life
GSA SurveysJobsUseful LinksNew PerspectivesGSA ContactsFermilab Home

C++ Class with Paul Kunz May 13-17

Time committment
12 total hours of lecture, optional discussion sessions each afternoon and as much time as you can put in on your own between lectures.

Free except for a $20 fee for copying transparencies for those who choose not to print or copy their own. (See below.)

The class has a strong focus toward HEP but attendance is not restricted to physicists. It is oriented toward the highly motivated who cannot break away from their regular work for a week at a crack.

Class limit: 40

The only prerequisite is experience in computer programming. In particular, no prior knownledge of the C language is needed. Programming experience entirely in Fortran is adequate. It is recommended that the student take FAST TRACK TO OBJECTS but this is not a requirement. The recommendation to take FAST TRACK comes from Roy Thatcher not Paul Kunz who had seen FAST TRACK.

All employees or scientific visitors are eligible regardless of whether or not they have taken another C++ class or not.

Each student will have transparencies of her/his own priot to class and HAVE LEARNED HOW TO COMPILE AND LINK A C++ program from some account. A guide to doing this will be available through the Computing Division Training Web Page (currently under construction).

Text book
John J. Barton and Lee R. Nackman
Scientific and Engineering C++
IBSN: 0-201-53393-6

This is in the Fermilab Stockroom. As of 12:00 April 22, there are 22 copies. An order has been placed for 40 more but we cannot guarantee that the stockroom will have enough copies by May 13 for all students.

Monday May 13Curia II 8:00-12:001 West 3:30-6:00
Tuesday May 14Curia II 9:00-11:00Curia II 3:30-6:00
Wednesday May 15Curia II 9:00-11:00Curia II 3:30-6:00
Thurday May 16Curia II 9:00-11:001 West 3:30-6:00
Friday May 171 West 9:00-11:001 West 1:30-4:00

The course consists of six lectures of about 1.5 hours each. Some may run closer to two hours if there are lots of questions. At Fermilab, the lectures will all run in the morning with the first two lectures given back-to-back on Monday morning. Students are expected to spend time reviewing the lecture notes, reading the book and trying to write some code. A discussion session will be held each afternoon to answer any questions and discuss whatever students want. Paul Kunz will run the discussion sessions except for Friday where a local person experienced in C++ will fill in.

PostScript versions of the transparencies, printed two-up, are available from
or via AFS
where `n' is 1-6. There are 188 transparences all together. (Note from RCT: you need to copy these to your own area and "uncompress" them before sending them to a postscript printers.) All students are expected to have copies of these prior to the first lecture. A student is free to copy, decompress and print his/her own copy. The Computing Division will have several master copies available to be photocopied.

Course content
The course starts with the very basics and ends with a sophisticated example of tracking code. The content of each lecture is roughly the following...
o session 1: basic declarations, conditional structure, operators.
o session 2: pointers and functions.
o session 3: introduction to classes including operator overloading using 3-Vector from CLHEP as example.
o session 4; more on classes with arrays and lists and including templates.
o session 5: introduction to inheritance and complete physics analysis.
o session 6: more on inheritance with polymorphic classes from Gismo.

This course is not a "hands-on" style course. Only one practical exercise is suggested in the lectures. The students are expected to take their own initiatives in getting started.

By the end of the course, one should be able to read, in principle any C++ code written for HEP.

How to enroll
Send E-mail to FNAL: VALADEZ with the following information.
1) Name
2) Phone
3) E-mail address
4) Experiment or Division/Dept/Group
5) University if any
6) Grad student, post-doc, other (specify)
7) What prior classes you have had in C++ or OOP, if any.

last modified 2/26/2002   email GSA officers
Security, Privacy, LegalFermi National Accelerator Laboratory