ECM1400 Programming Continuous Assessment 2
Date set: 16th November, 2019
Handin date: 11:59am Friday 15th November, 2019
This continuous assessment CA comprises 25 of the overall module assessment.
Note that both paper BART and electronic submissions are required and instructions are provided at the end of the specification. The specification will be discussed in the lecture on Friday 18th October 2019. Students have until 25th October to raise any questions regarding the specification either in lectures or by email. Up to this date the module leader may make adaptations to clarify the assessment. After this date the specification will not change.
This CA is designed to test the programming concepts that we will cover in the first eight weeks of term, particularly variables, builtin types, lists, loops, operators, conditionals, modules, data structures, the event driven design pattern, exceptions, logging and testing.
Specification
Smart systems are automated systems that adapt to input data streams. Alarm clocks are an everyday item that we use to schedule our lives. The scope for a smart alarm clock that knows about our schedule for the day, knows what the weather will be and can tell the time has the potential to be very useful. In this assignment you will implement a smart alarm clock.
The implementation of an alarm clock is not like a typical python script you may have developed before. An alarm clock will need to run continuously and respond to events rather than responding inline with user inputs. These events can be scheduled by the user or triggers by extenal events and require an event driven software architecture that uses scheduled tasks. Your smart alarm will have a series of features defined below and use the modules specified to achieve this smart event driven behaviour.
Alarms
The program should enable the user to schedule and cancel alarms. The alarm should notify the user when the relevant time is reached. Alarms functionality should be defined using the sched and time modules.
10 marks
Notifications
A key part of an alarm is notifying the user to an event. For user announcements we will use
ECM1400 Programming Coursework Assessment 2
texttospeech voice announcements using the pyttsx3 module. For less immidiate notifica tions, silent notifications will be tracked through a personal notification queue.
10 marks
Smartness
To make your alarm clock adaptable it will need some smarts. The intelligence in your system will be achieved by pulling information from the internet and merging it with local information such as scheduled alarms. This information used should include both private data, such as events scheduled in your outlook calendar, and public information such as news and weather events. You should pull in calendar events from your oce 365 account using the O365 module and MicrosoftGraph API. Only allow the API access to your calendar events. Do not include any mail, contacts or file sharing functions as this represents an unncessary security risk. Pull in the weather and news data using the request module and the Openweathermap API https:openweathermap.org and News APIhttps:newsapi.org.
Note:Sensitive information, such as api keys and other user credentials, should
always be stored in a configuration file and never in the source code.Passwords
should not be needed and should never be included in source code.
10 marks
Logging
A central functionality in any event driven architecture is tracking and handling events. This means the system should be executing tasks remotely, while you arent watching. Logging is therefore an important feature that will make the program accountability and make it possible to trace behaviour and recover state. You should log all events that happen in your smart alarm and categorise dierent types of event that may be treated in dierent ways.
10 marks
User interface
All smart systems are designed with automation in mind so the interface should should be minimal, however, the user needs to turn the alarm o and set alarms. Implement a basic web interface using the flask module that runs on localhost. The interface should enable the user to set alarms, silence alarms and see basic information, such as notifications about passive events.
10 marks
A testing framework
As your software will depend on third party services and is designed to run continuously there is a good chance errors will occur while the program is deployed. As part of your code you should include unit testing for each of your functions and include a deployment test cycle as well as scheduling tests to regularly check the functionality of your program.
10 marks
You should carefully follow the functionality described and use the modules recommended in each section. If you design a program with a dierent structure or depend on alternative modules you will not attract as many marks.
2
ECM1400 Programming Coursework Assessment 2
Submitting your work
The CA requires both paper and electronic submissions.
Paper You should submit a paper copy of your formatted source code and a single screenshot of your user interface to the Harrison Student Services Oce in the foyer of the Harrison Building by the deadline of 11:59am Friday 15th November, 2019.
Paper submissions should have the BART cover sheet securely attached to the front and should be anonymous contain your student rather than your name.
Electronic You should submit your source code and any supporting files via the electronic submis sion system at http:empslocal.ex.ac.uksubmit. Use the category containing ECM1400 and CA2. Upload a compressed version of your files as a single file, use the zip compression format.
After you click proceed you will be sent an email by the submit system asking you to confirm your submission by following a link. Your submission is not confirmed until you do this. It is best to do it straightaway, but there is a few hours leeway after the deadline has passed. It is also possible to unsubmit and resubmit electronic courseworkfollow the instructions on the submission website.
Both paper and online submissions must be completed by the deadline else your submissions will be considered late and your mark will be capped at 40.
3
Reviews
There are no reviews yet.