The National Software Academy, a part of the School of Computer Science and Informatics, has a strong and active industrial focus, which informs and directs all teaching. We are committed to providing students with teaching of the highest standard.
Key skills are taught through lecturer-led sessions typically with a high proportion of hands-on, practical learning, using current commercial tools and techniques. You will be given a set of concepts and examples, and are then challenged with one or more problems on which you can apply your new skills.
You will often work together to apply your knowledge to achieve solutions to real-world problems in a project-based learning approach. Ample time for mentoring is provided in the timetable, which complements the expected (and significant) self-study that is required. Further learning is provided through industrial talks or additional mentoring.
How will I be supported?
The School of Computer Science and Informatics prides itself on offering a comprehensive support structure to ensure positive student/staff relationships. You will be assigned a member of staff to act as your personal tutor, who will serve as a point of contact to advise on both academic and personal matters in an informal and confidential manner.
The course makes use of Cardiff University's Virtual Learning Environment (VLE) Learning Central to provide course materials, and additional information is provided online.
The style of course delivery and the focus on projects means that you will receive regular support both from academic staff and also from industry professionals.
Although the delivery of the course will take place in Newport, you will be encouraged to base yourself in Cardiff in order to take advantage of everything that it has to offer, both in terms of the University facilities (Libraries, Halls of Residence, Student Union etc.) and the wider city.
You will also have full access to the 24-hour computing facilities in the School of Computer Science and Informatics.
You will have access to the full range of services provided by the University's Student Support Service: http://www.cardiff.ac.uk/studentsupport/
How will I be assessed?
Teaching is organised into modules. Your progress in each module will be assessed during, or at the end of, the semester in which it is taught. All modules include assessments, the methods of which vary from written examinations and assessed coursework, to a combination of both. Coursework is the preferred method on this degree with your project work being central to this.
The project portfolio is the primary means of assessment for many modules. It consists of a sample of student work, with written explanation and/or reflection. This covers the entire software development lifecycle, depending on the learning objectives of the module for example: requirements, documentation, technical specifications, code, tests, sprint plans, user stories, screenshots of products, and user feedback. You will use the project portfolios to demonstrate your understanding of all relevant theory, and how it has been applied.
A timed computing exercise fulfils a similar purpose, where students undertake a programming, or other software development assignment, working independently, during a set period.
Exams are also used to assess knowledge and understanding more directly. Other forms of assessment during the course include undertaking reflective reports, business cases and presenting to clients and peers, which draw upon your experience of project work.
Feedback:
Students have many opportunities for feedback during contact sessions. You will be involved in giving feedback in activities such as code reviews, retrospectives and self-assessment. Additionally, you will receive feedback from teaching staff, industry professionals and project stakeholders; providing you with experience of the real-life feedback that you may encounter when you find employment.
What skills will I practise and develop?
The skills developed on this course mirror the complete software lifecycle, covering everything needed for professional work, including:
- Meeting with customers and gathering their requirements.
- Managing projects, timescales and software teams for the delivery of real projects.
- Effectively communicating technical and non-technical ideas to a range of audiences, verbally and in writing.
- Analysing requirements and applying current software engineering concepts and knowledge of technology to develop useful products -- and make them scalable, robust and secure.
- Fluency in industry-standard programming languages and confidence working with a range of operating systems.
- Ability to confidently use industry-standard tools such as IDEs, DBMSs and source control.
- Debugging and testing code to fix bugs and defects.
- Design and implementing relational and NoSQL database systems for real projects.
- Securing database systems, network communication and web-applications.
- An intuition for software design and code quality, and an ability to think like a developer, making pragmatic engineering judgements and trade-offs in a fast-paced commercial environment.
- Reviewing code and giving effective feedback and mentoring to colleagues.
- Deploying and launching products and services, supporting real users.
Knowledge & Understanding:
Upon completion of the Programme a typical student will be able to demonstrate the ability to apply their knowledge/understanding of:
- Concepts, syntax, and language features common to a range of computer programming languages used in industry.
- Appropriate tools and techniques to design, write, debug, test, manage and deploy code; as well as to manage a commercial software development process such as Agile.
- Technical knowledge of a variety of platforms and technologies used in industry.
- A deep understanding of what constitutes good quality code.
- Cutting-edge technologies and trends in selected research areas of computing.
- Understanding of a range of 3rd party libraries, frameworks, and large commercial codebases.
Intellectual Skills:
Upon completion of the Programme a typical student should be able to:
- Evaluate the available options to select the most suitable tools and techniques for use in each stage of software development;
- Analyse complex problems effectively, identify edge cases, inconsistencies, potential pitfalls, and other issues.
- Think critically about software design, exercise engineering judgement in the context of writing and developing software.
- Sustain a critical argument, in writing, presentation and group discussion. Solve unseen problems, iteratively; by identifying a starting point and developing a solution incrementally.
Professional Practical Skills:
Upon completion of the Programme a typical student should be able to:
- Use current commercial planning tools and techniques to plan, schedule and manage a commercial software development project and track the project during its lifecycle.
- Gather, analyse and prioritise appropriate functional and non-functional requirements during meetings with real customers using commercial tools and techniques and consider quality and other constraints.
- Design, write, test, debug, manage and deploy code productively on large projects in a commercial, team context.
- Work with a variety of platforms (cloud, mobile, web) using a range of languages, technologies, and tools.
Transferable/Key Skills:
Upon completion of the Programme a typical student should be able to:
- Critically appraise her or his own work and the work of others, through written and verbal means;
- Clearly and efficiently communicate complex ideas, principles and theories effectively by oral, written and practical means - to a range of audiences, most notably industrial customers.
- Work and learn effectively in a team and as an individual;
- Appreciate opportunities for career development and lifelong learning by participating in the University's Personal and Career Development Programme and by building up a life-long support network of industrial contacts;
- Undertake independent study, and critical reflection.