In many countries, in the education of computer scientists, it has long been the case that undergraduates in their final year of study undertake a project on their own. Often individual project work carries great weight in the assessing the final grade and in judging a student. In the United Kingdom, and certainly at Swansea, the project is commonly worth a quarter of the credit given in the final year and is used to develop and judge many qualities of the student.
A good project should develop the student's intellect and
It should develop the student's personal competence such as
Students should enjoy their projects and feel a sense of achievement, perhaps, even amazement as to how much they have accomplished.
We have further aims for the project. Projects should bring to maturity the learning of the student at university. They should answer the question how well does the student cope with learning new things and applying them, secure and test the student's knowledge, and give plenty of scope to show how smart he or she is.
Over several years we and our Swansea colleagues have supervised students on projects that build up and apply the subjects of our book Data Syntax and Semantics. Here are some basic guidelines and a few suggestions for projects, all of which have been successfully undertaken by students of different ability.
Data types and languages are to be found everywhere in Computer Science. Thus, there can be no shortage of projects that simply investigate an area of Computer Science by looking at the
The subjects have considerable scope for development. It is relatively straight-forward to tackle projects using formal methods for software design and program correctness.
What is an address?
Central to the unification of computation and communication is the notion of an address; obvious examples are:
This project will study various important kinds of addressing methods using algebraic methods. The role of addresses in the internet is especially interesting. How do you design a data type of addresses. How do you relate two different addressing schemes? Can one give a model that describes the hierarchy of addresses involved in accessing web pages via the internet?
What is colour?
There are many colour models suitable for painting and dying and computing. In the case of computer colour, three models are well known:
How do you design a data type of colour? How do you relate two different colour models? A study of different colour models involve listing operations on colours and examining translations between colours. For which operations are the translations are homomorphisms?
Products and their Bar Codes
Bar codes were introduced in the 1960s and are now commonplace. This project will investigate the story of bar codes, and the different forms of bar encoding and reading. A basic problem is to design data types for
processing bar codes
the products they index
and mappings between data types to
explain their relationship.
Algebras with different signatures and operations need to be compared using signature morphisms.
Constructive Solid Geometry
The algebraic operations and their laws that manipulate solid objects in CSG make an excellent topic for a project on data types and their specification. The semantics introduces the student to topological and metric spaces, too.
This project will investigate the idea that
a score is a program for a set of musical instruments.
In fact, a score is a parallel program and one in which time is an important data type. The syntax and semantics of musical scores will be studied using standard methods from the theory of programming languages. Two linked projects are to specify the syntax and semantics of
MIDI sequences for electronic music.
There are simple languages designed to program simple robots. The idea is to study the specification of a language using the methods of Data Syntax and Semantics. For example, the toy Lego Mindstorms is an interesting example for the area. The project is to investigate languages like Not Quite C, known as NQC, and give them a syntax and semantics which enable them to be formally modelled.
Computability on abstract data types
This project will investigate the study of programmability on abstract data types by various models of computation. Computability theory on the real numbers can be used to analyse computation on geometric data types. Applications to scientific computation, computational geometry, or volume graphics can be made.
Contemporary research in programming technology offers many specification projects in, e.g., OO-analysis, API libraries, software architectures, interfaces, data types, tabular documentation.
Many basic numerical algorithms such as those for matrix calculation and linear algebra are written out in pseudo-code that is, or seems to be, a model extension of the while language with some high-level notations for functions and English text. This project will investigate a number of algorithms and show that further non-deterministic constructs need to be added to the while language.
Synchronous Concurrent Algorithms
Synchronous concurrent algorithms are a general class of algorithms that includes many computational models of physical systems: cellular automata, neural networks and finite difference approximations to PDEs. This project will investigate problems related to the design and specification of SCAs and their scope and limits in modelling the physical world.
Top of page ●●●●
Data, Syntax and Semantics
Page created by J V Tucker, 29 March 2004.