3D Graphics Programming
3D Graphics gave me a strong introduction into the essential parts of real-time graphics programming, the course focused on the OpenGL libraries, but the vast majority of the modules content is easily transferable to all 3D programming libraries. The first half of the module focuses on the rendering of 3D meshes and models, and writing the shaders to control how they are drawn. The shader programming extended to the basics of lighting, shading with first Lambertian reflections, then full Phong Reflection. The second half of the module moved from drawing provided shapes to defining our own with Bezier Curves and B-splines.
AI programming focuses heavily on the LISP functional programming language and gives an in-depth lesson in search algorithms like Breadth-first, depth-search, A* and Dijkstra. It also introduced the concept of pattern matching and its use in computer science.
Animation and Simulation Programming
This module introduced the vital algorithms and mathematics used in the programming animation into a 3D world. The first half of the module focused on the concepts of representation within a virtual world and pathing to produce simple movements. The second half of the module focused on simulation of real world forces to produce movement, this lead to collision detection and the basic animation of particle systems.
Game Engine Construction
GEC focuses on the architecture of games engines, and asks us to program a simple on ourselves. It introduced the engine as a version of the Model-View Controller architecture and has emphasis on Object-Orientated Programming principles to ensure that data is correctly encapsulated and protected.
Game Software Development
GSD is a gameplay programming module that offers a lot of freedom in terms of what you implement and how you implement it. The brief in this module was o create a game from scratch using Microsofts XNA framework.
Network and Concurrent Programming
This module introduces the concepts of concurrent programming and their importance on modern systems. In terms of networking, it focuses on TCP and UDP transmission protocols with the first module being to program a networked Java game using these protocols. The second half of the module Introduced the Erlang programming Language, in which we programmed client-server programs of various different distributed application architectures.
C++ , this is the main language that all modules touch on, it is also the language of OpenGl.
LISP, LISP is the language used in the AI module, it was my first introduction to functional programming and my favorite language to program in.
Java, Java was used in the networking module to code a networked game of Rock-Paper-Scissors.
C#, C# is the language used by the XNA framework I used in Game Software Development.
Erlang, Erlang is a distributed, functional programming language used in the networking module.