LOL

Crafting a Comprehensive Study Guide: Building on the Foundation

Disclaimer: While this enhanced study guide aims to provide a solid foundation, it's crucial to complement it with thorough review of lectures, labs, notes, and Canvas materials.

Midterm 1 Content

VIM

  • What is VIM? A powerful text editor with multiple modes:

    • Normal mode: Default mode for navigation and commands.

    • Insert mode: For inputting text.

    • Command-line mode: For executing commands.

  • Opening a file: vim filename.txt

  • Entering/exiting insert mode: i to enter, Esc to exit.

  • Saving and exiting: :wq

Unix/Linux

  • Basic commands:

    • ls: List files and directories.

    • cd: Change directory.

    • mkdir: Create a directory.

    • rm: Remove a file or directory.

    • cp: Copy files or directories.

    • ssh: Secure Shell for remote login.

    • scp: Secure Copy for transferring files over SSH.

  • File permissions:

    • chmod: Change file permissions.

    • Permissions are represented in octal format (e.g., 755 for read, write, and execute for owner, read and execute for group, and read and execute for others).

  • Input/Output

    • C++ I/O:

      • cin and cout for standard input/output.

      • cin.clear() to clear error flags.

      • cin.ignore() to ignore characters in the input stream.

      • Wrapping cin in an if statement to check for errors.

    • Printf: Formatted output.

      • %d: Integer.

      • %f: Floating-point number.

      • %c: Character.

      • %s: String.

      • Precision, field width, and justification can be controlled.

    • I/O Manipulators:

      • setw(): Set field width.

      • setfill(): Set fill character.

      • left, right: Justify output.

      • setprecision(): Set precision for floating-point numbers.

      • fixed, scientific, showpoint: Format floating-point numbers.

      • hex, dec: Set number base.

Vectors

  • Dynamic arrays that can grow or shrink as needed.

  • Declaration: vector<int> myVector;

  • Accessing elements: myVector[index].

  • Operations: push_back(), size(), clear(), resize().

File Streams

  • Reading and writing files:

    • ifstream: Input file stream.

    • ofstream: Output file stream.

    • open(), close(), fail(), is_open() for file operations.

    • Using insertion/extraction operators (<< and >>) and manipulators.

  • Error checking:

    • Check is_open() to ensure successful file opening.

    • Handle errors using fail() and other error flags.

  • Getline: Read a line of text from a file stream.

Argv/Argc

  • Command-line arguments.

  • argc: Argument count.

  • argv: Argument values (array of strings).

  • argv[0] is the program name.

  • Subsequent elements in argv contain command-line arguments.

  • String streams can be used to convert command-line arguments to numbers.

String Streams

  • Similar to file streams, but operate on strings.

  • istringstream: Input string stream.

  • ostringstream: Output string stream.

  • Using insertion/extraction operators and manipulators.

  • str() to extract the string from a string stream.

Midterm 2 Content

Searching Algorithms

  • Linear Search: Sequential search.

  • Binary Search: Efficient search for sorted arrays.

Sorting Algorithms

  • Bubble Sort: Simple but inefficient.

  • Selection Sort: Finds the minimum element and swaps it with the current position.

  • Insertion Sort: Builds the sorted array one element at a time.

Number Systems

  • Decimal, Binary, Hexadecimal: Understand their bases and conversions.

Binary Operations

  • Bitwise operators: &, |, ^, <<, >>, ~.

  • Set bit, clear bit, test bit: Manipulating individual bits.

  • ASCII table: Character encoding.

New Content Since Midterm 2

Pass-by-Value and Pass-by-Reference

  • Pass-by-value: A copy of the argument is passed to the function.

  • Pass-by-reference: A reference to the original argument is passed, allowing modifications within the function to affect the original variable.

Pointers

  • Declaration: int *ptr;

  • Assignment: ptr = &variable;

  • Dereferencing: *ptr

  • Dynamic memory allocation: new and delete

  • Pointer arithmetic: Adding or subtracting integers to pointers.

  • Memory leaks, dangling pointers, and segmentation faults: Understand and avoid these issues.

Recursion

  • Recursive function: A function that calls itself directly or indirectly.

  • Base case: The termination condition.

  • Recursive case: The function call that moves closer to the base case.

Additional Tips

  • Practice coding: Work on practice problems to solidify your understanding.

  • Review concepts regularly: Consistent review helps reinforce learning.

  • Break down complex problems: Divide problems into smaller, manageable steps.

  • Debug effectively: Use debugging tools and techniques to identify and fix errors.

  • Collaborate with classmates: Discuss concepts and problem-solve together.

  • Stay organized: Keep your code clean and well-commented.

  • Manage time wisely: Allocate sufficient time for studying and practice.

By following these guidelines and dedicating consistent effort, you can effectively prepare for your final exam.