Skip to navigation | Skip to main content | Skip to footer
Menu
Menu

COMP23311 Software Engineering 1 syllabus 2017-2018

COMP23311 materials

COMP23311 Software Engineering 1

Level 2
Credits: 10
Enrolled students: 258

Course leader: Suzanne Embury


Additional staff: view all staff

Requisites

  • Pre-Requisite (Compulsory): COMP16121
  • Pre-Requisite (Compulsory): COMP16212

Additional requirements

  • Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.

Assessment methods

  • 30% Written exam
  • 70% Practical skills assessment
Timetable
SemesterEventLocationDayTimeGroup
w0 Lecture 1.1 Tue 09:30 - 11:30 -
w0 LUNCH 1.10 Tue 11:00 - 14:00 -
w0 WELCOME 2.19 Tue 12:00 - 16:00 -
w0 WELCOME Collab Tue 12:00 - 16:00 -
w0 WELCOME IT407 Tue 12:00 - 16:00 -
Sem 1 TEAM STUDY 1.8 Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY 2.25A Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY Collab Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY G41 Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY LF17 Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY LF5 Thu 13:00 - 14:00 -
Sem 1 TEAM STUDY LF6 Thu 13:00 - 14:00 -
Sem 1 w1-3,5,7-12 Workshop G23 Wed 09:00 - 11:00 G
Sem 1 w1-3,5,7-12 Workshop G23 Fri 09:00 - 11:00 F
Sem 1 w1-3,5,7-12 Workshop G23 Fri 11:00 - 13:00 H
Sem 1 w1 Lecture 1.1 Tue 13:00 - 14:00 -
Sem 1 w2-5,7-11 TEAM STUDY 1.8 Tue 13:00 - 14:00 -
Sem 1 w2-5,7-11 TEAM STUDY G23 Tue 13:00 - 14:00 -
Sem 1 w2-5,7-11 TEAM STUDY G41 Tue 13:00 - 14:00 -
Sem 1 w2-5,7-11 TEAM STUDY LF5 Tue 13:00 - 14:00 -
Sem 1 w2-5,7-11 TEAM STUDY LF6 Tue 13:00 - 14:00 -
Sem 1 w2 TEAM STUDY IT407 Tue 13:00 - 14:00 -
Sem 1 w3+ TEAM STUDY Collab Tue 13:00 - 14:00 -
Sem 1 w4 Workshop Collab Fri 09:00 - 11:00 F
Sem 1 w4 Workshop Collab Wed 09:00 - 11:00 G
Sem 1 w4 Workshop Collab Fri 11:00 - 13:00 H
Sem 1 w5,9,12 TEAM STUDY Collab 1 Tue 12:00 - 13:00 -
Themes to which this unit belongs
  • Software Engineering
  • Agile Methods

Overview

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.

Aims

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.

Assessment is based on:

  1. Three team-based exercises, making changes to the open source system used in the course unit.  Together these contribute towards 60% of the total course unit mark.
  2. Two individual coursework exercises together contributing towards 10% of the mark for the course unit.
  3. A multiple choice examination, at the end of the semester.  This contributes towards 30% of the total course unit mark.

Syllabus

 

The following is an outline of the topics covered in COMP23111.

  • 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

 

Deadlines

Team coursework deadlines on 20th October 2017, 17th November 2017 and 8th December 2017. Marking interviews for the team coursework take place in weeks 5, 9 and 12. The whole team is expected to be present. Individual coursework to be submitted on Fridays (5pm) in week 5 and week 12.

Teaching methods

Lectures
1 introductory lecture in semester 1, week 1.

Workshops
One 2 hour workshop each week.  In these sessions, you will gain practical, hands-on experience of the techniques being taught.

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 team)
  • Get your team coursework marked in a face-to-face interview (3 sessions per team).

Offline Study
A number of off-line study activities and readings are provided, that build on and consolidate the topics covered in workshops.  These are compulsory and are assessed in the coursework and exam.

Feedback methods

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.

Study hours

  • Lectures (1 hours)
  • Practical classes & workshops (64 hours)

Employability skills

  • Analytical skills
  • Group/team working
  • Innovation/creativity
  • Leadership
  • Project management
  • Oral communication
  • Problem solving
  • Written communication

Learning outcomes

Programme outcomeUnit learning outcomesAssessment
A2 A4 B2 C6Make use of industry standard tools for version management, issue tracking, automated build, unit testing, code quality management, code review and continuous integration.
  • Group coursework
A2 A4 C5Write unit tests to reveal a bug or describe a new feature to be added to a system, using a test-first coding approach.
  • Examination
  • Group coursework
A2 A4 D3Explain the value of code reviews, and to write constructive and helpful reviews of code written by others.
  • Group coursework
  • Examination
A2 A4 D3Make use of basic Git workflows to coordinate parallel development on a code base, and to maintain the quality and integrity of code scheduled for release.
  • Group coursework
  • Examination
A2 C5Explain the role of patterns (design and architectural) in creating large code bases that will be maintainable over the long term.
  • Examination
  • Group coursework
A2 B3 C5Explain why code that is easy to test is easy to maintain, and make use of test code smells in identifying and correcting design flaws (design for testability).
  • Group coursework
  • Examination
A2 A4 B3 C5Apply basic refactorings with the aim of maintaining or improving code quality.
  • Group coursework
  • Examination
A2 D3Explain the challenges inherent in cost estimation for software development, and create defensible estimates with the help of work breakdown structures.
  • Examination
  • Group coursework

Reading list

TitleAuthorISBNPublisherYearCore
Pro Git (2nd edition)Chacon, Scott and Ben Straub9781484200773APress2014
Beginning software engineeringStephens, Rod9781118969144Wrox2015
Effective unit testing: a guide for Java developersKoskela, Lasse9781935182573Manning Publications2013
Clean code: a handbook of agile software craftsmanshipMartin, Robert C.9780132350884Prentice Hall2008
Pragmatic programmer: from journeyman to masterHunt, Andrew and David Thomas9780201616224Addison Wesley1999
Clean coder: a code of conduct for professional programmersMartin, Robert C.9780137081073Prentice Hall2011

Additional notes

Course unit materials

Links to course unit teaching materials can be found on the School of Computer Science website for current students.