Intermediate Programming
C and C++ for intermediate to advanced programming. Covers low-level programming techniques, object-oriented class design, and the use of class libraries. Topics include pointers, dynamic memory allocation, polymorphism, overloading, inheritance, templates, collections, exceptions, and others.
Johns Hopkins - EN.601.220 (03) - Fall 2021
General
Linux Basics
- What is Unix?
- How do I access my ugrad account?
- What are basic Unix commands?
- How do you copy to local, zip files, and perform I/O redirect?
Tools
- What are common Emacs shortcuts?
- How do you use gdb to debug programs?
- What is valgrind and how do you use it?
Git
The C Language
Welcome to C
- What is the process of compiling and executing?
Basics of C
- How do you print?
- What are the data type placeholders?
- What are variables and constants?
- What are common data types?
- How do you read formatted input?
Control Flow
- What are logical operators?
- How do you use if and else statements and switch gates?
- What are ways to loop?
Arrays and C Strings
File I/O and Assertions
- What are standard streams?
- How do you read files?
- What are assertions?
Functions
- How do you write functions?
- What are the math functions?
- How do you add command-line arguments?
Recursion
Separate Compilation
- What are header files?
- How do compile and link separately?
- What are make and Makefile?
Multi-Dimensional Arrays
- How do you declaration a multidimensional array?
- How do you use one as a function parameter?
Pointers
Memory
- What are execution stacks?
- What is dynamic allocation and how do you use it?
- How do you dynamically allocate two dimensional arrays?
Lifetime and Scope
- What is lifetime and scope?
- What are the different types of variables?
Structures
- How do you implement a structure?
- How do you use structs with functions?
Binary IO
- How do you read and write to a binary file?
Bitwise
- What are the bitwise operators?
Pseudo Random Numbers
- How do pseudo-random integers work?
- How do you generate a random integer and floating point within a certain range?
Number Representation and Type Conversions
- How does two's complement work?
- What is type conversion?
Linked List
- What is a linked list?
- How do you implement one and its operations?
The C++ Language
Welcome to C++
- What is different about C++ and what are its features and concepts?
- How to compile?
- How to use C++ libraries?
- What are namespaces?
Strings
- What are ways to initialize a string?
- How do you use strings?
STL Containers
- What are the commonly used STL containers?
- What are templates?
- What are vectors, maps, pairs, and tuples?
- What are the types of iterators?
STL Algorithms
- How to use sort, find, count, or is_permutation?
IO Streams
- How do you deal with I/O?
- How do you deal with file I/O?
- What is a stringstream?
Intro to OO
- What are classes?
- What is the hierarchy of the stream class?
C++ References
- What are references and how do you declare them?
- What does passing by reference mean?
C++ Dynamic Allocation
C++ Classes
- What is a class?
- When do I use protection?
- How do I make an array of objects?
Constructors and Destructors
- What are constructors and destructors?
- What is the difference between default constructors and non-default constructors?
Overloading
- What is function overloading?
- What is operator overloading and how do I define one as an instance method?
- What is a copy constructor?
- What is the friend keyword?
Initialization and Assignment
- What is the difference between == and =?
Rule of Three
- What is the rule of three?
Template Functions
- When do I use a template function?
Template Class
- How to separate a template class into
.hand.incfiles.
Inheritance
- What is relationship created by inheritance?
- How do you declare a derived class?
- What happens to the constructor and destructor in a derived class?
Polymorphism
- Can functions accept many derived types?
- What is dynamic binding?
Dynamic dispatch
- What is the memory layout of a simple class?
- When does objecting slicing occur?
- How does virtual work?
- How to use the override keyword?
Function Hiding and Abstract Classes
- When is a function hidden?
- What are pure virtual functions?
- What are abstract classes?
OO Design and UML
- How do I design for OO problems?
- How do I make a UML diagram?
Enumerated Types
What is the difference between scoped and unscoped enumerators?
Exceptions
- What are exceptions?
- What does the exception class consist of?
- What are the keywords to use?
- What is unwinding?
- How do you make custom exceptions?
Writing Iterators
- How do I define a custom iterator?