Students
Tuition Fee
Not Available
Start Date
Not Available
Medium of studying
Not Available
Duration
Not Available
Details
Program Details
Degree
Courses
Major
Computer Science | Software Development | Software Engineering
Area of study
Information and Communication Technologies | Engineering
Course Language
English
About Program

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
  1. 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.
  2. Apply key software engineering ideas, including invariants, decoupling, and data abstraction.
  3. Apply key software engineering ideas, including software design, specification, abstraction, verification, and correctness.
  4. Apply widely used design concepts and notations (UML diagrams) and patterns in exploring and articulating problems and designs.
  5. Learn effective techniques on ensuring quality of large-scale software systems.
  6. Apply concepts of systematic software testing to discover bugs (including security vulnerabilities) in large-scale software systems.
  7. Apply concepts to reason about the security loopholes in software systems.
  8. Learn secure software coding standards.
  9. Learn key concepts in developing concurrent programs.
  10. Learn key concepts in reasoning and testing concurrent programs.
Measurable Outcomes
  1. Build medium-scale software prototype (LO 1-5).
  2. Design solution to questions related to the requirement prior to software development. (LO1, LO2, and LO4).
  3. Design blackbox, whitebox, and diabolic software tests for validating software prototype. (LO6).
  4. Design critical part of the software by reasoning about its security. (LO8).
  5. Design small/medium-scale concurrent programs. (LO9).
  6. Design techniques to reason about the correctness of the concurrent programs (LO10).
  7. Design software prototype with the objective of its maintainability and security. (LO5, LO7).
  8. 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
See More