RIT Department of Computer Science
CSCI-541: Programming Skills: Efficient Design in Modern C++

MyCourses -- Resources -- Syllabus -- Schedule -- Instructor -- Assignments -- Code

Programming Skills: Efficient Design in Modern C++


RIT Academic Calendar

Week Topics Notes
(see MyCourses)
01 C Language Review
  • compiling: preprocessing, compiling, assembling, linking
  • makefiles
  • debugging
  • memory diagrams
  • valgrind
HW1 assigned
02 C++ Basics
  • environment
  • namespaces
  • variable types: direct, reference, pointer
  • class basics: constructor, destructor, copy constructor
  • coding standards
HW1 due
03 Standard Template Library (C++98)
  • vector
  • iterators
  • list
  • stack
  • deque
  • map
Lab 1 assigned
04 Operator Overloading
  • operator overloading
  • conversion operators
  • functors
  • explicit construction
Lab 1 due
05 Inheritance
  • public/protected/private inheritance
  • construction/destruction order
  • slicing
  • virtual functions
  • function pointers & vtable
Inheritance (continued)
  • pure virtual functions
  • "interfaces"
  • abstract classes
  • multiple inheritance
  • virtual inheritance
  • downcasting
Project 1 assigned
06 Templates
  • function templates
  • class templates
  • partial template specialization
HW2 assigned

Class cancelled Thu 2/22
07 Exceptions
  • exception syntax
  • throwing exceptions
  • standard exceptions
  • creating custom exception classes
IOStreams
  • iostream hierarchy
  • error state
  • formatted/unformatted extraction
  • format state
  • formatted/unformatted insertion
  • file streams
  • string streams
HW2 due

Midterm Practical Exam
Sat 3/3
1-4p
ICL1-2
08 Project 1 Work Week Project 1 due
Spring Break
09 C++11 Variables and Types
  • list initialization
  • nullptr
  • constant expressions
  • type aliases
  • auto type specifier
  • decltype type specifier
C++11 Move Semantics
  • lvalue vs rvalue
  • rvalue reference
  • std::move
  • return value optimization
Graduate Assignment Proposal due
10 C++11 Method Control
  • default
  • delete
  • override
  • final
  • delegating constructors
C++11 Functions
  • initializer lists
  • trailing return type syntax
  • noexcept
  • noreturn
  • lambda expressions
C++11 STL
  • array
  • forward_list
  • emplace
  • unordered_set
  • unordered_map
Lab 2 assigned
11 C++11 Smart Pointers
  • shared_ptr
  • weak_ptr
  • unique_ptr
12 C++11 Concurrency & Threads
  • POSIX thread environment
  • high level interface - async
    • async
    • future
    • shared_future
  • exceptions
  • blocking: wait, wait_until, wait_for
  • future result: deferred, timeout, ready
  • low level interface - thread
    • thread
    • foreground vs background (detached)
    • reference_wrapper
    • promise
    • mutex
    • lock_guard
    • deadlock avoidance: std::lock
    • deferred locking
    • unique_lock
    • condition_variable: wait, notify_one, notify_all
Lab 2 due
Project 2 assigned
13 C++11 STL Algorithms
  • non-modifying
    • minmax_element
    • find_if, find_if_not
    • is_permutation
  • function objects
    • arithmetic: plus, minus, multiplies, divides, modulus, negate
    • comparison: equal_to, not_equal_to, greater, less, greater_equal, less_equal
    • logical: logical_and, logical_or, logical_not
    • bitwise: bit_and, bit_or, bit_xor, bit_not (c++14)
  • function adaptors
    • bind
    • placeholder
  • modifying
    • copy_if, copy_n
    • transform
  • removing
    • erase-remove idiom
    • remove, remove_if
  • mutating
    • shuffle
  • sorting
    • stable_sort
  • numeric
    • accumulate
  • searching
    • binary_search
HW3 assigned
Lab 3 assigned
14 C++11 Variadic Templates
  • varargs
  • tuple
    • make_tuple
    • get
    • tuple reference elements
    • tie
    • tuple_size
    • tuple_element
    • tuple_cat
HW 3 due
Project 2 due
15   Lab 3 due
Finals Final Practical Exam TBD


updated: 1/15/2018