Study Abroad/Exchange Students Outside Europe
Incoming Students
Courses Available - Computer Science
Departmental Study Abroad Advisor: Dr Roy Crole
Web Site: http://www.cs.le.ac.uk/
Course Details: Course Module Database
For courses with pre-requisites students must either complete the appropriate pre-requisite at Leicester or at their home university before starting at Leicester. For details on course pre-requisites please go to: www.cs.le.ac.uk/Modules/CO-03-04/CO-03-04.html
Logic and Problem Solving
Aims:This module teaches the very basic principles of logic in computer science and gives the student an understanding of the principles of logic programming and how these are applied to standard problems in AI.
Program Design
Aims: Students should be able to demonstrate understanding of: the basic components of an object-oriented program including methods and attributes, the distinction between classes and instances, the structures required to write basic algorithms, and the components of simple text and graphics based interfaces. They should be able to undertake design using basic object-oriented design notation and demonstrate the applicability and effectiveness of various basic software testing techniques.
Data Structures and Development Environments
Aims: Students should be able to demonstrate an understanding of the fundamental types
of structured and dynamic data structure, their specification as abstract data types, and their implementation in Java. Students should be able to demonstrate an understanding of some of the main algorithms for processing dynamic datatypes, and to be able to write Java programs using these algorithms. Students should be able to analyse the behaviour of Java programs with the help of exceptions and structural testing. Students should be able to demonstrate an understanding of the programming and runtime environment of Java.
Study Skills and Professional Practice
Aims: The aims of this moduel is to introduce students to professional bodies and aspects of computing law and ethics. At the end of this module, students will be able to describe the main features of professional bodies, law, social issues and ethics in Computing.
Discrete Structures
Aims: At the end of this module, students should be able to:
- translate basic logical propositions to and from English
- understand basic set notation and solve simple problems concerning sets
- define relations, specify the matrix representation of a relation, and solve simple database applications; solve simple problems on functions, including problems on partiality and recursion
- solve simple problems in combinatorics and order notation
- define graphs and solve simple search/route/path problems, specialising to lists and trees.
Computer Systems
Aims: Students should be able to: describe the memory-I/O model and top-level hardware; solve problems in computer arithmetic; give an account of, and solve problems, in propositional logic and digital circuit theory and practise; give a summary of, and solve simple problems, in the MIPS assembly and machine language, including addressing methods; summarise the technical details of an elementary processor.
Databases and Web Applications
Aims: Students should be able to demonstrate an understanding of the basic techniques
involved in data organisation, storage and retrieval based on the relational database model. They should be able to implement, maintain, and query simple databases using database management system software MySQL. The students should be able to create static web pages using XHTML and dynamic web pages with content obtained from a database. They will learn the need for sessions for interactive web applications and how to program sessions with PHP.
Computers and Society
Aims: At the end of this module, students should be able to:
- describe the Information Society and Information Revolution
- explain the effect that computers and IT have had on employment in general and both individuals’ jobs and corporate organisations
- describe the concepts of work from pre-industrial revolution to today
- explain the issues of access to computers, the inequality that can arise, and the impacts on society; describe the issues surrounding information access rights
- solve simple problems concerning computer and software fitness-for-purpose
- be able to outline a brief history of digital computing.
Internet Computing
Aims: At the end of this module, students will be able to: give a coherent account of the basic technology, organisation and architecture of the Internet and the World Wide Web. They will be able to discuss the issues of Internet security and relate these to a given scenario. Students will be able to use Internet search tools to find information. They will be able to create and write static web pages using appropriate layout and graphics etc. Students will be able to organise and maintain a web site of moderate size.
Information Management
Aims: Basic computer literacy. Students will learn to understand and gain experience with a variety of components of the Windows 2000 operating system.
User Interfaces and HCI
Aims: Students should be able to demonstrate an understanding of advanced object-oriented techniques such as Graphical User Interface concepts; and the event-driven model of programming, and threading. They should be able to construct GUIs and applets in Java. Students should be able to demonstrate a knowledge of and be able to apply basic HCI concepts.
Business and Financial Computing
Aims: The aim of this module is to introduce students to the fundamentals of financial and business computing, giving them a clear idea of financial principles, business organization, of software to support these domains, and some of the basic software engineering principles that support the development of such software.
Software Engineering and System Development
Aims: According to a report of British Computer Society, only above 16% of IT projects can be considered truly successful and over 60% of the projects experience sever problems in. In many companies, software is still developed in an ad hoc way. The purpose of the module is to promote understanding of the conceptual and linguistic foundations of software development, its methods and techniques. In particular, the aim is to teach object-oriented methods for analysis, specification, design and implementation of large software systems.
Functional Programming
Aims: The module will give the student a thorough grounding for programming in the functional style using the language Haskell. At the end of this module, students will be able to: develop skilled use of basic functions and techniques to solve problems in practical applications; understand and use polymorphism in designing functions which allow code re-use; understand the use of higher order functions in designing functions which allow code re-use; understand the basics of polymorphic type inference; understand Haskell's mechanism for defining new datatypes.
Automata, Languages and Computation
Aims: The aim of this module is to give an understanding of the basic theory of language recognition motivated by applications in areas such as compiler design. The module will also aim to provide a general model of computation and thereby to illustrate the limits of the power of computers, both in terms of the problems for which a solution exists and also the problems for which a feasible solution exists. By the end of the module students should be able to comprehend some abstract models of the process of computation such as finite automata, pushdown automata and Turing machines. They should be able to follow basic mathematical arguments couched in terms of these models.
Software Project Management and Professionalism
Aims: According to a report of British Computer Society, only above 16% of IT projects can be considered truly successful and over 60% of the projects experience sever problems in. In many companies, software is still developed in an ad hoc way. The purpose of the module is to gain a practical understanding of the software development process, to discuss the management, professional an ethical issues of software development, and get acquainted with industrial best practices in preparation of the software engineering group project.
Multimedia and Computer Graphics
Aims: This module teaches the principles and technical details of multimedia data and 3D-environments. At the end of this module, students should be able to demonstrate understanding of: the basic representation and handling of multimedia data (sound, pictures and animation), the basic components of a 3D-environments.
Operating Systems, Networks and Distributed Systems
Aims: At the end of this module, students should be able to:
- describe the fundamentals of current computer operating systems, and communications between computers
- to use the Unix operating system
- describe key operating system features such as processes, threads, scheduling and synchronization
- solve simple problems concerning the benefits and costs of distribution of computer systems
- give detailed accounts of the structure and organization of network hardware and software
- describe the common physical attributes of networks.
Analysis and Design of Algorithms
Aims: The module aims to introduce students to the design of algorithms as a means of problem-solving. Students will learn how to analyze the complexity of algorithms. Major algorithm design techniques will be presented and illustrated with fundamental problems in computer science and engineering. Students will also learn the limits of algorithms and how there are still some problems for which it is unknown whether there exist efficient algorithms.
Communication and Concurrency
Aims: This module provides students with an introduction to theories and applications of concurrency. In particular, it will familiarise students with the process algebras CCS (Calculus of Communicating Systems) and its operational semantics. The module will teach, via individual and collective work, how to specify, design and implement simple concurrent systems. Students will also learn how to verify correctness of concurrent systems using the Concurrency Workbench software tool. Students should be able to: understand the notions of concurrency, communication, and concurrent systems; have a good knowledge of CCS and its operational and axiomatic semantics; be able to develop informal and formal specifications of simple concurrent systems, and be able to produce systems' designs from specifications; able to reason about the behaviour of simple concurrent systems, both by hand and with the aid of the Concurrency Workbench, using the techniques of equational reasoning and bisimulation.
Mathematics and Computer Science Project
Aims: The aim of the Mathematics and Computer Science project is for the student to combine skills acquired in the other Mathematics and Computer Science modules in the production of a substantial project. In doing this, the student will assimilate information from a variety of sources and demonstrate the ability to pursue independent study. It is intended that the project should produce some end product for users other than the author. A collection of course exercises, a literature search or a descriptive evaluation would not be suitable. During the first part of the semester, the student will establish the lines of enquiry to be followed and produce a plan of the work to be carried out. The rest of the semester will be devoted to designing and implementing the end product and writing a final report detailing the progress made. To carry out research into the background to the project undertaken. To establish the nature of the deliverables to be produced by the project, to plan the timescales involved in developing these, and to identify the design issues involved. To implement the end product. To test and evaluate the end product. To write a report on the project.
Computer Science Project
Aims: Students will select a project topic chosen from an area of Computer Science that interests them, and then conduct two semesters worth of individual study of that topic, resulting in a substantial written dissertation. Projects should be of a problem solving nature; typically they will provide a software solution to a practical computing problem.
It is intended that the project should also produce an end product, usually a software system, for users other than the author. Further, a theoretical essay, a literature search, or a descriptive evaluation, by themselves, would not be suitable.
Distributed Systems and Applications
Aims: At the end of this module, students will be able to: tackle distributed programming issues and analyse problems that require distribution of resources/computations; analyse and choose among the middleware models described in the course; understand and tackle issues like multi-threading and transactional interactions in distributed application;
apply principles of component-based distributed programming (e.g., with respect to technologies like Java RMI, J2EE, CORBA, technology).
System Modelling
Aims: This module aims to give students a hands-on experience with methods, languages and software tools used in industry for the specification and design of a wide range of systems (software, hardware, business process/workflow, embedded systems, etc.). Two different type of specification languages will be chosen that are often used in conjunction
for describing different aspects of systems: the notation Z (extended with OO and time), which is suitable for describing transformational aspects, i.e. how the actions of a system operate on data; CSP is a process language that allows to describe the reactive behaviour of systems, i.e. the processes as part of which actions are executed and the communication channels through which processes communicate.
Software Measurement and Quality Assurance
Aims: The module approaches the issue of quality assurance in the software development process at an advanced level. This includes a rigorous account of the strategies for software testing and quality control, and the introduction of software metrics for quality assurance and project cost estimation. The module is focussed around the notion of software process improvement. Students understand how quality issues affect each aspect of the software development life-cycle. They will know appropriate strategies for software testing and validation, and how to implement them. They will understand the theory of software metrics and have some experience of making software measurements in practice. They will be able to relate quality to the current standards for process improvement.
Compression Methods for Multimedia
Aims: To study methods for compression of symbolic data as well as audio, image and video data. To gain an appreciation of the ubiquity and importance of compression technologies. Students should achieve: broad knowledge of compression techniques as well as the mathematical foundations of data compression; factual knowledge about existing compression standards or commonly-used compression utilities; understanding of the ubiquity and importance of compression technologies in today's environment; elementary understanding of the need for modelling data and the underlying issues.
Web Technologies
Aims: The aim of this course is to teach the students the technologies and techniques for creating largescale systems on theWWW.We consider these large scale distributed systems in the context of how they emerged before concentrating on two specific aspects: Java servlets and XML data representation and processing. At the end of the course the student should be able to: Understand the architectural foundations forWeb Technologies, use XML based techniques appropriately to create documents and handle data, be aware of security and session handling issues and use supporting techniques, understand Java servlet technolgy and use it to create web applications.
Cryptography and Internet Security
Aims: This course will equip students with the knowledge required to build cryptographically secure applications in Java, and the knowledge of common security problems and solutions in Internet applications. At the end of this module, students will be able to: describe the working principles of modern public-key cryptosystems; build cryptographically secure network applications using Java’s cryptographic extensions; and describe the basic security principles of some internet applications relying on cryptographic mechanisms.
Computer Science with Management Project
Aims: Students will select a project topic chosen from an area of Computer Science (possibly with connections to Management or Business) that interests them, and then conduct thirty credits worth of individual study of that topic, resulting in a substantial written dissertation. Projects should be of a problem solving nature; typically they will provide a software solution to a practical computing problem. It is intended that the project should also produce an end product, usually a software system, for users other than the author. Further, a theoretical essay, a literature search, or a descriptive evaluation, by themselves, would not be suitable.

![[The University of Leicester]](../../images/unilogo.gif)