Undergraduate Course: Informatics 2 - Software Engineering and Professional Practice (INFR08032)
|School||School of Informatics
||College||College of Science and Engineering
|Credit level (Normal year taken)||SCQF Level 8 (Year 2 Undergraduate)
||Availability||Not available to visiting students
|Summary||Software Engineering and Professional Practice teaches the practice of small team software development in modern society, equipping students to participate in a startup, modern tech company or a software-dependent research team.
Students will gain experience developing a software system from scratch, using some of the key tools of the trade: analysing requirements, designing and implementing new features, testing, version control.
Professional aspects of Software Engineering - its legal, ethical and social environment, including issues of privacy, security, equality, democracy and intellectual property - will be approached through guest lectures and some practical work.
*** This Course replaces Informatics 2C - Introduction to Software Engineering (INFR08019) from 2020-21***
As students enter this course they team up in groups of two to develop a small-scale software system from scratch using an iterative waterfall process. Over the course of the semester, they consider an incomplete specification to derive and analyse requirements, design their solution from a static and dynamic perspective using UML diagrams, construct and test their solution in Java. There is room for interpretation, creativity, and some of the requirements change along the way. Moreover, there are technical, professional and ethical issues surrounding the problem at hand, on which students will need to reflect.
Included in the experience will be use of industry standard tools for software development (integrated development environments, version control, issue tracking), and key elements of modern development practice, such as code review, peer review, and pair programming.
As students engage in this practical work, the course will contextualise it against the broader themes, both of large-scale software engineering and its academic literature, and of today's urgent professional issues: the legal, ethical and social context in which software and its authors exist. Guest lecturers will speak on technical topics, but also on topics such as privacy, security, equality, democracy and intellectual property - some of which will have a direct impact on students' practical work.
Course Delivery Information
|Academic year 2020/21, Not available to visiting students (SS1)
|Learning and Teaching activities (Further Info)
Lecture Hours 30,
Seminar/Tutorial Hours 4,
Supervised Practical/Workshop/Studio Hours 22,
Feedback/Feedforward Hours 1,
Summative Assessment Hours 2,
Programme Level Learning and Teaching Hours 4,
Directed Learning and Independent Learning Hours
|Assessment (Further Info)
|Additional Information (Assessment)
||Coursework - 100%
The assignment will involve group work, mainly on software development but also on professional issues. The software development component will consist of 3 parts (1. Requirements, 2. Design, 3. Construction and Testing), with the first two being iterated after receiving formative feedback, and the requirement to maintain the whole solution consistent. Each of the parts will include the group's self-assessment and reflection on their progress, software engineering methods and tools used and how they worked for them. Moreover, the third part will include their writing of technical documentation regarding their solution. The professional issues component will involve the regular writing of blog posts on professional and ethical issues surrounding the rest of the assignment.
Engagement in interaction with peers will be assessed based on the group's peer review of another groups' code and tests, as well as each student's contribution in discussions in the class forum and peer reviews of other groups' professional issues blog posts.
Finally, a majority of correct replies to multiple choice questions online in between lectures will contribute towards a good mark.
||Students will be provided with formative feedback - on both the software development project and the professional issues blog posts to date - after the first two deadlines of the assignment. Moreover, videos of group feedback will be provided. The students will have the opportunity to consider the feedback and improve their work, until the third and last assignment deadline which will be for summative feedback and marks. This third deadline will also consider student engagement in interaction with peers and their replies to multiple-choice questions within the mark.
Formative feedback will also be provided during drop-in lab sessions scheduled irregularly and more frequently as project deadlines are approaching. For the third part of the project, extra support in terms of a bookable 30-minute private meeting with a demonstrator will be made available. Moreover, students will gather peer feedback on their professional issues blogging, and on part of their code and tests from another group. Finally, ongoing support will be provided via an online forum, virtual office hours and email.
|No Exam Information
On completion of this course, the student will be able to:
- Explain the modern techniques used in the design and development of large-scale software systems
- Apply, evaluate and reflect on these techniques in a small-scale, but realistic scenario
- Analyse the professional and ethical implications of software engineering decisions and propose solutions
- Comfortably read and write technical documentation.
- Constructively engage in interaction with peers.
|Sommerville 'Engineering Software Products'|
ACM code of ethics: https://www.acm.org/code-of-ethics
BCS code of conduct: https://www.bcs.org/membership/become-a-member/bcs-code-of-conduct/
|Graduate Attributes and Skills
||This course develops a wide range of graduate attributes and skills across several areas:
* Cognitive skills: problem-solving, critical/analytical thinking, handling ambiguity.
* Responsibility, autonomy, effectiveness: independent learning, self-awareness and reflection, creativity, decision- making, organization and time management, flexibility and change management, ethical/social/professional awareness and responsibility.
*Communication: interpersonal/teamwork skills, verbal and written communication.
||Only open to 2nd year Informatics students, including those on joint degrees.
Prerequisite knowledge of object oriented programming required.
|Keywords||software engineering,professional practice,ethics
|Course organiser||Dr Cristina Alexandru
Tel: (0131 6)51 1739
|Course secretary||Ms Kendal Reid
Tel: (0131 6)51 3249