I’m currently studying Computer Science at the University of Sheffield, I’m in my third year on the integrated masters course meaning I plan to graduate in 2021.
Data Driven Computing
Data driven computing has provided an introduction to machine learning and pattern processing as well as data science. Whilst studying this module I’ve learned about classification, dimensionality reduction and clustering. We’ve developed applications in python using the num.py libraries and for our final assignment we built an optical character reader.
Systems Design and Security
Systems design and security is a software engineering module with a focus on well implemented design on systems as well as focussing on the security of systems. We’ve studied customer-oriented interaction and software analysis as well as learning about common cyber threats. For this assignment we developed a large system for a university in java, allowing for multiple types of users to access varying components of the system. We implemented encryption on passwords as well as a normalised database models.
This module focussed on teaching a different style of programming, functional programming, we’ve studied programming in haskell, studying in depth recursive, parametric and higher order programming skills.
Automata, Computation and Complexity
In Automata, Computation and Complexity we’ve studied finite state machines, pushdown automata and Turing machines allowing us to study the question “What is computable?”.
Logic in Computer Science
Logic in Computer Science dived deeper into the topics covered in ‘Foundations of Computer Science’. We studied natural deductions of propositional and predicate logic as well as automatic proof searches and temporal logic.
This module was by far the highlight of second year. We (a team of five) were given a real life client with an actual problem and were tasked with creating a piece of software to solve such problem. For us we were asked to help update the University Of Sheffield’s Faculty of Social Sciences process of hire requests. Within a few months we developed a secure and efficient Ruby-on-Rails application which allowed users to make requests and system administrators to both process these requests but also make changes to the system as they see fit in order to make the solution as scalable as possible.
Human-Machine Interaction and Robotics
Human-Machine Interaction and Robotics taught us about the technology underpinning contemporary robotics. For the assignments in the module we were tasked with creating a PID system and a subsumption architecture to have a robot autonomously find its way around a maze as well as explore an arena for a light source.
Introduction to Software Engineering
Introduction to software engineering helped introduce concepts needed to develop software involving requirement analysis, implementation and testing. For our final project in the module we built an online food ordering system whereby users could tweet in their order which would be passed to an admin control panel where orders could be viewed, edited and removed. This system was built in a team and helped teach professional standards for software development.
Foundations of Computer Science
Foundations of computer science introduced the mathematical concepts synonymous with computer science, focusing on boolean and predicate logic, proofs, recursion, modular arithmetic, probability and matrix algebra.
Java programming was a pretty self explanatory module, helping teach the language of Java with a focus on teaching object oriented programming.
Machines and Intelligence
Machines and intelligence served as an introduction to artificial intelligence, firstly studying the history behind the topic but going further in depth to study different route finding algorithms and search, inference and planning algorithms.
Devices and Networks
Devices and networks taught about computer architecture, digital logic and instruction set architecture as well as how to connect computers into networks as well as different network protocols and error detection/correction and reliable transmission over networks.
Web and Internet Technology
Introduction to Algorithms and Data Structures
Algorithms and data structures taught how to measure the effectiveness of algorithms and introduced more complex data structures as well as teaching general-purpose algorithmic design principles, including greedy algorithms, divide and conquer, and dynamic programming.