multi-paradigm

CSE 332 Overview and Structure
• CSE 332 emphasizes studio-based active learning
– Introductory lecture material followed by hands-on exercises
– More time in guided exploration than in passive absorption
• Key insight: different people learn in different ways
– Our goal is to make many resources available to you
– Your goal should be to engage those resources actively
• Professor’s (and teaching assistant’s) role
– Emphasis on guidance, coaching, discussion
• Student’s role
– Emphasis on exploration, peer interaction, teamwork
CSE 332: C++ overview
C++ Language and Paradigms
• The course focuses a lot on C++
– But also on general programming issues it raises
• C++ is a multi-paradigm language
–
–
–
–
Procedural programming with functions
Object-oriented programming with classes
Generic programming with templates, typedefs
The course structure lets us explore these in parallel
• Comparison to C
– Adds higher-level features, keeps lower-level ones
• Comparison to Java
– Many similar ideas, but often with different nuances
– Gives a less abstract view of the underlying platform
CSE 332: C++ overview
How C++ Has Evolved
• C is a popular language for developing low-level
systems software and applications
– E.g., operating systems like Linux
• However, it’s difficult to support type safe software
reuse without inheritance, etc.
– E.g., for middleware frameworks like ACE
• Stroustrup designed C++ with classes/objects
– But kept procedural parts very similar to C
• Later, templates (generics) were added
– With which Stepanov, et al. developed the STL
• The C++11 and C++14 standards unified all this
– E.g., adding lambdas, type inference, move semantics
CSE 332: C++ overview
Approach We’ll Take in CSE 332
• A key goal is to expand & refine your mental models
– For C++ mainly, but also for programming in general
– Notice and try out new ideas, share them, discuss them
– Challenge your understanding in as may ways as you can
• If you don’t remember every detail at first, that’s ok
– We’ll revisit concepts and techniques from different angles
– Try to refresh your memory early and often
– Apply what you learn, early and often, towards mastery
• We’ll work together to build understanding in stages
– First as a consumer of an approach (can you use it?)
– Then understanding it thoroughly (when can you use it?)
– Then as a contributor to the approach (can you expand it?)
CSE 332: C++ overview
Approach We’ll Take, Continued
• We’ll talk about how/why the tools you’ll use work
– E.g., how new/delete operators are used by smart pointers
– Give insight into special cases when new tools are needed
• Throughout the course, the point is to learn by doing
– Mini-lectures and readings are intended as preparation
– Studio exercises build understanding and expertise
– Lab assignments ask you to apply what you’ve learned
• 10 years from now, the languages you use may differ
– I’ve worked in C++, C, VHDL, Python, and Java
– But your mastery of procedural/OO/generic ideas will help
– And, you’ll have a pretty solid grounding in C++ until then
CSE 332: C++ overview
Topic Areas Covered This Semester
• C++ program basics
– Variables, types, control statements, development environments
• C++ functions
– Parameters, call stack, exceptions
• C++ memory
– Addressing, layout, management
• C++ classes
– Encapsulation, abstraction, inheritance polymorphism
• C++ generics
– Overloading, templates, interface polymorphism , associated types
• C++ STL
– Iterators, algorithms, containers, functors
CSE 332: C++ overview
Azure Remote App
https://www.microsoft.com/en-us/cloudplatform/azure-remoteapp-client-apps
Login with your wustl email/key and password
CSE 332: C++ overview