CSE 332 Overview and Structure CSE 332 emphasizes

  • Slides: 6
Download presentation
CSE 332 Overview and Structure • CSE 332 emphasizes studio-based active learning – Introductory

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

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

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 &

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

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, Pascal, Java, and x 86 assembly – 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,

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