COMP23420 Software Engineering syllabus 2018-2019
The development of software systems is a challenging process. Customers expect reliable and easy to use software to be developed within a set budget and to a tight deadline. As we come to depend upon software in so many aspects of our lives, its increasing size and complexity, together with more demanding users, means the consequences of failure are increasingly severe. The stakes for today’s software engineers are high!
Experience over the last decades has taught us that software development failures are rarely caused by small scale coding problems. Instead, failures result from the difficulties of writing software that customers actually need, of keeping up with constantly changing requirements, of coping with the scale of large developments, of getting many different people with very different skill sets to work together, and of working with large bodies of existing code that no one on your team may fully understand. Being a good coder is an important part of being a good software engineer, but there are many other skills - including soft skills - that are needed too.
In this course unit, you will get the chance to expand and broaden the programming skills you gained in your first year course units by applying them in a more realistic context than is possible in a small scale lab. Instead of coding from scratch, you will be working in a team to make changes to a large open source software system, consisting of thousands of classes and tens of thousands of files - and all without breaking the existing functionality.
You will fix bugs in the code base and add new features, as well as performing larger scale refactorings to maintain or improve on non-functionality properties of the system. You will perform all this using an industry strength tool set. We will complement the hands-on experience-based learning with an understanding of the core concepts underlying current notions of software engineering best practice. Volunteer mentors from local industry will help you to put your learning into context, and to understand the key importance of being not just a good coder, but a good software engineer.
In the second semester, you will spend time developing a significant application in teams, which will need to meet user requirements and demonstrate value to the customer. Throughout, there will be a focus on continuous improvement, of both the quality of your code, and your team working practices.
This unit aims to help students appreciate the reality of team-based software development in an industrial environment, with customer needs, budget constraints and delivery schedules to be met. Through hands-on experience with an industry-strength development toolkit applied to a large open source software system, students will gain an appreciation of the challenges of green and brownfield software development, along with an understanding of the core software engineering concepts that underpin current best practice. Students will have the core skill set needed by a practicing software engineer, and will be ready to become productive and valuable members of any modern software team.
The COMP23420 course unit as a whole is assessed across 2 semesters. Each semester is weighted equally, and so contributes 50% of the total course unit mark.
In semester 1, assessment is based on:
- Three team-based exercises, based around making changes to the open source system used in the course unit. Together these contribute towards 30% of the total course unit mark.
- Three individual exercises, in which students apply the Personal Software Process to practice software measurement and continuous improvement skills. Together, these contribute towards 5% of the total course unit mark.
- A multiple choice examination, at the end of the semester. This contributes towards 15% of the total course unit mark.
In semester 2, assessment is based on:
- A single team project, based around the development of a substantial web application. There is a single assessment point at the end of the semester, worth 30% of the total mark, with continuous formative feedback throughout the course unit.
- A multiple choice exam at the end of the semester. This contributes 20% of the total course unit mark.
The following is an outline of the topics covered in COMP23420.
- Team software development
- Software project planning and issue tracking
- Greenfield vs brownfield software development
- Git best practices and common Git workflows
- Automated build tools and release management
- Automated unit, integration and acceptance testing
- Test code quality and test coverage tools
- Continuous integration and testing tools
- Best practices and tool support for code review, including source code quality tools
- Design patterns and common architectural patterns
- Design for testability
- Refactoring for code quality
- Safely migrating software functionality
- Basic risk management techniques
- Working with open source software systems
- User experience
- Working with external services
1 introductory lecture in semester 1, week 1.
One 2 hour workshop each week. In these sessions, you will gain practical, hands-on experience of the techniques being taught.
In semester 2, workshops are directly linked to your lab work. The final session will be a showcase where you demonstrate your software for marking.
Team Study Sessions
Two 1 hour sessions per week. In these sessions you will:
- Work with your team on the team coursework
- Meet your industrial mentor (2 sessions per semester per team)
- Get your team coursework marked in a face-to-face interview (3 sessions per team in the first semester).
A number of off-line study activities and readings are provided, that build on and consolidate the topics covered in workshops.
Staff and TAs will be on hand to provide face-to-face informal feedback during workshops and team study sessions.
The RoboTA system will provide continuous feedback on aspects of the team marking system, using the Jenkins continuous integration system.
TAs will also provide written and verbal feedback on coursework, once marking is complete.
- Lectures (2 hours)
- Practical classes & workshops (44 hours)
- Analytical skills
- Group/team working
- Project management
- Oral communication
- Problem solving
- Written communication
Learning outcomes are unknown for COMP23420.
COMP23420 does not have a specified reading list.
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.