BOOTCAMP: 64-Bit Programming in C++
Posted on March 28, 2008 by Univ.-Doz. Dr. Schneider
Filed Under Bootcamps, C++, Certification acc. to ISO/IEC 17024, IITAC Bootcamps, Live Bootcamp, Software Development, Software Engineering, Training
| June 19, 2008 9:00 am | to | June 21, 2008 4:00 pm |
| August 21, 2008 9:00 am | to | August 23, 2008 4:00 pm |
| October 2, 2008 9:00 am | to | October 4, 2008 4:00 pm |
| November 13, 2008 | ||
| 9:00 am | ||
64-bit technology introduces several new and complex tasks for software-developers. Even that the hardware developing industry claims that future software development should take care about the new introduced compiler systems, it is necessary to have a deep inside view on how the new underlying 64-bit assembly language works. This article describes what 64-bit means for future software developments, how 64-bit influences assembly programming and how to port applications programmed under 32-bit to 64-bit. It is heavy based on the IA architecture and the Windows® operating system.
The introduction of the 64-bit technology leads into several discussions if this change is really necessary. Some arguments are to speed up computation time or to make calculations more precise. These efforts lead into hard problems which have to be solved by upcoming compilers or operating systems. Especially the necessary change of the operating system infrastructure causes heavy problem porting older 32-bit applications to 64-bit compatibility. Since assembly programming is a comfortable task under 32-bit systems (e.g. MASM, TASM, NASM, FASM and others), the question stays on how to port software and which changes of the architecture affects the current programming techniques. The new 64-bit Architecture introduces many innovations. Some of them are:
- Rich Instruction Set
- Bundled Execution
- Predicated Instructions
- Large Register Files
- Register Stack
- Rotating Registers
- Modulo Scheduled Loops
- Control/Data Speculation
- Cache Control Instructions
- High-precision Floating-Point
Compared to the IA-32 architecture the new IA-64 architecture allows several advantages for the programmer. One of them is the clear and explicit programming technique which results in EPIC (Explicit Parallel Instruction Computing). EPIC is an Intel® IA-64 technique. Additional the programmer can code now more register-based, which means that everything is kept in registers as long as possible. The resulting assembly is code has a clear structure.
This bootcamp was designed for students who already have a basic understanding of programming and want to learn the art of coding in C++. Eclipse IDE and GCC are the main programs that will be used along with several other public tools that will be distributed on-site and software will be created by the student themselves as a learning objective. Some advanced programming techniques will also be taught such as:
- Building a project with Eclipse IDE
- Development under Linux and Windows
- Cross-Platform debugging
- Buffer Overflows and their prevention
In this 3 day hands-on course, you will gain the necessary skills to discover the true nature of any C++ binary. You will learn how to recognize the high level language constructs (such as branching statements, looping functions and STL) critical to performing a thorough and professional development of a binary. After learning these important introductory skills, you will advance to:
- develop own applications in C++
- transform problems to algorithms to running software applications
- prevent software vulnerability
IITAC will train you on the standard C++ development IDE Eclipse.
The content in detail
- Introduction to C++ (Variables, int, float, double, char, Incrementing, Decrementing, Constants, Boolean)
- Code Flow (IF-THEN-ELSE, SWITCH, FOR loops, WHILE loops, REPEAT UNTIL loops)
- I/O
- Subroutines (Functions, Procedures, Paremeters, Prototypes)
- Fields (Arrays, multidimensional Arrays)
- Strings
- Structures
- Pointer (Pointer as parameter, Fields as pointer, Pointer Artihmetic)
- Classes
- Standard Template Library (STL) and how to build own tenplates (Function Templates, Class Templates)
- Exceptions
- Application’s Code Vulnerabilities (Common code vulnerabilities, Weak points research, Code-Flow analysis, Binary Analysis)
How You Benefit
The demand for C++ developers as highly increased during the recent past years, leading toward a more recognised profession. Software developers are highly regarded in the world of IT, with an ever-growing need for more qualified and experienced experts. Getting a better-understanding of the inner workings of the software system and application-level debugging is time-saving during software development. Knowing how to find more detailed information about bugs and solving them yourself, giving you the knowledge to draw more accurate conclusions based on programming knowledge rather than seeking the web for an hypothetical answer. By getting training with real-world problems and the latest tools and techniques, you will stay a step ahead of the others when competing for the same position. C++ will always an ace in your sleeve that will be used on a day-to-day basis quite rapidly.
How the Course is Run
This course is by no means a 3-day lecture. Instead, you will be engaged in a number of individual and group hands-on exercises to reinforce and solidify everything that is taught in the class. Some of the exercises are held in a competitive nature, followed by class discussion to pin point elegant approaches and solutions that various individuals or groups may have used. Despite the fact that the course is held in Italy, Germany or Canada, take home exercises will be available for the type-A personalities attending the course. The course can be available in alternate languages depending on the selected location.
What’s Included
- 3 Days of Expert Instruction from a senior instructor with real-world experience and deep knowledge of course content.
- Guaranteed small class size (less than 12 Students), you get an intimate learning setting not offered at any of our competitors.
- IITAC Development DVD. Includes every program covered in the course for at home study, development tools, Reverse Code Engineering Tools, training files.
- Snacks and refreshments included.
- IITAC Certified Software Development Professional (C++) exam fees for the certification according to ISO/IEC 17024.
- Lecture and Lab Exercises.
Who Should Attend
If you are interested in the field of software development, want to learn how to dissect problems and algorithms, search for security vulnerabilities and bugs, want to discuss cutting edge technologies, techniques and ideas then this class is for you.
Learning Environment
Against to direct class materials, slides and hands-on exercises, students will have many opportunities to engage in one-on-one questions with instructors. Students get trained the practical way with intensive supervision. As students bring their own laptop, work done during the bootcamp gets not lost. Furthermore, students will be divided into groups by experience to foster student-student knowledge transfer as well.
What to bring
Students must bring their own laptop running an installation of Linux, Microsoft® Windows® 2000, XP, Vista or 2003 either natively or within a virtual machine. Damn Vulnerable Linux is provided. Students should also have GCC and Eclipse installed. VMWare Desktop with already configured Windows and Linux virtual machines is optional. All other tools will be provided for the students in the class room. Prospective students should be comfortable operating Microsoft Windows and have a basic understanding of programming concepts. It is important that the student brings his/her own 64-bit laptop with 64-bit OS!
Pricing
Bootcamp pricing is 1.499 Euro per Person. Minimum of 5 participiants, maximum of 12 participiants.

