Skip to content

50.003 Elements of Software Construction Course Handout

This page will be updated regularly. Sync up often.

Course Description

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 black box, 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. This course includes exercises in software design, implementation, testing and reasoning.

Prerequisites

50.001 Information Systems & Programming

Module Learning Outcomes

By the end of this module, students are able to

Design medium-scale software systems from scratch: formulating and analysing 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.

  1. Apply key software engineering ideas, including invariants, decoupling, and data abstraction.
  2. Apply key software engineering ideas, including software design, specification, abstraction, verification and correctness.
  3. Apply widely used design concepts and notations (UML diagrams) and patterns in exploring and articulating problems and designs.
  4. Learning effective techniques on ensuring quality of large-scale software systems.
  5. Apply concepts of systematic software testing to discover bugs (including security vulnerabilities) in large-scale software systems.
  6. Apply concepts to reason about the security loopholes in software systems.
  7. Learning secure software coding standards.
  8. Learning key concepts in developing concurrent programs.
  9. Learning key concepts in reasoning and testing concurrent programs.

Resource

The main resources are lecture slides, tutorial sessions, and online documentations. There are no official textbooks. But the following are useful for reference and deeper understanding of some topics.

  • Martina Seidl, Marion Scholz, Christian Huemer and Gerti Kappel, UML @ Classroom: An Introduction to Object-Oriented Modeling, 2015
  • Martin Fowler, UML Distilled, 3rd Edition, 2003.
  • Brian Goetz et al., Java Concurrency in Practice, 1st Edition. Boston, MA: Addison-Wesley, 2006.
  • Paul C. Jorgense, Software Testing: A Craftsman's Approach, 4th Edition. 2013.

Instructors

  • Prof Kenny Lu (kenny_lu@sutd.edu.sg) Office Hour: Wednesday 3:00-4:30pm (please send email to arrange)

  • Prof Dileepa Fernando (dileepa_fernando@sutd.edu.sg) Office Hour:

TAs

GTA

Communication

If you have course/assignment/project related questions, please post it on the dedicated MS teams channel.

Grading

Your final grade is computed as follows:

  • Cohort exercises – 18%
  • Course Feedback – 2%
  • Quizzes – 10%
  • Course Project – 40%
    • Project Meetings 1, 2, 3, 4 (each 5%)
    • Final presentation, demo, report and peer review (20%)
  • Final Exam – 30%

Things you need to prepare

  • Git
  • Node.js (version > 20)
  • Visual Studio Code (or whatever IDE you prefer)
  • Ubuntu subsystem if you are using Windows
  • MongoDB
  • MySQL >8

Project

Please refer to the project page.

Submission Policy and Plagiarism

  1. You will do the assignment/project on your own (own teams) and will not copy paste solutions from someone else.
  2. You will not post any solutions related to this course to a private/public repository that is accessible by the public/others.
  3. Students are allowed to have a private repository for their assignment which no one can access.
  4. For projects, students can only invite their partners as collaborators to a private repository.
  5. Failing to follow the Code of Honour will result in failing the course and/or being submitted to the University Disciplinary Committee. The consequences apply to both the person who shares their work and the person who copies the work.

Schedule (19 May 2025 - 24 Aug 2025)

Week Lecture 1 Lecture 2 Cohort Class Remarks
1 (19/5) 1 Course Briefing, 2. Basics of Web Programming and JavaScript NodeJS and Asynchronous Callbacks Cohort Exercise 1 Project Team Submission (25/5 23:59)
2 (26/5) Web App Backend Architecture Web App Backend Architecture (Relational Database) Cohort Exercise 2 CE 1 Submission (26/5 23:59)
3 (2/6) Quiz 1: Node.js (3%) Web App Frontend Architecture Web App Frontend Architecture Cohort Exercise 3 CE 2 Submission (9/6 23:59)
4 (9/6) Introduction to Software Engineering Software Modelling UML UML Use Cases and Use Case Descriptions Corhort Exercise 4 CE 3 Submission (16/6 23:59)
5 (16/6) Domain Modelling and UML Class Diagrams UML Sequence Diagrams 1 Cohort Exercise 5 CE4 Submission
6 (23/6) Quiz 2:UML (3%) UML Sequence Diagram 2 Software Architecture UML – Design Model/ Solution Class Diagram Project Meeting 1 CE5 Submission
7 (30/6) Recess Week Recess Week
8 (7/7) Guest Lecture (Software Deployment) 1. Software Testing
2. Slide 8b
Cohort Exercise 6 1. Submit project meeting 2 presentation video by 8/7 2359
9 (14/7) 1. Blackbox unit testing
2. Slide 9a
1. Blackbox integration / system testing
2. Slide 9b
Project Meeting 2 CE6 Submission
10 (21/7) 1. UI Testing
2. Slide 10a
3. Code
1. Whitebox / Path base testing
2. Slide 10b
Blackbox Testing Submit project meeting 3 presentation video by 22/7 2359
11 (28/7) Quiz 3: Unit Testing (4%) Test generation: Fuzzing Test generation: Genetic algorithm, Symbolic Execution Project Meeting 3
12 (4/8) Concurrency and Concurrent Testing Secure Software Coding Standard, Code smells and Maintenance Project Meeting 4 CE 10 submission 2/8/24 23:59
13 (11/8) Final Presentation Final Presentation Final Presentation
14 (18/8) Final Exam

Make Up and Alternative Assessment

Make ups for Final exam will be administered when there is an official Leave of Absence from OSA. There will be only one make up. There will be no make-up if students miss the make up test.