On this page:
Problem 1: Generics and higher-order functions
6.1 The Convolve higher-order function
6.1.1 Practice with higher order functions
6.1.2 The Convolve operation
6.1.3 A Pair sequence
8.5

Lab 6: Higher-order functions

Exam 1 prep: Before beginning the lab problems, please do the Hourglass tutorial at https://hourglass1.khoury.northeastern.edu/. This will allow you to become familiar with the tool we will use for Exam 1 on the 20th. Please use Firefox for using Hourglass.

Goals: The goals of this lab are to practice writing operations using higher-order functions, and implement a new higher-order function.

Problem 1: Generics and higher-order functions

Related files:
  IList.java  

6.1 The Convolve higher-order function

We have seen the following higher-order functions:

You can find an implementation of these operations in the attached code.

6.1.1 Practice with higher order functions

Add templates to the provided IList<T> classes.

Create a list of strings in the ExamplesLists class. The list should contains the months of the year. Write tests for the following, using higher-order functions:

6.1.2 The Convolve operation

The convolve operation is best understood using lists of numbers. Consider two lists W and L of numbers, of the same length. The convolution of these two lists produces a list that represents their per-element combination in some way. For example, a list of numbers C can be produced where each element in C is the product of the respective elements in W and L. If W=[0.3 0.5 0.1 -0.3] and L=[2.0 4.0 3.0 1.0] then C=[0.6 2.0 0.3 -0.3]. Another convolution can be the concatenation: CO=[0.3,2.0 0.5,4.0 0.1,3.0 -0.3,1.0]. If the lists are not the same length, then the length of the result is equal to the smaller of the two lengths. For example if W=[0.3 0.5 0.1] and L=[2.0 4.0 3.0 1.0] then CO=[0.3,2.0 0.5,4.0 0.1,3.0].

Implement the convolve operation on lists. We recommend that you approach this problem as follows:

6.1.3 A Pair sequence

Use the convolve operation to create a list that creates a list of pairs of the objects in the two lists. For example, a list of months of the year and a list of the number of days in each months can be convolved into a list of (month,days) pairs.