Class Notes

Notes will be placed here.

A note on my notes

These are for my benefit. They tell me what to talk about in class. They are by no means a substitute for:

  1. Attending class.
  2. Reading the book
  3. Taking your own notes.
You may find them helpful however for organizing your thoughts.

Class Recordings


The syllabus for this course contains the following topics

  1. Problem Solving and Algorithm Development
    1. Strategies for Problem Solving
      1. Problem decomposition (divide and Conquer)
      2. Solution by analogy
      3. Solving a special case of a general problem
      4. Generalizing a specific solution
    2. Problem Analysis
      1. Understanding the problem
      2. Identifying the input data
      3. Describing the output representation
    3. Algorithm Representation
      1. Pseudocode
      2. Graphical Techniques
    4. Algorithm Verification
      1. Desk checking techniques
      2. Test data
  2. Program Development - Methods and Style
    1. Design
      1. Procedural abstraction
      2. Data abstraction
      3. Top-down design and step wise refinement
      4. Information hiding
      5. Top-down vs bottom-up design
    2. Coding
      1. Use of structured control statements.
      2. Programming style
        1. Proper indentation
        2. Choice of appropriate names
    3. Program Correctness
      1. Generation of test data
      2. Debugging techniques
        1. Output statements
        2. Use of stubs and drivers.
      3. Top-down vs bottom-up testing
    4. Documentation
      1. Self documenting code
      2. Internal program comments
  3. Data Types
    1. Scalar Data Types
      1. Primitive data types
        1. Integer
        2. Float and double
        3. Boolean
        4. Character
      2. Arithmetic, Boolean and relational operations
    2. Structures Data Types
      1. Strings
      2. Streams
  4. Program Structures
    1. Control Structures
      1. Sequential structure
      2. Iterative structures
      3. Conditional execution structures
    2. Subprograms
      1. Functions
      2. Parameters
      3. Scope of identifiers