Skip to content

CS3213 Foundations of Software Engineering

Challenges & Motivation

Increasing Student Enrollments in Computer Science

In Computer Science (CS) education, we face the challenge of increasing student enrollments over the past few years. Consequently, it has become increasingly difficult to provide high-quality and individualized learning support, particularly for novice students. Mirhosseini et al. recently conducted an interview study with CS instructors to identify their biggest pain points. Among other issues, they found that CS instructors struggle with limited or no Teaching Assistant (TA) support and the generally time-consuming task of providing student feedback and grading assignments. Thus, CS instructors would greatly benefit from automating tutoring activities to support TAs in their responsibilities.

Designing Projects in Software Engineering Education

Another typical problem in Computer Science education is the provision of Software Engineering (SE) projects. Software engineering is typically a compulsory course in the university's curriculum for computer science students, and it is often followed or accompanied by development projects, in which students can collect hands-on experience in software development in a team going beyond a programming exercise. Such projects come with inherent difficulties like acquiring industry partners and the dilemma that such software projects are often under- or over-specified. Additionally, such projects are often one-time efforts within one team or one course, and students cannot experience the evolution of a software system.

CS3213 as a Solution

To address these two problems, we designed a new course, Foundations of Software Engineering (CS3213) that provides the students with foundational knowledge and understanding of different aspects of software engineering including requirements, modelling, architecture, behavior, environment, software analysis, validation and verification.

CS3213 serves as a second software engineering course exposing the students to the mathematical foundations of software engineering while simultaneously supplementing and elaborating the foundations in the form of a semester long project, which is building an Intelligent Tutoring System for Programming and Algorithms Education with and for students. As a multi-year research and teaching effort, we combine third-year SE teaching and first-year programming teaching via a long-term, practical, self-sustained software system.

CS3213 Curriculum

To facilitate the widely adaption of CS3213, we prepare detailed curriculum and materials for the course. The curriculum is divided into two parts:
- The foundation knowledge of software engineering in lectures.
- The hands-on experience of the self-sustained project (Development of Intelligent Tutoring System).

We provide the lecture materials/recordings/slides and project materials of NUS AY 2021/2022 as an example.
For latest materials, please contact the managing team of CS3213 at contact us.