4 Data Representation: Tuples and List of Tuples

A course can be represented by a pair consisting of a course name and a class. Try:
type string == list(char);

type student == string X string;

type class == list(student X num);

c:class;

c <= [(("Fred","Jones"),66),(("Ali","Mohamed"),76),(("Mary","Ward"),92),(("Colin","Gold"),31)];

c;

type course == string X class;

c1: course;

c1 <=("CS1", c);

c2: course;

c2 <=("Maths", [(("Fred","Jones"),36),(("Ali","Mohamed"),56),(("Mary","Ward"),45),(("Colin","Gold"),71)]);

type degreeprogramme == list(course);

cs:degreeprogramme;
cs <= [c1,c2];

cs;

  1. Write a function which returns the number of courses on a degree programme.
  2. Write a function allStudentsInClass:class -> list(student) which returns all students in a class.
  3. Write a function allStudentsOnCourse:course -> list(student) which returns all students on a course.
  4. Write a function allStudentsOnDegreeProgramme:degreeprogramme -> list(student) which returns all students on a degree programme. The easiest way to do it is to append the list of students on each course together and then remove duplicates.
  5. Write a function bestStudentInClass:class -> student which returns the best student in a class. For example bestStudentInClass(c) should return ("Ali","Mohamed").

  6. Write a function bestStudentInCourse:course -> student which returns the best student on a course. For example bestStudentInCourse(c1) should return ("Ali","Mohamed").

  7. Write a function bestStudents:degreeprogramme -> list(string X student) which returns a list of the best students on each course in a a degree programme. For example bestStudents(cs) should return [("CS1",("Ali","Mohamed")),("Maths",("Colin","Gold"))].
  8. Write a function average1:degreeprogramme -> list(string X num) which returns a list of the average marks for each course. For example average1(cs) should return [("CS1",65.25),("Maths",52)].
  9. Write a function average1:degreeprogramme -> list(student X num) that list all students together with there average mark on a degree programme. This function should be sorted in descending order of average mark.

  10. Write a function which works out the number of students on each degree classification.

s.danicic@gold.ac.uk
Sebastian Danicic BSc MSc PhD (Reader in Computer Science)
Dept of Computing, Goldsmiths, University of London, London SE14 6NW
Last updated 2011-03-15