0% found this document useful (0 votes)
25 views44 pages

ExploringCS. Lecture 5 - Software Engineering

The document outlines a course on Software Engineering, detailing its schedule, objectives, and key topics such as software process models and computational thinking. It emphasizes the historical evolution of software engineering, the definition of software, and various methodologies like Waterfall, Scrum, and Kanban. The course aims to equip students with the ability to apply computational thinking throughout the software development life cycle.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views44 pages

ExploringCS. Lecture 5 - Software Engineering

The document outlines a course on Software Engineering, detailing its schedule, objectives, and key topics such as software process models and computational thinking. It emphasizes the historical evolution of software engineering, the definition of software, and various methodologies like Waterfall, Scrum, and Kanban. The course aims to equip students with the ability to apply computational thinking throughout the software development life cycle.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

60SCI026: Exploring Computer Science

Lecture 5: Software engineering

Visiting lecturer: Bùi Văn Thạch


bvthach@[Link]
15/09/2025 – 16/01/2026 1
(Expected) Schedule 2025-2026
No. Date Location Topic No. Date Location Topic
1 15/09 LH - 609 Overview of Computer 9 24/11 LH - 609 NLP & Project 2
Science 10 01/12 LH - 609 ML & AI
2 22/09 LH - 609 11 08/12 LH - 609 Digital transformation
Operating systems &
Project 1
12 17/12 LH - 609 Recent trends in CS
3 29/09 LH - 609 TCS
13 24/12 LH - 609 Presentation
4 06/10 LH - 609 Networks (2, 4, 6, 7, 9)
5 13/10 LH - 609 Software Engineering (1, 3, 6, 7, 8)
14 08/01/2026 LH - 609 Presentation
6 20/10 LH - 609 Computer vision
(1, 3, 5, 8)
7 27/10 LH - 609 Presentation (2, 4, 5, 9)
(1, 3, 5, 8)
15 15/01/2026 LH - 609 Review
(2, 4, 5, 9)
8 03/11 LH - 609 Presentation (2, 4, 6, 7, 9)
(1, 3, 6, 7, 8)

2
Objectives
1. Able to understand the historical evolution of Software Engineering

2. Able to define software and software engineering

3. Able to understand and compare key software process models (Waterfall, Scrum,

Kanban, etc.)

4. Able to apply Computational Thinking (CT) to software development

5. Able to integrate CT into each stage of the Software Development Life Cycle

(SDLC)

3
Course topics
1. Overview of Computer Science 6. Computer Vision

2. Operating systems 7. Natural language processing

3. Theoretical Computer Science 8. Machine Learning and Artificial

4. Networks Intelligence

5. Software engineering 9. Digital transformation

10. Recent trends in Computer Science

4
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


5
Software Engineering History

• Computers were invented in the 1940’s


• Then - computing programming languages were invented
• Eventually - program language training was developed
• However, training was unable to provide sufficient methods & techniques for
developing large, reliable systems on time & within budget
• By the late 1960’s, digital computers were less than 25 years old and already
facing a software crisis
• Software Engineering term first emerged as title of a 1968 NATO conference (*)

* Downing, Douglas, and Michael Covington. Dictionary of Computer Terms. Barron’s Educational Series, 1986. 6
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


7
What is software?

• Computer programs and associated documentation such as requirements,


design models and user manuals

• Software products may be


– Generic - developed to be sold to a range of
different customers
– Custom - developed for a single customer
according to their specification

Sommerville, Ian. "Software engineering 9th Edition." ISBN-10 137035152 (2011): 18. Chapter 1 8
Attributes of good software

Maintainability Reliability
• Software must • Software must be
evolve to meet trustworthy
changing needs

Acceptability
Efficiency
– accepted by the
users Software should not
– understandable, make wasteful use
usable and of system resources
compatible with
other systems

9
Project success rates

10
What is software engineering (S.E.)?
• Software engineering (S.E.) is an engineering discipline that is concerned with theories,
methods, and tools for professional software development. (*)

• Computational Thinking (C.T.) provides the conceptual foundation for software engineering.

• S.E. turns those structured thoughts into real-world software.

• Software ⇔ complex problem


– C.T. helps to manage this complex problem step by step.

11
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


12
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


13
Software process models
• A software process:
– A set of activities whose goal is the development or evolution of software

• Generic activities in software processes:


– Specification - what the system should do and its development constraints
– Development - production of the software system
– Validation - checking that the software is what the customer wants
– Evolution - changing the software in response to changing demands

Sommerville, Ian. "Software engineering 9th Edition." ISBN-10 137035152 (2011): 18. Chapter 2 14
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


15
The waterfall model

Sommerville, Ian. "Software engineering 9th Edition." ISBN-10 137035152 (2011): 18. Chapter 2 16
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


17
Incremental model

Sommerville, Ian. "Software engineering 9th Edition." ISBN-10 137035152 (2011): 18. Chapter 2 18
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


19
Incremental model - Scrum

20
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


21
Incremental model - Kanban
• Kanban board – a board used to visualize work items
• Kanban card – a card represents one work item
– Cards are moved from left to right

22
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


23
Definition (1/2)
• Computer science is the study of computation—what
can be computed and how to compute it.

• Computing is the Automation of our • Computational thinking (C.T.)


Abstractions. – Choosing the right abstractions.
– They empower us with the confidence and – Choosing the right “computer” for the task.
capacity to grow.

24
Definition (2/2)
• C.T. is operating in terms of multiple
layers of abstraction simultaneously
• C.T. is thinking in terms of mechanizing
the abstraction layers and their
relationships.
– C.T. is defining the relationships the between
layers.

• Mechanization is possible due to precise


and exacting notations and models.

25
Characteristics
• Conceptualizing, not programming
– Computer science is not just computer programming

• Fundamental, not rote skill


– A skill needed by everyone to function in modern society
– Rote: mechanical routine.

• A way that humans, not computers think


– Humans SEEM clever and creative
– Computers SEEM dull and boring

• It’s for everyone


– C.T. will be a reality when it is so integral to human endeavors that it disappears as an explicit
philosophy.

26
Flow chart of C.T.
• Having to solve a particular problem, we might ask:
(Problem) Abstraction
– How difficult is it to solve?

Decomposition – What’s the best way to solve it?

Pattern recognition
• To tackle a large complex problem or design a large
complex system, we should do the first two tasks:
Algorithm design
– Abstraction

– Decomposition
(Implementation)

27
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


28
Applying C.T. to the Big Problem (Engineering a Software)

(Problem) Abstraction Automates tasks ⇔ Develop a software that can automate tasks?

Decomposition
Example:
• Manual solution: students register courses
Pattern recognition using paper forms, managed by staff
manually

Algorithm design • Problem: slow, error-prone, hard to track


• Abstraction: design a course registration
(Implementation) software

29
Apply C.T. to the Big Problem (Engineering a Software)

(Problem) Abstraction Break the problem into phases of the S.E lifecycle

Decomposition

Pattern recognition

Algorithm design

(Implementation)

30
Apply C.T. to the Big Problem (Engineering a Software)

(Problem) Abstraction
Notice recurring challenges in each phase.

Decomposition
Example: Course Registration software
• Recurring entities
Pattern recognition – Students, Courses, Instructors, Enrollments appear in every semester.
• Recurring processes
– Search courses → Register/Drop → Confirm → Notify (similar flow each term).
Algorithm design
• Recurring constraints
– Limited seats, time-slot conflicts, prerequisite checks are always present.

(Implementation) • Recurring solutions


– Login system, role-based access (student/admin), notifications, reporting.

31
Apply C.T. to the Big Problem (Engineering a Software)

Develop a structured method or process to solve the problem,


(Problem) Abstraction
not just code.
Decomposition • Choosing development methodologies (e.g., Agile, Scrum, Waterfall).
• Applying design patterns (e.g., MVC for web apps, Observer for events).
Pattern recognition • Defining testing strategies (e.g., unit tests, regression tests, CI pipelines).
• Structuring team workflows (task assignment, iteration cycles).
Algorithm design • …

(Implementation)

32
Apply C.T. to the Big Problem (Engineering a Software)

Putting ideas into practice with real SE tools and practices,


(Problem) Abstraction
not just “coding.”
Decomposition • Turning requirements + designs into actual code.
• Using tools and frameworks (e.g., Django, Spring, React, .NET).

Pattern recognition • Applying development practices (e.g., pair programming, version control with Git).
• Integrating testing frameworks to catch bugs early.
• Deploying software into production environments (e.g., Docker, Kubernetes, cloud
Algorithm design
platforms).
• …
(Implementation)

33
Outline
• History

• What is Software and Software Engineering?

• Software process models

– Waterfall model

– Incremental model

• Scrum model

• Kanban model

• Computational thinking in software engineering

– Big Problem (Engineering a Software)

– Zoom In: Each Phase as a Sub-Problem


34
Zoom In: Each Phase as a Sub-Problem
Each phase of the software development life cycle is a sub-problem where
Computational Thinking can be applied again — a form of recursive CT thinking.

35
C.T. in Requirement Definition

(Problem) Abstraction Turn messy stakeholder needs into structured requirements.

Break down requirements into smaller aspects: Functional vs Non-


Decomposition
functional

Notice recurring needs or existing systems: such as login, notification,


Pattern recognition
scheduling.

Algorithm design Plan how to gather, document and verify requirements

Document and manage requirements using tools like Jira, Trello, or


(Implementation)
requirement templates.

36
Quiz #6.1
Context:
You are part of a development team tasked with designing a Course Registration
System for the university.

Below is a messy description from stakeholders — your job is to apply


Computational Thinking to interpret the problem, decompose it logically, and
document well-defined requirements that can guide software development.

37
Quiz #6.1
Stakeholder’s Description:
“Right now, students come to the department office to register for classes — it’s chaotic
every semester. Some students forget to check course prerequisites, and then they have to
redo the forms. Others submit overlapping schedules or register for full classes without
realizing it. The staff then spend days sorting out paper forms and entering everything into
Excel. We also need a way to notify students when their registration succeeds or fails. It
would be nice if instructors could see who has enrolled early, and maybe the system could
stop students from taking courses at the same time slot. Also, please make sure it’s fast,
secure, and doesn’t crash during peak times because last semester over 3,000 students
registered in one morning.”

38
Quiz #6.1 - Suggested answer (1/3)
Problem Summary (Abstraction):
(Problem) Abstraction
Develop an online course registration system that automates

Decomposition
registration, checks prerequisites and schedule conflicts, and
provides real-time updates to students, instructors, and staff.
Pattern recognition

Algorithm design

(Implementation)

39
Quiz #6.1 - Suggested answer (2/3)
Structured Requirements (After Applying C.T.):
(Problem) Abstraction
Functional Requirements:
• The system shall allow students to log in using their university credentials.
Decomposition • The system shall allow students to view available courses and check
prerequisites automatically.
• The system shall prevent students from registering for overlapping classes.
Pattern recognition
• The system shall notify students when registration succeeds, fails, or when a
course is full.
Algorithm design • The system shall allow instructors to view their class lists in real time.
• The system shall allow administrators to manage course offerings and
(Implementation) registration periods.

40
Quiz #6.1 - Suggested answer (3/3)
Structured Requirements (After Applying C.T.):
(Problem) Abstraction
Non-Functional Requirements:
Decomposition • The system should handle at least 3,000 concurrent users during peak
registration times.
Pattern recognition • The system must be secure and protect user data.
• The interface should be simple and accessible on web and mobile.
Algorithm design • The system should respond to registration requests within 3 seconds.
• The system should maintain high availability (uptime ≥ 99.5%) during
(Implementation) registration periods.

41
Quiz #6.2
Scenario: The university wants to develop a simple Course Registration System for internal use.

Students should be able to:

• Log in to the system using their student ID and password.


• View available courses and their details (schedule, prerequisites, remaining seats).
• Register for a course if it meets requirements and has available seats.
• Receive a confirmation message after successful registration.

Administrators should be able to:

• Log in to the system using their staff ID and password


• Add or edit course information and open/close registration periods.

42
Quiz #6.2
Task:
Apply Computational Thinking to analyze and design this system.
• A simple version of system architecture diagram (that shows the main part of the
system and how they communicate.)
• A flowchart diagram for Flowchart for “Course Registration”

43
Q&A

47

You might also like