0% found this document useful (0 votes)
10 views5 pages

Software Engineering For SDVs

The document outlines a course on software design for self-driving vehicles. It discusses topics like object oriented programming, complexity analysis, C++ standard library, modern C++ features, debugging, testing, and design patterns. It provides prerequisites, a detailed syllabus, reading materials, and sample laboratory exercises.

Uploaded by

sarpateashish5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views5 pages

Software Engineering For SDVs

The document outlines a course on software design for self-driving vehicles. It discusses topics like object oriented programming, complexity analysis, C++ standard library, modern C++ features, debugging, testing, and design patterns. It provides prerequisites, a detailed syllabus, reading materials, and sample laboratory exercises.

Uploaded by

sarpateashish5
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Software

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.

Principles of OOP (Object Oriented Programming), classes, objects, inheritance, polymorphism,


and encapsulation. Creating classes, defining member functions, and working with objects.
Benefits of OOP and its relevance in modern software development.

CHAPTER 2: Code Complexity: 8 Hrs.

Computational and Asymptotic Complexity, Big-O Notation, Properties of Big-O Notation, Ω


and Θ Notations, Examples of Complexities, The Best, Average and Worst Cases, Amortized
Complexity.

CHAPTER 3: Standard Library in CPP: 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.

CHAPTER 4: Features in Modern CPP: 10 Hrs.

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.

CHAPTER 5: Debugging and Testing: 4 Hrs.

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.

Course Resources and Reading Ref:


 Online reference:
 Modern CPP NPTEL Course https://www.youtube.com/watch?
v=vmxTUhn2fBg&list=PLqu1LEUz3ju04dXn0JOgKYPHHnV2at-lG
 LinkedIn learning https://www.linkedin.com/learning/c-plus-plus-essential-training-
15106801/
 https://www.linkedin.com/learning/c-plus-plus-standard-template-library
 Practice Problems:
 https://leetcode.com/ - Modern CPP problems
 Elements of Programming Interviews in CPP, Adnan Aziz, Tsung-Hsien Lee, Amit
Prakash
 Reference Books:
 Data Structures and Algorithms in C++, Adam Drozdek, 4th Edition
 Object Oriented Programming with C++, E Balagurusamy, Third Edition
 The C++ Programming Language, Bjarne Stroustrup, Fouth Edition
 A Tour of C++, Bjarne Stroustrup, Second Edition

S. No Name of Hardware/Software Link if any / Remarks

1. Use g++ --version in ubuntu to check


Latest Ubuntu Release with g++
01 version. If not available.
compiler
2. Enter - sudo apt install g++
Software Resources:

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].

3. Unique Morse Code Words


International Morse Code defines a standard encoding where each letter is mapped to a
series of dots and dashes, as follows:
'a' maps to ".-",
'b' maps to "-...",
'c' maps to "-.-.", and so on.
For convenience, the full table for the 26 letters of the English alphabet is given below:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.",
"...","-","..-","...-",".--","-..-","-.--","--.."]
Given an array of strings words where each word can be written as a concatenation of the
Morse code of each letter.
For example, "cab" can be written as "-.-..--...", which is the concatenation of "-.-.", ".-",
and "-...". We will call such a concatenation the transformation of a word.
Return the number of different transformations among all words we have.

4. Find Smallest Letter Greater Than Target


You are given an array of characters letters that is sorted in non-decreasing order, and a
character target. There are at least two different characters in letters.
Return the smallest character in letters that is lexicographically greater than target. If such
a character does not exist, return the first character in letters.
Example:
Input: letters = ["c","f","j"], target = "a"
Output: "c"
Explanation: The smallest character that is lexicographically greater than 'a' in letters is
'c'.
5. Laboratory on algorithm

6. Laboratory on STL

7. Laboratory on STL and debugging.

8. Laboratory on Gtest

9. Laboratory on SOILD principles

10. Laboratory on Design Pattern

You might also like