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 lectures and some practical work.
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 2021/22, 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). 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 - during drop-in lab sessions as well as bookable 30-minute private meetings with a demonstrator for each part of the project. 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 'Software Engineering'|
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||Miss Kerry Fernie
Tel: (0131 6)50 5194