The University of Iowa
The College of Liberal Arts and Sciences
Department of Computer Science
Programming Languages and Tools:
CS:3210:0001
Lecture/Lab #1
Programming with C++
Intro; course organization; survey; language overview, tooling & basics
My background
- MS Degree in Computer Science
- Have been working with C++ for more than two decades
- A [former] prominent open source contributor; at some point was among the top five contributors to Boost.org (est. 7,379 man/years of effort, $500M+ project valuation)
- Co-author, with David Abrahams, of C++ Template Metaprogramming published by Addison-Wesley back in 2004
(1998)

Course organization/format
- Syllabus has been uploaded to ICON
- Proposed class format:
- Class 6:30PM – 7:05PM
- 5 min break
- Class 7:10PM – 7:45PM
- Class interactions:
- Please raise your hand if you want to ask a question or ask for a clarification
- Please introduce yourself when speaking
- Do ask for clarification if you don't understand something
Course aspirations/promises
- Detail: Every language construct presented in this course will be explained in sufficient detail to achieve real understanding (no "magic")
- Utility: Only useful concepts, constructs, and techniques will be presented (the language is way too complex to cover everything that is technically possible)
- Completeness: Presented concepts, constructs, and techniques can be used in combination to construct useful programs (although there are still many useful concepts, constructs, and techniques beyond what is taught here)
- Realism: Presented concepts, constructs, and techniques can be used to build “industrial strength” programs (i.e. they have been used by others to do just that)
- Simplicity: The examples used to illustrate the concepts, constructs, and techniques will be made as simple as possible (explicit markup will be provided for when the simplicity comes at the expense of realism)
Quick Survey
Language Overview
- Created in 1979 by Bjarne Stroustrup
- Started as an extension of C (was originally called "C with classes"), but is not a strict superset of C anymore
- A general purpose, statically typed, complied programming language, with an emphasis on performance, efficiency and flexibility
- A multi-paradigm language, with first-class support for imperative, object-oriented and generic programming
- Formally defined by a ISO standard (the latest version ratified and published in December 2017)
-
Used to build search engines, browsers, games, trading systems, operating systems, graphics software, compilers, self-driving cars, desktop & mobile apps, Mars rovers, etc.
(that's 40 years ago!)
- Available on virtually every type of computer hardware/architecture
Compiled Language
What does that mean?
source-1.cpp
source-2.cpp
Object file 1
Object file 2
Executable
Compilation
Linking
Hello World
Programming with C++, Spring 2019, Lecture #1
By Aleksey Gurtovoy
Programming with C++, Spring 2019, Lecture #1
Intro; course organization; survey; language overview, tooling & basics
- 473