The module introduces programming concepts through Java. Emphasis is placed on writing well-structured and maintainable code. The Autumn semester covered the primitive data types, arrays, enums, choices and selection, repetition and graphics. Classes and objects, packages, object composition and abstract data types were also taught.
The Spring semester will cover advanced programming topics, such as information hiding, refactoring, test-driven development with JUnit, exception handling, threading and recursion. Java API will be used for developing a graphical user interface.
ASSIGNMENT: READ INFORMATION FROM A FILE AND DISPLAY A PICTURE
A text file, containing 32,400 capital letters, was provided. The letters were representing an encrypted version of a drawing of a camel. The task was to read from the file, decrypt the data, store the new values, and print the output on a graphic windows. Additional elements, such as a horizon and stars, had to be added.
The assignment tested the ability to use arrays, loops and the "EasyGraphics" class from the Sheffield package . The appropriate usage of constants, variables and types were also part of the marking scheme, as well as the readability of the code.
ASSIGNMENT: PROGRAMMING LEGO MINDSTORM ROBOT
The assignment was to program a Lego Mindstorm robot to follow a black line on its own. Then, with a manual control, it had to take a ball and transport it back to the starting point where it had to dance. The assignment had to be done in groups of 4 students. The centre of the arena, where the robot had to stop, was blue. Since the light sensor sometimes recognised blue on the black line, we had to further improve our algorithm. Although each team member was focused on a specific task, we were really supportive and helped each other in order to provide an efficient solution.
web and internet technology
ASSIGNMENT: MOBILE FIRST RESPONSIVE WEBSITE
The grade received was one of the highest among the students from the course. The feedback pointed out the efforts I had put into the project and the exceptional quality of the code and the documentation.
MACHINES AND INTELLIGENCE
During the Autumn semester of the module I was introduced to the Artificial Intelligence and the key concepts in the field. I was introduced to robotics, machine learning, machine vision, speech and language understanding and processing, knowledge representation and reasoning. An overview of some ethical issues related to AI were presented at the end of the semester.
The Spring semester covers a number of computer-based problem solving methods developed for AI. Experiments and tasks, related to research programming, will be implemented in Java.
Introduction to Software Engineering
The module is an introduction to the Software Engineering concepts and principles. During the first semester I studied the software life cycle, the software engineering methodologies (such as Waterfall, Agile, XP, Spiral and Scrum) and software project management. I was introduced to collaboration and revision control using Git and ethics and legal issues related to Software Engineering. Most of the work I had to do the first semester was related to requirements capture - there was a team assessment which was consisted of meeting a client and getting details needed for a software project we are going to build during the second semester. As a team, we had to write user stories, to design an acceptance criteria and to do estimation and prioritization. During the practical labs I learned the basics of Ruby. At the end of the semester I participated in the Global Engineering Challenge.
Through the Spring semester I will work on a big team project which involves building a dynamic website using Ruby, Sinatra and SQLite.
GLOBAL ENGINEERING CHALLENGE
The Global Engineering Challenge took place between Jan 22 - 26, 2018. The cross-faculty group project is about improving participants' soft skills while working on real-world problems from a global perspective. The issues different teams had to work on were related to Kibera - Kenya’s largest informal urban settlement. Ability to use sophisticated software is the problem my team had to develop a solution to. The current situation in Kibera was evaluated and an 11-page-long report has been produced, suggesting different approaches to tackle the situation.
DEVICES AND NETWORKS
The module runs throughout the academic year and is divided into two part. The first consists of gates and circuits, implementing logic, sequential circuits, computer arithmetic, instruction set architecture, the structure of the CPU, assembly language programming, accelerating performance and computer memory.
The second part of the module covers the connected and wireless networks, routing algorithms, layered protocols, error detection and correction and algorithms for reliable transition.
Foundation of Computer Science
The module develops mathematical concepts and techniques that are of foundational importance to computing. The first semester covers propositional logic, sets, boolean algebras, predicate logic, proof strategies, function and relations, induction and recursion.
The second semester covers integers, modular arithmetic, matrices and systems of linear equations, matrix algebra, probability, variables and processes.
INTRODUCTION TO ALGORITHMS AND DATA STRUCTURES
The module is an introduction to the design and analysis of efficient algorithms and data structures. The topics covered are efficiency of algorithms, design and analysis of algorithms for sorting, data structures, design and analysis of graph algorithms, algorithmic design paradigms.