Curious about studying Computer Scienceat University of Greenwich? We've gathered all the key details—entry requirements, modules, fees, and more. Hear from real students by checking out reviews, or take the next step by booking an open day to explore it for yourself.
Bachelor of Science (with Honours) - BSc (Hons)
University of Greenwich (Greenwich Campus)
Full Time
Sep 2026
3 Year
Develop computer and software systems using the skills and experience you’ll gain on our Computer Science degree. This degree in Computer Science gives you a firm grasp of the science underpinning computer and software systems. You will gain practical experience of developing systems using the latest technologies and techniques, as well as exposure to the latest trends that will shape the future of computer science. You can study our core Computer Science course or choose a specialist endorsement in Artificial Intelligence, Cyber Security, Data Science, Games or Networking. The modules you can study include Artificial Intelligence Applications, Machine Learning, Information Visualisation and Big Data. By the end of the course, you will be equipped to study independently and to develop and adapt your skills throughout your career.
The main aim of this module and its Term 1 counterpart, Mathematics for Computer Science, is to prepare students with sufficient mathematics tools and techniques for the level 5 Computer Science mathematics modules associated with these programmes and possible level 6 mathematics modules.
To provide students with a solid foundation for understanding the fundamentals of data structure and algorithms and experience in using them for problem solving. These are the desirable skills that employers ask for in a computing graduate is the ability to decompose a problem into manageable components and to use appropriate algorithms to solve the resulting sub-problems. Building on the fundamental courses of mathematics and programming, this course takes the student through the fundamentals of data structures, algorithms and problem solving. Common algorithms will be explored through the lectures to solve a variety of problems in a series of practical exercises.
To introduce computer systems, their architectures, the associated enabling communication systems and the standards and protocols that facilitate their operation.
Understanding how a compiler consumes source code and generates machine instructions is crucial in writing logically correct and optimised computer programs. In addition, recognising how state machines and formal grammars underpin machine execution and memory utilisation is important in understanding how programs can be optimised. In this course we will explore state machines, together with elements of the Chomsky hierarchy and how these relate to compiler theory. The course also utilises a fundamental course in programming to write code in support of understanding compiler components. We aim to provide students with a fundamental understanding of compiler theory and related concepts, such as computer architecture, formal languages, state machines and program execution.
The main aim is to prepare students with sufficient mathematics tools and techniques for the level 5 Computer Science mathematics courses associated with these programmes and possible level 6 mathematics courses. The course aims to ensure students have fundamental mathematics knowledge, of a similar level to A? level mathematics and above. Knowledge acquired and revisited is to be learnt at a deeper level than, for example, a student simply revising for a final module exam. Hence the course is to be divided into two sections, assessed by online test. Formative tests will be available for students to prepare for the test and if necessary prepare for taking the test a second time in the resit period.
To provide solid foundation in programming concepts and hands-on experience in using them. The module introduces computer programming using different programming paradigms, such as functional and object- oriented programming. You will gain an understanding of the key commonalities, differences and trade-offs between these paradigms and their applicability to different programming problems. Through practical coding exercises, you will develop key design, problem solving, and coding skills that emphasise quality of software design for scalability and reuse, and the need for a professional approach to software development. Through exposure to the different paradigms you will build confidence in your ability to learn and take-on new programming languages - the aim is to "learn how to learn" new languages. As a polyglot software developer, you will broaden your employability prospects in a constantly evolving information technology industry with rapidly changing requirements.
Distinguishing between software programming and an engineering approach to the development of software systems is crucial to producing quality software. Software Engineering is at the core of any software development project and to succeed in this domain requires an understanding of the fundamental software engineering models and methods used, and an appreciation of the challenges involved in applied practice. Specialist knowledge and practical skills in this area are therefore in high demand.
Among the desirable skills that employers ask for in a computing graduate is the ability to decompose a problem into manageable logical components and to use appropriate algorithms to solve the resulting sub-problems. Building on the Level 4 computing and mathematics-based modules, this module takes the student through the data structures, algorithms and problem solving through modelling before examining algorithms for sorting and searching, analytical and eventually numerical methods. A wide range of algorithms will be explored through their application to solving a variety of problems by formulating appropriate models in a series of practical exercises.
Working effectively as a programmer or software engineer requires a sophisticated mixture of technical skills and knowledge. Although details of technologies may change frequently many concepts such as: componentisation, concurrent programming, use of design patterns, and programming in a distributed environment are likely to remain relevant for the foreseeable future. All programmers and software engineers should have an understanding of the role and use of supporting tools e.g. for testing, version control and documentation and project building. This course aims to broaden and deepen the skills and knowledge that the students will have gained from completing their level 4 programming courses. The skills and concepts mastered will be useful in themselves and will form a firm foundation on which higher-level skills can be built at level 6.
This course aims to provide computer science students with the knowledge and understanding of mathematical methods, numerical and statistical techniques required to solve problems and analyse data throughout their undergraduate studies as well as in their further studies of computer science or in the work place.
Information security focuses on information security threats, risks and corresponding countermeasures. This includes confidentiality, integrity and availability in different computer systems, taking into account also privacy, secure design and introducing cryptography and its applications.
To provide an introduction to fundamental methods used in Artificial Intelligence: knowledge representation, reasoning, search and learning. The module introduces the underpinning concepts and techniques, the problems for which they are applicable, and their limitations. You will gain the necessary skills to identify problem contexts that can be addressed using these AI techniques, and gain practical experience in developing systems that utilise them to address a given problem. You will explore the philosophical issues that underlie AI, the challenges and associated ethical questions. The module will prepare you for entry positions in AI application design and development, and enable you to pursue more advanced topics in this exciting field.
Modern computers bring together a range of hardware components into a single complex machine. Managing these components is a complex and challenging task handled by the operating system. Modern operating systems allow people to use sophisticated computer systems without any knowledge of its inner workings. In addition, it is possible to develop software applications with little or no knowledge of the operating system upon which they run. There comes a point however, where an understanding of the principles and the implementation design decisions and compromises becomes necessary. This course aims to provide a solid theoretical background in operating system architectures with a focus on the implementation and management of; memory, I/O devices, processes, file systems and users, taking into account networks, concurrency, virtualisation and security.
Placement Year
The Final Year Project requires students to work independently, abstract the essentials of a problem, obtain solutions by appropriate methods, and present their arguments through a user acceptance testing of the end-product/artefact as well as a well-reasoned formal dissertation report. Prospective employers often require that the student is able to tackle a non-standard problem, organise their work, show a high level of commitment with an awareness of their target audience and present their conclusions in a number of forms. Projects develop practical, analytical and communication skills, and are specifically designed to encourage students to initiate, plan and execute research programmes. Similarly, admissions tutors for Postgraduate courses and Research awards need to be reasonably certain that an applicant will be able to employ these same skills in order to carry out research and put those results in a thesis.
To teach the necessary technical knowledge and skills to design effective human computer interactions and carry out user-centred design activities to inform the creation of system and applications. The course will extend the student's knowledge and experience of managerial issues affecting the development of human-computer interactions, including relevant legal, social, ethical and professional issues.
To build a strong foundation with the Java Virtual Machine, its concepts and features. To exploit modern programming languages that run on the Java Virtual Machine and evaluate the key commonalities, differences and trade-offs between these languages and their applicability to different programming problems and environments.
120 Grades/points required
Not currently available, please Contact University for up to date information.
Accommodation- Standard (shared bathroom) 39 weeks - 6,805.50 (Total charge)
The University of Greenwich is a leading higher education institution whose driving force is an ethos of ‘no limits'. Th...