SDF CS Core

SDF-A: Fundamental Programming Concepts and Practices

  1. Basic concepts such as variables, primitive data types, expression evaluation, assignment, etc.
  2. Basic constructs such as conditional and iterative structures and flow of control
  3. Key modularity constructs such as functions (and methods and classes, if supported in the language) and related concepts like parameter passing, scope, abstraction, data encapsulation, etc.
  4. Input and output using files, console, and APIs
  5. Structured data types available in the chosen programming language like sequences       (e.g., arrays, lists), associative containers (e.g., dictionaries, maps), others (e.g., sets, tuples) and when and how to use them.
  6. Libraries and frameworks provided by the language (when/where applicable)
  7. Recursion
  8. Dealing with runtime errors in programs (exception handling)
  9. Basic concept of programming errors, testing, and debugging
  10. Reading and understanding code

SDF-B: Fundamental Data Structures

  1. Standard abstract data types such as lists, stacks, queues, sets, and maps/dictionaries
  2. When and how to use standard data structures
  3. Strings and string processing
  4. Performance implications of choice of data structure(s)

SDF-C: Algorithms

  1. Concept of algorithm and notion of algorithm efficiency
  2. Common algorithms like: Sorting, Searching, Tree traversal, Graph traversal, etc.
  3. Assessing the time/space efficiency of algorithms through measurement

SDF-D: Software Development Practices

  1. Basic testing (perhaps using suitable frameworks) including test case design
  2. Use of a general purpose IDE, including its debugger (which can be also used to strengthen some programming concepts)
  3. Programming style that improves readability