__Two units from the following:__

### Level 3

*Two units from the following:*

Teaching and Learning Technologies

### Level 1

**Personal Tutorial: Academic and Transferable Skills**

The support tutorial class provides the means to enhance student skills and abilities not necessarily based on the context of specific units taught but which prove to be very useful throughout their studies as well as their careers afterward.

The idea is to split a cohort of students into several small groups, which are assigned a member of the academic staff, called the Tutor. Each group meets with the Tutor once every two weeks and discusses a specific topic.

The aims of the Tutorial System are:

Study Skills: to develop the students discussion, presentation and general communication skills.

Context: to broaden the students understanding of the degree subject, putting it into the context of the discipline of science as a whole.

Integration: to help students with the development of and integration between the units they are studying.

Planning: to help the students to plan their work and the academic staff to chart the students progress.

Pastoral: to give students a personal contact and guidance with a member of the academic staff.

Networks Architecture

This unit provides an introduction to modern communication systems. It offers a comprehensive overview of the fundamental principles, theories and practices employed in computer networks and aims to develop a foundation that can be used as the basis for further study or research in the field. The unit aims to examine the structure of communication systems, to introduce fundamental computer network architectures and technologies, to present hardware components used in computer networks, to discuss the OSI model as a reference for understanding and designing a network architecture and to investigate the internet model (TCP/IP) and internetworking principles.

Discrete Mathematical Foundations

This unit aims to introduce discrete mathematics and provides the mathematical background to first year CS students. Many areas of Computer Science rely heavily on mathematical concepts and techniques. This introductory unit covers Logic, Set Theory, Languages, Relations, Induction, Turing Machines and Graphs. It explores the relationship between mathematics and computer science units which are taught at higher levels, e.g. Logic Programming, Formal Methods, Databases, etc. The unit also aims, through practical work, to improve the analytical as well as the written communication skills of the students. At the end of this course the student should be able to comfortably deal with problems in logic, set theory and graphs, understand the relationship between mathematics and computer science, express solutions to problems in an analytical way, use mathematical background knowledge to deal easily with the computer concepts as they occur in the more advanced courses.

Continuous Mathematical Foundations

This course is intended to introduce the students to the fundamental concepts of Calculus. It presents the students with the notions of functions, limits of functions, derivatives and integration with a particular emphasis on the application of those topics in science and especially in Computer Science. By the end of the course students should know how to apply derivatives in calculating rates of change and in solving optimization problems, know how to draw reliable graphs and how to find the largest and smallest values of a differentiable function, be able to calculate with integrals the areas between curves, understand the relationship of calculus with science, acquire and develop general evaluative and communication skills such as being able to analyse information, interpret it and draw conclusions, to consider a problem from a number of different perspectives, to contribute constructively to class discussions, to request clarification, to challenge arguments, and to defend their own point of view.

Programming Methodology & Design

This unit is an introductory course in computer programming intending to offer insides to basic analysis of problems and to algorithmic thinking. Emphasis is placed on developing strong and robust fundamentals of software development (especially programming) practices. Design practices such as incremental code writing, simplicity, code improving and pair programming are introduced and practiced in the labs. The unit aims to introduce the beginning computer science student to algorithmic thinking, simple problem analysis, structured design, top-down stepwise refinement and java programming language.

Introduction to Web Technologies

The aims of this unit are to provide a working knowledge of the Internet, to develop individual and group communication skills, and to provide essential information technology (IT) skills. By the end of the unit the students should understand and be able to explain the principles of Internet communication, be able to use the Internet as a practical tool for information gathering, understand the World Wide Web, and be able to write a hypertext document using HyperText Markup Language (HTML), be able to communicate their ideas more effectively, both orally and in writing, be able to use standard software packages (word processor, spreadsheet and presentation tools), and have a greater understanding of group dynamics, both as a group member and a group leader.

Computer Systems Architecture

This course is an introductory course in Computer Architecture. Its aims are to provide an appreciation of computer hardware technology at a novice level, introduce students to the terminology and components of computer systems, discuss storage mechanisms and their organisation, to introduce students to the structure and operation of digital circuits and to familiarise students with digital arithmetic and digital logic. By the end of the course students should: be able to comfortably deal with computer terminology, have a basic understanding of computer architecture, have an overview of computer systems components, have a good understanding of computer number representation and conversion and have a basic understanding of digital circuits.

Object Oriented Programming

This unit is an introductory course in computer programming intending to offer insides to basic analysis of problems and to algorithmic thinking. Emphasis is placed on developing strong and robust fundamentals of software development (especially programming) practices. Design practices such as incremental code writing, simplicity, code impoving, error handling and pair programming are introduced and practiced in the labs. The aim of this unit is to introduce **computer science student** to the object oriented approach to computer programming, object oriented analysis and design techniques and Java sytax for object oriented programming.