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)

 (1998)

Course organization/format

  • 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

Made with Slides.com