This module aims to introduce concepts and principles of problem solving using the computer, and to produce software design in a language-independent manner. It also enables students to write and test C++ programmes that match a software design, and give students experience and confidence in the use of a high-level programming language to implement algorithms.
A. Exhibit a solid understanding of the fundamental syntax and semantics of the C++ programming language, including data types, control structures, functions, and standard libraries. B. Articulate the stages of the software development lifecycle, demonstrating an understanding of requirements gathering, design, implementation, testing, deployment, and maintenance. C. Develop Software Development Skills Covering Program Design, Coding, Testing, Debugging, and Executing. D. Demonstrate a comprehensive understanding of object-oriented programming principles, such as encapsulation, inheritance, and polymorphism, and apply these concepts to develop modular and reusable code in C++.
The students are assisted during the practical laboratory classes by demonstrators. The teaching philosophy of the module follows very much the philosophy of Syntegrative Education. This means that the teaching delivery pattern, which follows more intensive block teaching, allows more meaningful contributions from industry partners. This philosophy is carried through also in terms of assessment, with a reduction in the use of exams and an increase in coursework, especially problem-based assessments that are project-focused. This module will be delivered through a combination of lectures, group discussions, case studies, hands-on practical exercises, etc. Lectures and group discussions are conducted using the Problem-Based Learning paradigm focusing on student-centred learning, where students develop critical thinking and problem-solving skills to address open-ended problems that lack a straightforward solution. This module is taught with an emphasis on student learning through practice and by projects, facilitated by a module leader, and where appropriate, industrial mentors. Students can identify particular areas of learning needs or interests according to the available project(s). They will conduct independent research to gather information and resources to better define the problem. Progress towards the learning outcomes will be facilitated and monitored, where students are guided to progressively address the given problem through tasks. Independent learning will form an important aspect of the educational activities in this module. Assessed by a project, students shall gain practical experience in undertaking independent study and research on industry-focused real-world problems. The concepts introduced during the lecture are illustrated using step-by-step analysis of example code, complete case studies and live programming tutorials. Each week the students have to solve a set of exercises during the laboratory classes and submit the completed work electronically.