Software Engineering For SDVs
Software Engineering For SDVs
Design for
SDV
Prerequisites:
Knowledge of C programming language
C++ Language Basics
SOLID Programming Principles
Syllabus:
CHAPTER 1: Object Oriented Programming, Analysis and Design: 8 Hrs.
The standard library of C++ with pre-written functions and classes. Commonly used components
such as string manipulation, file I/O, containers (vectors, arrays, lists), and algorithms (sorting,
searching). Demonstration on how to leverage these library features effectively.
Modern C++ features introduced in C++11 and later versions. Features: lambda expressions, auto
keyword, range-based for loops, move semantics, and rvalue references. Benefits and
demonstration on how they improve code readability, performance, and safety.
Debug C++ code effectively using debugging tools and techniques. Cover the use of debuggers,
breakpoints, stepping through code, and inspecting variables. Introduction to unit testing
frameworks like Google Test or Catch2 to ensure code correctness and facilitate maintainability.
CHAPTER 6: SOLID Principles and Design Patterns: 4 Hrs.
Coding best practices: code organization, naming conventions, error handling, and exception
safety. Common design patterns (such as singleton, factory, observer), When and how to apply
them to solve specific problems.
Laboratory Experiments (Sample problems. Faculties should build/find similar for their
students):
1. Demonstrate abstraction, inheritance, polymorphism, and encapsulation using CPP.
2. Given an array of integers nums and an integer target, return indices of the two numbers
such that they add up to target. You may assume that each input would have exactly one
solution, and you may not use the same element twice. You can return the answer in any
order. Build with time complexity of O(n)
Example:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
6. Laboratory on STL
8. Laboratory on Gtest