J V Tucker and K Stephenson, Data, Syntax and Semantics


Student Projects - Guidelines and Examples



Undergraduate Projects in Computer Science

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.

Projects based on the methods of the theory of programming languages

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

  1. design and analysis of its data types and
  2. specification and of the syntax and semantics of its languages.

The subjects have considerable scope for development. It is relatively straight-forward to tackle projects using formal methods for software design and program correctness.


Some Projects on Data Types


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

and  mappings between data types to

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. 




Some Projects on Syntax and Semantics


Musical  notations 

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

Programming Robots

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.


Object-oriented modelling
Contemporary research in programming technology offers many specification projects in, e.g., OO-analysis, API libraries, software architectures, interfaces, data types, tabular documentation.


Scientific computation 

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.



Return to

Top of page   ●●●●   Data, Syntax and Semantics

Page created by J V Tucker, 29 March 2004.