ECE 3574 Applied Software Design
B.S. Computer Engineering and B.S. Electrical Engineering, SEITZ 300, 2024
An introduction to applied software design methods for writing efficient, reusable, and modular C++ programs. Pre: 2574 with a C- or better. (3H, 3C)
ECE 3574 Applied Software Design
Sr.No | Topics |
---|---|
Syllabus | |
1 | CMake and Catch2: Managing projects without CMake using multiple header and source files; Building projects with CMake and Make; CMakeLists.txt; Unit Testing using Catch2; Writing Test Cases |
2 | C++ Introduction: data types; initialization; formatting floating point numbers; fallthrough; initializer with if and switch; yoda condition; gsl::narrow_cast; digit separator and locale; enum (scoped and unscoped); inline functions; pass by value/reference; dangling reference; default arguments in functions; vector; auto; const and constexpr |
3 | C++ introduction to OOP: Scaling-up programs; this; reference and pointer: similarities and differences; when to use reference and pointer |
4 | Object Oriented Programming: structs; class vs. struct; access control; encapsulation; abstraction; constructors; scope resolution; namespace; static members; static methods; const |
5 | Inheritance: definition; extending base class; access specifiers for inheritance; multilevel inheritance; multiple inheritance (next lesson); composition; friend class |
6 | Polymorphism: introduction; overloading and overriding; virtual function and pure virtual function; runtime polymorphism; function Hiding; multiple inheritance |
7 | Generic Programming: introduction; generic function; template; deduction; generic class |
8 | Memory Model: static, dynamic, and automatic memory allocation; malloc; calloc; free |
9 | Memory Model: new; delete; overloading new and delete; memory management problems |
10 | Copy Semantics: Resource Acquisition is Initialization (RAII); copy-ownership policies; rule of three |
11 | Move Semantics: lvalue; rvalue; rvalue reference; rule of five |
12 | Resource Acquisition is Initialization: problems in memory management; creating RAII Class; introduction to smart pointers |
13 | Smart Pointers: unique pointer; shared pointers; weak pointers |
14 | Smart Pointers: Using raw pointers vs smart pointers |
15 | Lambda; for_each; Functor |
16 | Concurrency: Process and Process states; Thread and Thread states; Creating thread with function, functor, lambda, member function; Running multiple threads; Concurrency bug |
17 | Thread Communication: promise and future; async; creating tasks; introduction to data race |
18 | Thread Communication: mutex and lock; deadlock; lock_guard and lock |
19 | Thread Communication: condition variables, producer-consumer |
20 | Process and Inter-process Communication: fork; wait; interprocess communication; creating pipe; exec; system call; output redirection; unix signals |
21 | Idioms: RAII and copy-on-write |
22 | Design Patterns: factory method; abstract factory; builder; singlton |
23 | Software Engineering: software development process; requirements; Software design for embedded systems |
24 | Testing: unit and integration testing |
25 | Qt Framework: introduction, creating hello world application using Qt 6 |
26 | Qt Framework: Adding Class with Signals and Slots using code and GUI; event handling; QPushButton; QComboBox; QLineEdit; QSlider |
27 | Qt Framework: Network Request for Content from a URL |
28 | Qt Framework: Qt Widget Application; QThread |