Base Knowledge
C programming
Topics on computer architectures
Topics on operating systems
Teaching Methodologies
There are theoretical lectures are practical lectures.
Within the theoretical lectures, an expository methodology is used to present the theoretical foundations of the subject with applications examples.
Within the practical classes students apply the knowledge of theoretical lectures, developing applications, with the supervision of teachers.
Outside of classes, students develop a medium-sized project whose progress is verified in an intermediate phase and evaluated in a final phase.
Learning Results
1. Improve skills on operating systems.
2 Acquire skills in Windows operating system and platform.
3 Acquire skills in programming Win32 applications in C.
4. Evolve in the ability to organize, research, propose and plan solutions, work with autonomy, preparation of documentation.
Program
1. Theoretical component
A. The Windows NT architecture. Micro-kernel architecture. NT Executive. Sub-systems. Win32 subsystem. Win32 applications and UAP platform.
B. Win32 programming – Introduction
i. Introduction to Unicode programming.
ii. Types of Windows NT applications.
iii. Registry
iv. Creation and management of processes.
v. Thread creation and management. Multi-threaded programming model. Application and advantages. Examples of parallel thread programming.
C. Synchronization – Models and mechanisms
i. Fundamental synchronization problems. Mutual exclusion. Competition and cooperation.
ii. Review on Algorithmic and system solutions. Logical latches. Mutexes. Semaphores. Atomic operations. Test and Set operations. Example with product / consumer
iii. Win32 synchronization mechanisms. API. Mutexes, Critical Sections, Traffic lights. Timers. Waitable events. Asynchronous API.
iv. Synchronization in multi-thread programming in Win32
v. Deadlocks and livelocks. Main concepts. Prevention and avoidance strategies. Banker’s algorithm.
D. Communication models and mechanisms
i. Named pipes. Client-server model with named pipes in Win32.
ii. Memory mapped files.
E. Security model and mechanisms. Concrete case of the Win32 platform API. Privileges, rights. DACL.
F. Graphical interface and event programming
i. Graphical Win32 application structure
ii. Windows as a structuring element for applications. Callback functions. Events. Event-oriented programming. MVC paradigm and data-view relationship.
iii. API encapsulation in C ++. Concrete example of window encapsulation.
iv. Features in the Win32 computational model. Examples of icons, menus, dialog boxes and string tables.
G. Dynamic link libraries – DLL. Creation. Principles of dynamic libraries and low level operation. Explicit link and implicit link.
2. Laboratory component
The practical classes follow the subject of programming for the Windows platform
A. Development practice for the Windows platform under Win32
i. Unicode applications.
ii. Process creation and management.
iii. Registry.
iv. Multithreaded programming
v. Synchronization mechanisms
vi. Communication mechanisms. Named pipes. Client-server applications. API for overlapped IO.
vii. Memory-mapped files
vii. Security mechanisms API.
Curricular Unit Teachers
Internship(s)
NAO
Bibliography
Optional references
Hart, Johnson M. (2010) Windows System Programming (4th edition). Addison-Wesley
Silberschatz, Abraham, Gagne Greg, Galvin Peter B. (2018) Operating Systems Concepts (10th Ed.), Addison-Wesley
Solomon, David A.,Inside Windows NT (2nd Ed.), Microsoft Press
Schildt, Herbert, Windows NT 4 Programming, Osborne McGraw Hill