Université d’Ottawa Faculté de génie
École de science d’informatique
et de génie électrique
University of Ottawa Faculty of Engineering
School of Electrical Engineering and Computer Science
Assignment 3
CSI2120 Programming Paradigms Winter 2020
Due on April 5th before 11:00 pm in Virtual Campus
6 marks
There are [11 points] in this assignment. The assignment is worth 6% of your final mark.
All code must be submitted in a scm file. Screenshots, files in a format of a word editor, pdfs, handwritten solutions, etc. will not be marked and receive an automatic 0.
Question 1. Filter and Map [1 point]
Use the built-in filter and map to change a list as follows
Drop each number between -1 and +1 inclusive
For each number greater than 1 replace the number with 10 times the number.
For each number smaller than -1 replace the number with the absolute value of the reciprocal.
(changeList ‘(0 -2 3 -4 1)) '( 1/2 30 1/4 )
Question 2. List Processing [2 points]
Find the longest sub-list of numbers which are identical and return this sub-list.
In case of a tie, return the sub-list occurring last.
(sameNum ‘( 0 1 5 3 3 3 2 1 1)) '( 3 3 3)
(sameNum ‘( 0 1 5 3 3 3 2 1 1 1)) '( 1 1 1)
CSI 2120 page 2 _________________________________________________________________________________________________
Question 3. Travellers [4 points]
Implement a function destination that tallies the vote for where a group of friends want to travel to.
Each friend votes for three destinations. The result needs to be a list containing all destinations that received the most votes (ties are possible).
Examples:
(define choices ‘(‘(“marie” ‘(“peru” “greece” “vietnam”))
‘(“jean” ‘(“greece” “peru” “vietnam”))
‘(“sasha” ‘(“vietnam” “peru” “greece”))
‘(“helena” ‘(“peru” “vietnam” “greece”))
‘(“emma” ‘(“greece” “peru” “vietnam”))))
(destination choices) '((“peru” . 13))
(define choices ‘(‘(“marie” ‘(“peru” “greece” “vietnam”))
‘(“jean” ‘(“greece” “peru” “vietnam”))
‘(“sasha” ‘(“vietnam” “peru” “greece”))
‘(“helena” ‘(“peru” “vietnam” “greece”))
‘(“emma” (“greece” “peru” “vietnam”))
‘(“jane” (“greece” “vietnam” “peru”))))
(destination choices)
'((“peru” . 13) (“greece” . 13))
You are allowed extra global helper functions.
CSI 2120 page 3 _________________________________________________________________________________________________
Question 4. Neural Network [4 points]
Write a program that simulates a Neural Network in Scheme. We use what is called a multilayer perceptron with 1 hidden layer with an input and output layer. Each neuron calculates the weighted sum of its input (including an offset) and applies an activation function. Consider the figure below. for the example of a slice of size 2.
Output Layer
Hidden Layer 1 Input Layer
𝑇 1
𝑍1
𝑍2
𝑍3
In the above example the equation for the first hidden neuron 𝑍1 = 𝜎(𝛼10 + 𝛼11𝑋1 + 𝑎12𝑋2). The equation for the output neuron is 𝑇 = 𝜎(𝛽 + 𝛽 𝑍 + 𝛽 𝑍 + 𝛽 𝑍 ). The inputs 𝑋 and 𝑋 simply
𝑋 112
1 10 111 122 133 1
2
pass their value to all hidden layers.
Your program must create exactly he network shown above with the following parameters
𝛼10 =0.1 𝛼11 =0.3 𝑎12 =0.4 𝛼20 =0.5 𝛼21 =0.8 𝑎22 =0.3 𝛼30 = 0.7 𝛼31 = 0.6 𝑎32 = 0.6
𝛽10 =0.5 𝛽11 =0.3 𝛽12 =0.7 𝛽13 =0.1
a) Implement a neural network node which takes a list of weights and an activation function. The function is to return a function accepting a list of input values.
(neuralNode ‘(0.1 0.3 0.4) sigmoid) #
𝑋
CSI 2120 page 4 _________________________________________________________________________________________________
b) Use your neuralNode function to implement one layer of the neural network shown in the above figure. Use the sigmoid function 𝜎(𝑣) = 1 as the activation function.
1+𝑒 −𝑣
Example (hidden layer)
(neuralLayer ‘((0.1 0.3 0.4)(0.5 0.8 0.3)(0.7 0.6 0.6))) #
0.5))
'(0.610639233949222 0.740774899182154 0.7858349830425586)
c) Use your neuralLayer function to implement the complete neural network shown in the
above figure. Use the sigmoid function 𝜎(𝑣) = 1 as the activation function. 1+𝑒 −𝑣
(neuralNet ‘(0.5 0.5)) ‘(0.782503850784443)
d) Write a function that takes as input a parameter k determining the number of times the neural network is run. Your program must apply the neural network to a series of input values and calculate the network output for each pair of input values in a loop. These input values are 𝑋1,𝑘 =
sin 2𝜋(𝑘−1) and 𝑋2,𝑘 = cos 2𝜋(𝑘−1) where 𝑘 = 1 … 𝑁 is the index of the current loop variable. 𝑁𝑁
The function must return all calculated output values in a list.
(applyNet 16)
'(0.7770060393971061 0.7853501263409901 0.7897263070205873
0.7902968594617558 0.7872242379440337 0.7805159297515977
0.7702872231675277 0.7573421434408293 0.7436542255881534
0.7320120209466757 0.7248686717891844 0.7235344799330423
0.7281858924381838 0.7380276807952172 0.7512282131381334
0.765101793865149)
Note that your output formatting may look different (number of digits and or line breaks)