Elements of Software Construction
Program Overview
University Programs
The university offers a range of programs, including undergraduate, graduate, and continuing education options.
Pillars, Clusters, and Programmes
The university is organized into several pillars, clusters, and programs, including:
- ASD: Architecture and Sustainable Design
- DAI: Design and Artificial Intelligence
- EPD: Engineering Product Development
- ESD: Engineering Systems and Design
- HASS: Humanities, Arts and Social Sciences
- ISTD: Information Systems Technology and Design
- SMT: Science, Mathematics and Technology
Courses
One of the courses offered is:
50.003 Elements of Software Construction
This course is an introduction to the fundamental principles and techniques of software construction that have the greatest impact on practice. Topics include:
- Capturing the essence of a problem by recognizing and inventing suitable abstractions
- Key paradigms, including basic concepts of software design and their expression using notations from Unified Modeling Language (UML)
- Software testing, automated software test generation, automated software security testing via blackbox, greybox, and whitebox fuzzing approaches
- Detection and removal of software code smells, software coding standards to avoid security loopholes
- Concurrent programming, including programming with threads and processes, understanding concurrency problems like deadlock and data race
Prerequisite
- 50.001 Information Systems & Programming
Learning Objectives
- Design medium-scale software system from scratch: formulating and analyzing the problem to be solved; writing formal software requirements, exploring and formulating system designs; and using extensive and systematic testing and reasoning to ensure quality.
- Apply key software engineering ideas, including invariants, decoupling, and data abstraction.
- Apply key software engineering ideas, including software design, specification, abstraction, verification, and correctness.
- Apply widely used design concepts and notations (UML diagrams) and patterns in exploring and articulating problems and designs.
- Learn effective techniques on ensuring quality of large-scale software systems.
- Apply concepts of systematic software testing to discover bugs (including security vulnerabilities) in large-scale software systems.
- Apply concepts to reason about the security loopholes in software systems.
- Learn secure software coding standards.
- Learn key concepts in developing concurrent programs.
- Learn key concepts in reasoning and testing concurrent programs.
Measurable Outcomes
- Build medium-scale software prototype (LO 1-5).
- Design solution to questions related to the requirement prior to software development. (LO1, LO2, and LO4).
- Design blackbox, whitebox, and diabolic software tests for validating software prototype. (LO6).
- Design critical part of the software by reasoning about its security. (LO8).
- Design small/medium-scale concurrent programs. (LO9).
- Design techniques to reason about the correctness of the concurrent programs (LO10).
- Design software prototype with the objective of its maintainability and security. (LO5, LO7).
- Design software testing methodologies to automatically discover potential security vulnerabilities, such as program crashes (LO6).
Topics Covered
- Software Development Process
- Software Design and UML
- Automated Software Testing: Test Execution and Test Oracle
- Software Test Design: Blackbox, Whitebox, and Fault-based.
- Web App Testing
- Software Test Generation and Fuzzing: Blackbox, Greybox, and Whitebox
- Software Secure Coding Patterns for Java
- Software Code Smells and Refactoring
- Introduction to Concurrency and Sockets
- Basics of Threads
- Thread Safety and Synchronization
- Composing Thread-safe Objects
- Building Blocks
- Tasks and Thread Pools
- Concurrency Pitfalls and Testing
- Performance and Patterns; Non-blocking Algorithms
Textbook(s) and/or Other Required Material
- Brian Goetz et al., Java Concurrency in Practice, 1st ed. Boston, MA: Addison-Wesley, 2006.
Course Instructor(s)
- Prof Kenny Lu
- Prof Dileepa Fernando
Admissions
The university offers various programs, including undergraduate, graduate, and continuing education options.
Programmes
- Undergraduate
- Graduate
- Continuing Education (SUTD Academy)
- 42 Singapore
Campus Life
The university provides a range of campus life experiences, including:
Student Experience
- UxOP
- Student life
- Global experience and exchange
- Career development
- Student well-being
Campus
- Academic facilities
- Housing
- Sports and recreation centre
- F&B and services
- Library
About
The university is committed to design, artificial intelligence, and innovation.
Overview
- DesignÀAI
- At a glance
- Diversity and inclusion
- Sustainability
People
- Leadership
- Board of Trustees
- President Emeritus
- Professorships
- Faculty
Research
The university conducts research in various areas, including:
DesignÀAI Research
- Research news
- Research centres
- Research programmes and fellowship
Research Administration
- Research integrity
- Institutional Review Board (IRB)
Innovation
The university promotes innovation through various initiatives, including:
DesignÀAI Innovation
- Innovation ecosystem
- Future of Innovation
- Educational technology
- Fabrication lab
Innovation Showcase
- Book of Innovations
Innovation for Community
- STEAMunity
- Design Innovation (Consultancy & Training)
Innovation in Education
- daVinci@SUTD Experience
- STEAMxD Immersion Programme
- Digital Learning Capability Centre (DLCC)
Enterprise
The university partners with corporates and supports entrepreneurs through various initiatives, including:
DesignÀAI Enterprise
- Partnering corporates
- Research collaborations
- Technology licensing
- Translational Research Lab (DesignZ)
Supporting Entrepreneurs
- Venture and incubation experience
