Course syllabus
Course-PM
DAT670 / DIT593 Software Engineering Theory and Practice (7.5hp)
This course is offered by the department of Computer Science and Engineering study period 2 of 2024.
Contact details
- Examiner and lecturer: Chih-Hong Cheng (chihhong@chalmers.se)
- Co-teacher: Linda Erlenhov (linda.erlenhov@chalmers.se)
Administration
- Study counselor GU: svl@cse.gu.se
- Student office: Student_office.cse@chalmers.se
- Student at CSE at GU: https://studentportal.gu.se/english/my-studies/cse
- Study counselling Chalmers: https://www.chalmers.se/utbildning/studentstod/vagledning-och-stod/
Student representatives
TBA
Course purpose
The course "Software Engineering - Theory and Practice" is designed to equip students with the knowledge and skills necessary to develop, manage, and maintain software systems across various industries. Starting with a foundation in general software engineering principles, students will explore the many challenges of designing software architectures, requirement engineering, and testing strategies. The course contains specialized topics such as real-time software engineering, software reuse, and the development of learning-enabled systems, emphasizing the unique challenges these systems present. Particular attention is given to safety-critical software engineering, essential for sectors like automotive and aerospace, where reliability and compliance with stringent standards are paramount.
Schedule
Lectures primarily on Tuesdays and Thursdays, Exercise sessions primarily on Tuesdays but see Schedule and Time Edit.
Course Literature
Ian Sommerville: Software Engineering (10th Edition) Link for E-book at Chalmers Store |
Several editions are available for the suggested book, however, students are advised to get hold of the suggested edition for maximum relevance to the course contents.
Any optional reading will be introduced during the course.
Course Design
There will be lectures (theory) and exercise sessions (practice). The sessions are a base to the assignments which are designed for the students to be familiar with practical applications of theoretical concepts taught in the lectures and professional software engineering tools.
Student participation in these sessions is not mandatory but is recommended. Self-learning initiatives are also expected from the students in the form of group work and reading the recommended literature for the course.
There are three graded assignments. Students are required to work in groups of 4(3), in order to optimize learning. During the supervision sessions, students will work on relevant exercises which would complement the lectures and the assignments, contributing to the overall learning from the course. The language of instruction for the course is English. Therefore, we expect all communication to take place in English.
Student Groups
The students are expected to work in groups (with 4(3) students in each group)
The groups are created on canvas, and the students can self assign themselves to one of these groups.
Examination form
The course has two mandatory assessment sub-modules, i.e.,
1. Written exam: 2.5 credits
Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U)
2. Assignments: 5 credits
Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U)
NOTE: The grade for the assignment submodule will be awarded as a whole.
To pass the course, all mandatory components must be passed. To earn a higher grade than Pass a higher weighted average from the grades of the components is required.
Details:
- The course is examined by an individual written exam carried out in an examination hall at the end of the course, and homework assignments are normally carried out in groups of 4 students.
- The sub-module Assignments is examined on the basis of solutions to compulsory problems handed in during the course and on the basis of individual contribution to the group work.
- The student is required to complete written self-and peer-assessment forms during the the course which will be part of the assessment of the student's individual contribution to the project.
- The sub-module Assignments is reexamined by individual assignments.
- For the Examination sub-module, the student shall normally be guaranteed at least three examination occasions (including the ordinary examination) during a period of at least one year from the last time the course was given.
Plagiarism:
A student will get a Fail (U) in case of plagiarism/cheating during the written exam or during the assignments. Assignments also count as plagiarized if students submit (parts of) another group's assignment solution. Students are expected NOT to upload a part of their solution on a public webspace such that others can plagiarize from it.
Use of Generative AI tools:
Generative AI - techniques that generate “original” content e.g. text, images, music, or videos, such as ChatGPT, DALL-E, or Codex - are an exciting and rapidly-evolving field of technology. Generative AI tools are poised to make revolutionary changes to how people work in many fields of business. In some parts of the course, it will be explicitly forbidden to use ChatGPT or any generative AI tools. When it is ok to use, the following is required:
- Transparency
- If you use any answer from ChatGPT in your assignments, you must be transparent and tag the code / paragraph that it created. You must also add 1--2 sentences explaining why you think ChatGPT’s suggestion is appropriate and provide the prompt you used to create it.
- Be critical towards the tools suggestions.
- You need to justify the generated artifacts. If you can’t judge whether its good, you are not ready to use that recommendation / answer. E.g. ChatGPT generates a lot of incorrect answers, so called hallucinations, which are basically bugs in the model. It's easier for the human eye to spot this in, for instance, generated images than it is in text.
More reading on the topic at Chalmers and GU.
Learning Objectives and Syllabus
Learning objectives:
Knowledge and understanding, after a completed course the student should be able to:
- Understand the core principles of software engineering, including various software development life cycles (SDLC), requirements engineering, and software architecture design.
- Describe strategies for software testing, maintenance, and evolution, as well as methods for real-time and safety-critical software engineering.
- Recognize the challenges and strategies of integrating software in complex systems and specific concerns in machine learning components.
Skills and abilities, after a completed course the student should be able to:
- Utilize professional tools for developing, testing, and analyzing software projects.
- Design and evaluate scalable, maintainable, and efficient software architectures.
- Apply software engineering principles to develop solutions in specialized areas such as real-time, safety-critical, and learning-enabled systems.
Judgement and approach, after a completed course the student should be able to:
- Critically assess different SDLC models and software engineering techniques to determine their effectiveness for specific projects.
- Evaluate and integrate software solutions across a variety of applications, including real-time, safety-critical, and learning-enabled systems.
- Understand how software development practices are applied in sectors like finance, telecommunications, and automation.
Link to the syllabus in the Studentportal:
GU
Course summary:
Date | Details | Due |
---|---|---|