SE 2040: Software Development III Weekly
Outcomes
See the
main page for weekly plans and notes.
- Week 1:
- The need to be able to learn new languages.
- Using familiar elements of programming to learn a new language:
expressions, if, loops, functions in Ruby.
- How read-eval-print loops help explore a language and write code.
- Note irb is used to demonstrate most of these and other
Ruby programming concepts.
- Using Ruby types and related operations, including classes,
to construct readable, maintainable code.
- What it means for classes to be open and how it is useful for
extending standard library classes (like Array) with project-specific
methods.
- Using Ruby blocks to process collections, exposure to processing
collections using .map and .each (that is, an element
of functional programming).
- Writing full programs in Ruby.
- Week 2:
- Understanding standard input, standard output,
and standard error, including how standard error differs in
behavior from standard output.
- Understanding redirection including < > and |.
- Writing robust Ruby code.
- Motivating C++: high performance with OO.
- Identifying strong similarities between Java and C++.
- Using <iostream> for standard input and output.
- A simple view of compiling C++ programs.
- Using the fundamental types to construct C++ programs.
- Understanding scope and lifetime in the context of C++ programs.
- Understanding the distinction between runtime and compile-time.
- Week 3:
- Writing end-of-file controlled loops
- DeMorgan's law and using it to write while loops
- Short-circuiting && and ||
- Declaring and initializing (defining) arrays in C++
- Understanding how pointers can be used to access data in the heap and
in arrays.
- Reference types are purposefully discussed at a later date.
- Practical examples of uninitialized data in C++ programs
- Understanding that code is at an address and that code and
arbitrary data can be
accidentally modified at runtime
- Writing basic C++ programs.
- Week 4:
- Writing object-oriented programs in C++.
- From textbook (not necessarily discussed): enumerations and
enum classes
- Picturing program execution through memory maps.
- Using std::string to process text.
- Week 5:
- Declarations vs. definitions in C++ and how to separate
class declarations from method definitions.
- Writing C++ programs as a collection of header files and
implementations, also known as compilation units.
- #include safety: minimal includes in headers, listing "my"
header before other project headers to identify errors earlier.
- Using namespaces to control scope.
- Using assert to check function preconditions
- Throwing, catching exceptions
- Week 6:
- Understanding the significance of the statement by Stroustrup: "the
central language feature of C++ is the class"
-
-
-
-
-
- Week 7:
- Week 8:
- Week 9:
- Week 10: