School of Computer Science and Statistics
CS1022 / Introduction to Computing II
CSU11022 Introduction to Computing II
End-of-Semester Assignment
Jonathan Dukes – 17 April 2020
Instructions
This assignment will contribute 50% of your final mark for CSU11022.
You must submit your solution using Blackboard no later than 23:59 (Irish Time) on Monday,
11th May, 2020.
This is an individual assignment. Tools such as TurnItIn or SafeAssign may be used to measure
similarity. If you use external sources to support your solutions, these should be referenced
appropriately.
The assignment is intended to take you approximately 7 hours to complete.
Submission checklist:
Declaration A declaration, using the template provided, that the work submitted is your
own. Add your name and the date to the template before submitting it. Your solution will
only be admissible if it includes this declaration.
Document A single document containing the written parts of your solution. The document
must be in PDF format using a 12pt sans serif font (e.g. Calibri, Helvetica) and 1.5 line
spacing.
Your Assembly Language programs should not be included in this document and should
instead be submitted separately (see below).
Please observe any specified word count limits as excess words will incur a penalty.
Code Your ARM Assembly Language source files (MagicSquare.s and ChessClock.s).
Include appropriate comments.
Video A narrated video demonstrating your solution to the Chess Clock problem. On
Windows platforms, you might use the Xbox Game Bar to create a screen recording. On
Mac platforms (where you are using VMWare or similar) you can create a screen recording
using 5 or the QuickTime Player application. Similar tools are available to create
screen recordings on Linux platforms.
Page 1 of 2
School of Computer Science and Statistics
CS1022 / Introduction to Computing II
1 Magic Squares [50 Marks]
Design and write an ARM Assembly Language subroutine, isMagic(...), that will determine
whether a square two-dimensional array in memory is a Magic Square [1].
You must provide the following:
(i) Detailed documentation, including your interpretation of the problem and an explanation
of the approach you have used. If you have decomposed the problem into supporting
subroutines, you should explain this. Your documentation should be supported by pseudo-
code, examples and diagrams. [20 marks, max: 1,000 words]
(ii) Your ARM Assembly Language subroutine and a program that tests your subroutine using
a number of different Magic Squares. [25 marks]
(iii) A discussion of the performance (or efficiency) of your approach and how it might be
improved. [5 marks, max: 250 words]
2 Chess Clock [50 marks]
Design and write an ARM Assembly Language program that will implement a Chess Clock [2] using
an LPC2468 microcontroller. Your implementation must make use of GPIO and interrupts.
You must provide the following:
(i) Detailed documentation, including your interpretation of the problem and an explanation
of the approach you have used. Your documentation should be supported by pseudo-code,
examples and diagrams. [20 marks, max: 1,000 words]
(ii) Your ARM Assembly Language program, including any interrupt handlers that you imple-
ment. [25 marks]
(iii) A short video demonstrating your Chess Clock. The video should be no longer than 60 sec-
onds. You may either submit the video as a file attachment or as a link to a service such
as YouTube. [5 marks]
References
[1] E. W. Weisstein, “Magic square.” https://mathworld.wolfram.com/MagicSquare.html.
[2] Wikipedia, “Chess clock.” https://en.wikipedia.org/wiki/Chess_clock.