1 / 9

Advanced Multi-Paradigm Software Development Course

Explore the main paradigms in C++, including procedural, functional, object-oriented, and generic programming. Study software engineering, architectural patterns, design patterns, and C++ idioms. Gain hands-on experience through studio exercises and team projects.

vbowman
Download Presentation

Advanced Multi-Paradigm Software Development Course

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. E81 CSE 532S: Advanced Multi-Paradigm Software Development Course Introduction Chris Gill Department of Computer Science and Engineering Washington University in St. Louis cdgill@cse.wustl.edu

  2. We’ll Use all 4 Main Paradigms in C++ • Procedural • Iterators, algorithms • Functional • Binders, functions • Object oriented • Classes, inheritance • Generic • Templates, concepts and models, type inference, interface polymorphism  C++ 

  3. We’ll Also Study Software Engineering • Architectural Patterns • For concurrent (and later networked) software • Design Patterns • For well structured code • C++ Idioms • For well behaved software  C++ 

  4. Exploration Through Studio Exercises • Hands-on experience within each individual topic covered • Reinforce assigned readings and classroom discussions • Completion of required exercises (including posting your answers) is a baseline for the participation grade  C++ 

  5. We’ll Develop 4 Team Projects • One basic, one intermediate, two more advanced • Explore interactions between paradigms, patterns, idioms • Hands on experience building concurrent system software • Reinforce assigned readings, examples, and exercises  C++ 

  6. Course Resources • Required Text • [Williams] Williams: C++ Concurrency in Action • Readings will be assigned throughout the semester • Exams will cover all material in the course • Assigned readings as well as posted slides, studio exercises, and labs • Optional Texts (for reference and/or additional reading) • [Stroustrup] Stroustrup: The C++ Programming Language • [LLM] Lippman, Lajoie, and Moo: C++ Primer • Course Web Page • www.cse.wustl.edu/~cdgill/courses/cse532/ • classes.cec.wustl.edu/~cse532/ • Reading assignments, studios, labs, course syllabus and info • Course account: cse532@seas.wustl.edu (submit labs there)

  7. Course Prerequisites • CSE 332S, “Object-Oriented Software Development Laboratory” (or graduate standing and proficiency with C++) • C++ language features and idioms for memory management, aliasing (pointers and references), classes and inheritance polymorphism, templates and interface polymorphism, function and operator overloading, etc. • Grad students assumed able to self-study rapidly on this if needed • CSE 422S (Operating Systems) • Conceptual foundations: threads, deadlocks, race conditions, etc. • Practical hands-on experience with threads, debuggers, etc.

  8. Course Objective: Mastery • Mastery is a path, not a destination • George Leonard • “…if you only walk long enough.” • Lewis Carroll

  9. First Reading Assignment • Please read before the next lecture • Required: [Williams] Chapter 1 • Optional: [Stroustrup] Chapter 42.1-42.2 • Questions to consider: • What is concurrency? • How do C++11 threads abstract independent computations? • Why and when should you use multi-threading?

More Related