NT Programming for C Programmers Training in Colorado Springs

Enroll in or hire us to teach our NT Programming for C Programmers class in Colorado Springs, Colorado by calling us @303.377.6176. Like all HSG classes, NT Programming for C Programmers may be offered either onsite or via instructor led virtual training. Consider looking at our public training schedule to see if it is scheduled: Public Training Classes
Provided there are enough attendees, NT Programming for C Programmers may be taught at one of our local training facilities.
We offer private customized training for groups of 3 or more attendees.

Course Description

 
This course takes a comprehensive look at Win32, the native user mode NT programming interface. It is an advanced course intended for programmers implementing sophisticated applications and for doing systems programming. The student should have previous experience with Windows programming, either at the C/SDK level or using C++ and a class library such as MFC. Attendees will get an understanding of the programming techniques used to unlock the full potential of Windows NT as a powerful application platform. The course programmatically explores the nature of NT with hands on labs and demonstrations. The majority of this course is directly applicable to Windows95/98 programming. References are provided both to books and magazines.
The course covers the most powerful and critical features of Windows NT including the Registry, Processes, Threads, Synchronization, Security, Asynchronous I/O, and many others. Developers will also be exposed to the general principles of programming the Win32 interfaces as well as practical tips on how NT works. The course wraps up with a perspective of Windows NT in the industry today and tomorrow and a look at evolving Windows NT technologies.
The course includes hands-on programming examples and labs. Students will complete several labs in class, each exercising a specific Win32 programming technique.
Course Length: 5 Days
Course Tuition: $2090 (US)

Prerequisites

Experience with Windows programming using C or C++

Course Outline

 

NT Overview
Design Goals
NT Architecture
Object Architecture
Application Models

Object and Security
NT Kernel Objects
Object Namespace
Object Inheritance
Object Structure
NT Object Security
Security Descriptors
NT Security Model
Object Handles

Structured Exception Handling
Exceptions Defined
Exception Handler Syntax
Exception Filters
Exception Sequencing
Structured Termination
Structured Termination Sequencing
Related Win32 Routines

Unicode
The Unicode Standard
ANSI C Support
CRT Support
Win32 Support
Programming in Unicode
Programming with Generic Character
Unicode Windows
Windows Messages and Unicode

The NT Registry
Intent and Use of the Registry
Hives
Registry Editors
Registry API

Processes
NT Process Definition
Creating a Process
Process Startup
Process Termination
Inter Process Communications
Process Synchronization
Inheritance

Threads
NT Thread Definition
Thread Scheduling
Creating a Thread
Thread Startup
Thread Termination
Thread Communications
Thread Synchronization
C Run Time Libraries

Synchronization
Object Model of Synchronization
Synchronization Objects
Waiting for Objects
Event
Semaphore
Mutex
Critical Section

Asynchronous I/O
NT I/O Architecture
CRT, Win16 & Win32
Overlapped I/O
Waiting for I/O Completion
I/O Callback Functions

Memory Management
Process Address Space Anatomy
NT Virtual Memory Manager Architecture
Memory Paging
Memory APIs
Memory Reservation
Memory Commitment
Virtual Memory API
Heap Memory API
CRT, C++ & Win16 APIs
Memory Mapped Files

Dynamic Link Libraries
DLL Architecture
Instance Data
DLL Entry Point
Exports and Imports
Process and Thread Termination
Thread Local Storage
DLL Shared Memory

Appendix. Introduction for Win32 for C++ Programmers
Win32 Programming Model
Win32 Programming Using SDK
Multiple Instances of Win32 Applications
Win32 Versions
Version Resources
Win32 Error Reporting
Basic Win32 Memory Management


 

C++ Programming Uses & Stats

C++ Programming is Used For:
Software Development Search Engines Operating Systems Video Games
Difficulty
Popularity
Year Created
1983
Pros
Popular: 
C/C++ is everywhere. In particular, they power more technologies than we give it credit for.
 
Flexible:
C++ is a multi-paradigm coding language. This means that it supports other styles such as procedural programming as well as Object-Oriented Programming. 
 
Fast: 
Because it is compiled, C++ gains a lot of speed. and is the language of choice for some applications as an example in the finance industry, where small differences in speed in high-frequency trading platforms can make the difference between a profit or a loss.
 
Job Opportunities: 
C++ developers are high in demand. There are over 14,000 C++ open positions on linkedIn alone. 
 
Similarity to Other Languages: 
Many other languages like C, C#, and Java have very similar syntax to C++, making them easy to learn for those that already know C++.
Cons
Difficult to Learn:  
C++ syntax is complex and the standard library is small, making C++ difficult to learn for someone with little programming experience. Although, it's believed to be more difficult to learn C++ than other languages, more accurately it probably takes a bigger investment of your time and effort to learn than some other languages. 
 
Strict Syntax: 
There is not much flexibility to the syntax, so it can be difficult to write code in a readable way.
 
Little Memory Management:
C++ does very little memory management, forcing the programmer to do most of it themselves.
 
Debugging Issues:
C++ can be difficult and complex to debug when it is used for web applications. 
C++ Programming Job Market
Average Salary
104000
Job Count
32816
Top Job Locations

New York City 
Seattle 
San Francisco 

Complimentary Skills to have along with C++ Programming

C/C++ are the grandfather of most other languages. Once you understand C syntax and (OOP) Object Oriented Programming, you're well on your way to greener pastures. 

Since the .NET development ecosystem spans a wide array of capabilities and tools, it is difficult for .NET developers to know which .NET development skills and training to pursue in order to increase their marketability — and earning potential.  For that reason, learning supplemental languages such as Java, JavaScript, Python, C/C++, and others is expected in today’s competitive skill-set driven playing field.

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.