software development with c++
TRANSCRIPT
![Page 1: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/1.jpg)
Mark Slater Matt Williams
Software Development with C++Tom Latham Ben Morgan
Luke Kreczko
1
![Page 2: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/2.jpg)
Programming is in top 5 most useful skills gained by PhDs
2
![Page 3: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/3.jpg)
“48% were employed in universities...” - STFC PhD Careers
3
![Page 4: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/4.jpg)
Develop a command line application using the C++ programming language to encrypt/decrypt simple text messages using classical ciphers.
Our Aim: “mpags-cipher”
4
![Page 5: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/5.jpg)
Requirements• Read Plaintext from Keyboard or File
• User select of Cipher, Key and whether to Encrypt/Decrypt
• Provide Encryption/Decryption via
• Caesar Cipher
• Playfair Cipher
• Vigenere Cipher
• Write cipher text to Screen or File5
![Page 6: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/6.jpg)
“The world is built on C and C++, did you know that?” - Herb Sutter
6
![Page 7: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/7.jpg)
“Not Your Parents’ C++” - Herb Sutter
C++11auto i = v.begin();
regex
constexpr
nullptr
initializer lists
for(x : collection)
std::shared_ptr<T>,std::unique_ptr<T>,std::weak_ptr<T>
[]{foo();}lambdas
7
![Page 8: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/8.jpg)
“Your Parents’ C++” - Still much existing code
C++11auto i = v.begin();
regex
constexpr
nullptr
initializer lists
for(x : collection)
shared_ptr<T>,unique_ptr<T>,weak_ptr<T>
[]{foo();}lambdas
988
![Page 9: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/9.jpg)
C++11auto i = v.begin();
regex
constexpr
nullptr
initializer lists
for(x : collection)
shared_ptr<T>,unique_ptr<T>,weak_ptr<T>
[]{foo();}lambdas
14[](auto x){foo(x);}
generic lambdas
auto myFunc();
binary literals
deduced return types
auto bin = 0b0100;digit separatorsauto i = 1’000;
9
![Page 10: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/10.jpg)
C++11auto i = v.begin();
regex
constexpr
nullptr
initializer lists
for(x : collection)
shared_ptr<T>,unique_ptr<T>,weak_ptr<T>
[]{foo();}lambdas
17std::string_view
string views
std::filesystemstructured bindings
filesystem operations
auto [ first, second ] = myPair;
10parallel algorithms
![Page 11: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/11.jpg)
C++11auto i = v.begin();
regex
constexpr
nullptr
initializer lists
for(x : collection)
shared_ptr<T>,unique_ptr<T>,weak_ptr<T>
[]{foo();}lambdas
20std::numbers::pi
mathematical constants
myMap.contains(2);
concepts
associative contains
std::movablestd::floating_point
using enum11
![Page 12: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/12.jpg)
C++ Programming Stream
1. Procedural C++
2. Procedural C++ 2
3. Object Oriented C++ 1
4. Generic C++ and the STL
5. Object Oriented C++ 2
int main(int argc, char *argv[]){ FooCalculator foo; int result = foo.calculate(); return 0;}
int main(int argc, char *argv[]){ int result = calculate_foo(); return 0;}
12
![Page 13: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/13.jpg)
C++ Bookshelf 13
![Page 14: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/14.jpg)
C++ Online Resources
Programmers Q&A
14
![Page 15: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/15.jpg)
“If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.” – Gerald Weinberg
Image © 2012 BirdsFlight: http://birdsflight.com/terms/15
![Page 16: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/16.jpg)
“A good worker is known by their tools” - English Proverb
16
![Page 17: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/17.jpg)
1. Storing code and changes (Git)
2. Automating builds (Compiler/CMake)
3. Testing (CMake/Catch)
4. Documenting code and programs (Doxygen)
5. Software Design
17Software Development Stream
![Page 18: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/18.jpg)
Software Development Bookshelf 18
![Page 19: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/19.jpg)
Software Development Online Resources
Developer Q&A
19
![Page 20: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/20.jpg)
Getting Started 20
![Page 21: Software Development with C++](https://reader031.vdocuments.us/reader031/viewer/2022012506/6181d3649d20530a525f2c94/html5/thumbnails/21.jpg)
$ mpags-cipher --help > questions? > comments?
21