MOBILE COMPUTING - 2019/0
Module code: COM1032
This module aims at allowing students to acquire the knowledge and design skills of operating systems including servers and desktops and focusing on mobile and embedded systems as an enabler (use of Android OS as a specific example). It is an introductory course that examines how modern operating systems are architected and implemented. Basic principles of operating systems and computer architectures will be taught coupled together with aspects like process management, memory management, file systems, I/O subsystems, etc. In addition to understanding the evolution of Oss, this course will also include practical programming where students will apply the OS principles taught by examining case studies in mobile platforms focusing on the use of Android API. This will allow students to get a better understanding of mobile computer platforms and recognize the needs of mobile computing users. This part aims to show students that there is more to programming than just building a standalone piece of software. Software can interact with different devices and components and it is important to understand how various components work together on a wireless device. It covers key techniques required to develop mobile applications using Android Programming. It discusses the growing marketplace for mobile apps.
HELAL Manal (Computer Sci)
Number of Credits: 15
ECTS Credits: 7.5
Framework: FHEQ Level 4
JACs code: I320
Module cap (Maximum number of students): N/A
Prerequisites / Co-requisites
This course teaches the basic Operating Systems abstractions, mechanisms, and their implementations and application in the context of Android OS towards the building of efficient Android system applications. The course is split into two major sections where the primary functionalities of OSs will be first taught and then the focus will shift on practical programming and the basics behind Android programming and how core OS aspects including concurrent programming, inter-process communication, file management, etc. can be applied in this context. The first part will cover basic principles of operating systems and computer architectures coupled together with aspects like process management, memory management, virtual memory, file systems, I/O subsystems and device management, virtualization and security. The second part will focus on understanding the key principles and methods for delivering and maintaining efficient Android system applications that fully leverage the OS principles taught in the first part of the course.
Indicative content includes:
• Operating System Concepts and Background
• Systems programming and architecture review, CPU instruction set, registers, main memory, programs, compilers, assembly and machine code
• Memory layout produced by various compilers, run-time stack
• Process and Thread Management
• Resource Management and Communication
• Basics of programming on Android OS
• Building Android Applications and how to manage resources allocated and scheduling requests
• Mobile Application lifecycle
• Broadcast receivers and services
• Active state, shared preferences and files
• Embedded peripherals, including GPS and camera
• Commercial mobile application development
|Assessment type||Unit of assessment||Weighting|
|Coursework||COURSEWORK 1 (INDIVIDUAL)||40|
|Coursework||COURSEWORK 2 (INDIVIDUAL)||60|
The assessment strategy is designed to provide students with the opportunity to demonstrate
· A clear understanding of key Operating Systems principles and mechanisms.
· The ability to put theoretical OS concepts into practice by examining case studies in mobile platforms focusing on the use of Android API.
· A clear understanding of key mobile technology concepts and key techniques required to develop efficient Android system applications using Android programming.
· The ability to evaluate the student's understanding of OS issues (i.e., process management, resource management and communication, etc.) relating to embedded systems such as mobile devices.
· The ability to develop, evaluate and test a mobile application.
Thus, the summative assessment for this module consists of:
· CW1: Individual coursework (40%). This coursework tests LO1 and LO4.
· CW2: Individual coursework (60%). This coursework tests LO1, LO2, LO3 in a practical setting.
The two assessments will be due around Week 7 (CW1) and Week 12 (CW2). Both are individual pieces of work. The first is to ensure that all students achieve a basic understanding of OS concepts and the second coursework supports the flexibility for students to demonstrate their own creativity. The feedback from CW1 will be used by students to prepare for CW2 and to reflect on the feedback and to put it into practice. The assessment is coursework based as it takes time to develop applications.
Formative assessment and feedback
Feedback will be given to students via the discussion board and students are encouraged to submit example applications on the forum to share with other students to support learning. Each lab session offers the opportunity for immediate feedback and students are able to compare their solutions to the sample solutions. Feedback on CW1 will inform students about how to deepen their understanding in order to apply their knowledge in CW2.
- Introduce the basic principles of Operating Systems and computer architectures coupled together with aspects like process management, memory management, file systems, I/O subsystems, etc.
- Practical application of OS principles by examining case studies in mobile platforms focusing on the use of Android API.
- Experience of using a development environment and emulator for mobile devices.
- Provide insights in more advanced Android programming principles and experience in developing and maintaining efficient Android system applications that fully leverage the OS principles taught.
- Develop the students' understanding of OS issues (i.e., process and thread management, resource management and communication, etc.) relating to embedded systems such as mobile devices
|001||Understand the fundamental of Operating System principles, abstractions, mechanisms and their implementations.||KC|
|002||Design, develop and test a working application on a mobile device focusing on the use and primary functionalities of the Android OS.||KPT|
|003||Utilise the advanced features of Android OS in the context of how memory is managed, how tasks are scheduled, how interrupts are handled, file systems, I/O subsystems, etc. and put these concepts into practice by building (optimized) Android system applications.||KPT|
|004||Appreciate the complexities of OS issues (i.e., process and thread management, resource management and communication, etc.) in deploying commercial mobile applications and leading edge developments in the mobile application marketplace.||KC|
C - Cognitive/analytical
K - Subject knowledge
T - Transferable skills
P - Professional/Practical skills
Overall student workload
Independent Study Hours: 106
Lecture Hours: 22
Laboratory Hours: 22
Methods of Teaching / Learning
The learning and teaching strategy is designed to:
Help students to gain an understanding of the basic Operating System principles, abstractions, mechanisms and their implementations and apply this knowledge through specific case studies in mobile platforms focusing on the use and primary functionalities of embedded OSs, namely the Android API. It is build around an integration of lectures and lab sessions that puts the theory of the OS principles taught (i.e., how memory is managed, how tasks are scheduled, what interrupts are and how they are handled, file systems, etc.) into practice by building (optimized) mobile applications. The lectures will include guest lectures from industry experts in order to incorporate an industrial perspective of commercial mobile application development and the aspects looked when trying to design efficient Android system applications. This further reinforces the awareness of professionalism within our programme.
The two assessments are designed to assess the basic fundamentals of Operating Systems and the application of OS primary functionalities in the context of Android API and also to explore more advanced topics in Android programming including concurrent programming (threads and synchronization), inter process communication, etc. The students’ understanding of multi-threading will be transferrable to other modules in the programme, for example at FHEQ Level 5.
The course builds upon a reasonable background knowledge of Java.
The learning and teaching methods include:
• 2h lectures per week (including guest lectures)
• 2h lab session per week
• Use of online discussion forum
• Self-study to explore more advanced topics in Android programming
Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.
Reading list for MOBILE COMPUTING : http://aspire.surrey.ac.uk/modules/com1032
Programmes this module appears in
|Computer Science BSc (Hons)||2||Compulsory||A weighted aggregate mark of 40% is required to pass the module|
Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2019/0 academic year.