Aims:

The primary aim of the module is for students with some prior experience of programming to gain an understanding of the software development processes used to manage software development projects with specific consideration of projects involving data science. It aims to do so through lectures, activities and practical experience of applying the processes to manage a project to specify a software system using industry-recognised techniques. A secondary aim is for the students to gain further experience with computational thinking. They will start by formulating an idea for a computer application and will subsequently translate this into a set of models such that the application could be developed and tested.Learning outcomes:

On successful completion of the module, a student will be able to:

Describe how software development methodologies can be used to manage the software development process, and select and apply an appropriate methodology for a given project.
	Select and apply techniques for capturing and modelling requirements.
	Select and apply techniques for modelling an application; and model an application using these.
	Select the aspects of a software application can be modelled with the Unified Modelling Language (UML); and use UML to model different views of an application.
	Model the design for a database.
	Describe testing and recommend an appropriate approach to testing for a given project.
	Recognise the challenges of working in a team and organise themselves and their group to deliver a complex project.
	Recognise the ethical implications of using data in the context of this course and be aware of their responsibilities to comply with relevant UCL and UK legislation.
	Work in a group to apply the skills and knowledge gained in the course to: a) produce a coherent and cohesive specification for an application; and b) select, install, configure and use a set of open-source tools and use these to support the software development cycle for the application.
	Critically evaluate the processes, methods and models learned in the module.
Content:

The expected module content is set out below and may be varied according to the progress made by the students and/or the length of the module.

Methodologies for managing software development projects, including those for managing data science applications.
	Techniques for requirements gathering and modelling.
	Interface design.
	Database design.
	Application architecture and design patterns.
	Testing techniques and tools.
	DevOps principles, practices and tools.
	Code quality.
	Refactoring.
Requisites:

To be eligible to select this module as optional or elective, a student must: (1) be registered on a programme and year of study for which it is a formally available; and (2) have passed Introduction to Programming (COMP0015) or an equivalent module in Python programming.