Learning C and C++ programming languages is essential for those interested in pursuing a career in software engineering or related fields. Despite the popularity of newer programming languages, such as Java and Python, C and C++ remain fundamental skills in the software industries. Specifically, C is a critical language for embedded systems and microprocessors, while C++ is widely used for object-oriented programming. It is the preferred language for writing compilers for other programming languages, as well as for developing applications in areas such as CUDA GPU coding, socket networking, and video game development. Moreover, major software companies like Apple, Microsoft, and Google rely heavily on C++ to build their complex systems. By learning C and C++, you can expand your programming skills and open up new opportunities for yourself in the field of software engineering. This module aims to enable students to: 1. Learn the syntax and structuring of the C and C++ programming languages 2. Use the C and C++ languages to solve real engineering problems 3. Acquire fundamental software development skills covering program design, coding and testing
A. Demonstrate knowledge and understanding of the software development process; B. Demonstrate knowledge and understand basic coding principles of any coding language including C; C. Design, code, debug (with the help of generative AI tools e.g. ChatGPT), test, and document computer programs written in C to meet requirements supplied in a specification; D. Demonstrate knowledge and understand basic coding principles of any coding language including C; E. Design, code, debug (with the help of generative AI tools e.g. ChatGPT), test, and document computer programs written in C++ to meet requirements supplied in a specification; F. Demonstrate knowledge and understanding of software design in an object-oriented approach by programming in C;
The teaching philosophy of the module follows very much the philosophy of Syntegrative Education. This has meant that the teaching delivery pattern, which follows more intensive block teaching, allows more meaningful contribution from industry partners. This philosophy is carried through also in terms of assessment, with reduction on the use of exams and increase in coursework, especially problem-based assessments that are project focused. The delivery pattern provides space in the semester for students to concentrate on completing the assessments. This module is delivered with a combination of delivery in lectures, laboratory exercise, tutorials and a seminar at the end of the delivery. The concepts introduced during the lecture are illustrated using step-by-step analysis of example code, complete case studies and live programming tutorials. In the laboratory practice, students will have opportunities to solve a set of exercises during the laboratory classes under the supervision of the lecturer and the teaching assistant. At the end of each week, there will be a tutorial to emphasize keynotes that have been discussed in lectures and laboratory practice during that week. At the end of the delivery, there will be a seminar to review the whole module delivery.