Here are some of the modules I have done during my studies. I selected based on how much I enjoyed them, and their perceived usefulness. Each semester consists of 4 modules (8 in a year), but I only selected a few for each year to talk about.
Year 1
Comp 105 - Programming Language Paradigms
• Focus on functional programming using Haskell
• Had to relearn basics such as recursion because of the functional nature of the language
• Helped widen my view of the different kinds of programming languages, but it was not a paradigm I used after the module had finished
Comp 108 - Data Sctructures and Algorithms
• It explored arrays, queues, stacks, linked lists and different sorting algorithms comparing their efficiency
• The module was mostly theory driven but these are very useful notions in computer science
• The skills and knowledge learned have applied to a lot of problems I came across during my studies
Comp 116 - Analytic Techniques for Computer Science
• A theory heavy module with complicated new concepts, some of which took time to fully grasp
• Some of those concepts are complex numbers and their application, spectral methods, calculus, linear algebra, etc.
• They proved their usefulness in later projects and modules
Comp 122 - Object Oriented Programming
• This was one of my favorite modules, as it had a lot of Java coding in it, but also explored concepts which I found to be useful
• Hierarchy of Related Classes, Polymorphism and GUI, all of which were also put in practice in this module
• The knowledge and skill gained from COMP 122 led me to other interesting projects and making future modules easier to understand
Year 2
Comp 202 - Complexity of Algorithms
• Theory heavy module with a focus on asymptotic notation, AVL tree structures, different sorting algorithms and cryptography
• The module also consisted of a coding assignment which put into practice the material taught
• A lot of this knowledge helps with general coding problems, especially when taking part in hackathons like ICPC
Comp 208 - Group Software Project
• A module all about making a piece of software in a group setting with 5-6 people in our team
• The idea we came up with was an interactive game that helps children learn maths called Hot Air!
• This game has a full authentication system, menu, settings, gameplay, and leaderboard
Comp 222 - Game Design
• The module went deeper into game design practices and structures, as I did game development before for both A-Level and the group project
• This included learning about Game Engines, Renderers, Geometry, Vector Arithmetic & Transformations, Virtual Agents, etc.
• During this module I made another game called Icarus Initiative. Heavily inspired by the classic game Asteroids
Comp 228 - App Development
• A new area of development for me, focusing on iOS. Exploring how software is different yet similar for mobile compared to computers
• During the moule I used Swift and Xcode to develop a few apps for iOS. This included Fortuna and New Brighton Murals
• This was the most enjoyable module during my time at university, as I learned a lot and had fun coding amongst my colleagues in the MacLab
Year 3
Comp 305 - Biocomputation
• Explores concepts of neurons, neural networks, perceptrons, learning and genetic algorithms
• It goes into detail about these concepts, which were hard to grasp at first
• The module is purely theory, and so no practical work was done in relation to those concepts, but they were helpful in other modules
Comp 329 - Autonomous Mobile Robotics
• Having never done robotics before, this was an intriguing area to study
• It focused mostly on intelligent agents, working in a virtual environment, similar to game agents
• Making use of sensors, controling motors, and letting an AI to make decisions accordingly for different scenarios
Comp 338 - Computer Vision
• The theme of AI continues, this time exploring how visual data can be analysed and interpreted
• This includes classifying images, applying filters, selecting training data, etc.
• Included in the module were a few smaller projects using Python and PyTorch
Comp 343 - Computer Forensics
• Writing lots of essays and understanding forensic processes and laws when it comes to collecting digital evidence
• Carried out similar procedures using tools like Kali Linux and Autopsy, whilst writing a report on the findings
• Read new academic papers on different forensic processes, trying to improve certain sections and aspects