In this course, we will cover approximately 10-12 topics at a rate of one per week. I will give you 10% of your grade for each topic that you demonstrate strong knowledge in. As you are in your final year, I hope that you will apply these ideas in your capstone project so that you do not have to create separate demonstration programs. The goal is to make your capstone project stand out.
As each topic is worth 10%, you can choose how many of these ideas you want to implement. Therefore, you have the opportunity to choose your own grade by demonstrating strong knowledge in the number of topics that you select.
Topic 0 (max 10%): Required
Dr. Dina Sabie will explain.
Topic 1 (max 10%): Memory Monitor
For full credit, keep track of all the heap allocations and deallocations by overloading
the new and delete operators and gather data.
Some ideas are, but not limited to, count the number of allocations and deallocations,
sum the amount mem allocated and subtrack the amount deallocated looking for memory leaks.
Can you give me some statistics about memory allocation and deallocation I can use to analysize
a program.
Example code: Week1 MemoryDemo.zip
Topic 2 (max 10%): Memory Management
Memory management in game programming is the process of allocating, freeing and managing memory efficiently to ensure the
proper execution of a game. This includes handling memory allocation for game assets such as textures, audio files,
and models, as well as managing memory used by the game engine and game objects. Effective memory management is crucial
for achieving optimal performance, avoiding crashes in large game productions. Common techniques used in game memory management
include pooling, garbage collection, distinct memory block allocations.
Cool old article on memory allocation
To get full credit for this topic, put the memory management tecgniques discussed in class into an existing program
and demonstrate that you can control the use of memory over just using the OS.
Topic 3 (max 10%): C++ Concurrency (multi-threading)
Example code: ThreadDemo1
For full credit, the secondary threads must perform a meaningful task.
If the threads share objects in memory, the use of mutexes
(a synchronization object) should be considered to prevent race conditions.
Here are some ideas for tasks that the secondary threads could perform: