ISEP1003 Software Design (5 cr)

Study level:
Basic studies
Grading scale:
0-5
Language:
English
Responsible organisation:
Faculty of Information Technology
Curriculum periods:
2026-2027, 2027-2028

Tweet text

The course covers basic design principles, patterns, and modelling techniques for creating structured, maintainable, and flexible small-scale software systems.

Description

This course introduces the principles and practices of software design and the communication of design decisions. Building on prior programming experience, students learn to structure software systems, reason about design trade-offs, and communicate their choices clearly to diverse audiences.

In addition, the course introduces how to use AI/LLM tools judiciously within the software design workflow (e.g., exploring alternative design choices, generating checklists and risk analyses, and summarizing rationale), with explicit guidance on verification, limitations, and responsible/secure use.

Emphasis is placed on moving from code‑level thinking developed during Programming 1 and 2 courses to system‑level reasoning and articulating design choices at multiple levels of abstraction using industry‑standard modeling practices. 

Learning outcomes

After completing the course, the student will be able to:

  1. Apply core software design principles, patterns, and architectural concepts to create reusable, maintainable, and flexible software systems.
  2. Use and interpret the most common Unified Modeling Language (UML) diagrams to model and communicate system structure and behavior.
  3. Recognize recurring problem structures (“patterns”) in complex or ambiguous situations and identify common pitfalls and anti‑patterns, proposing improvements when necessary.
  4. Demonstrate an understanding of how to utilize AI assistance in software design safely and effectively, including considerations of data handling, reliability, transparency, and responsible use. 
  5. Develop the interpersonal and self‑management skills needed to participate authentically and effectively in group and team settings while upholding the collaborators' perspectives, values, and professional identities. The student contributes meaningfully and supports the group in achieving its objectives. 

Study materials

Optional:

  • Robillard, Martin P. Introduction to Software Design with Java. Springer, 2026, Third Edition. 

Completion methods

Method 1

Description:
1. Lectures/lab sessions, 2. Reading assigned materials, 3. Case studies, 4. Project
Evaluation criteria:
Grade is based on completed assignments, self-evaluations and group-evaluations.
Select all marked parts
Parts of the completion methods
x

Participation in teaching (5 cr)

Type:
Participation in teaching
Grading scale:
0-5
Language:
English
No published teaching