What This Document Is
These are lecture notes from the second session of COSC 051, Computer Science I at Georgetown University. The notes introduce foundational concepts in computation, focusing on the relationship between algorithms, programs, and how computers process information. It explores early methods of visualizing algorithmic logic and transitions into a discussion of pseudocode as a bridge to actual programming.
Why This Document Matters
These notes are essential for students beginning their computer science journey. They establish the core thinking patterns required to translate real-world problems into solutions a computer can execute. Understanding algorithms *before* diving into code is crucial for effective problem-solving and building robust programs. This document serves as a foundational reference point throughout the course, particularly when tackling more complex programming assignments.
Common Limitations or Challenges
This document provides a conceptual overview and does not offer hands-on coding practice. It’s a starting point for understanding *what* needs to be done, not *how* to do it in a specific programming language. It also doesn’t cover debugging techniques or advanced algorithmic concepts.
What This Document Provides
The full document includes:
* A definition of an algorithm and its importance in programming.
* An explanation of the relationship between algorithms and programs.
* Discussion of the limitations of computers and the importance of human-readable code.
* An introduction to flowcharts as a visual representation of algorithms (though the course will not utilize them).
* An explanation of sub-algorithms, also known as functions or methods.
* A comparison of algorithms and pseudocode, with an example demonstrating a variable swap.
* A brief outline of the process of writing and testing C++ code.
* A sample pseudocode outline for determining if a number is odd or even.
This preview does *not* include detailed C++ code examples, practice problems, or in-depth explanations of specific programming techniques. It is designed to give you a high-level understanding of the topics covered.