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